Escaneo de Vulnerabilidades con Nmap

NmapBeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás los fundamentos del escaneo de redes utilizando Nmap (Network Mapper), una potente herramienta de código abierto para la exploración de redes y auditoría de seguridad. Comenzarás con escaneos de puertos básicos, avanzarás hacia la detección de servicios y versiones, y luego explorarás el Motor de Scripts de Nmap (NSE) para realizar comprobaciones de vulnerabilidades. Finalmente, aprenderás a analizar y guardar los resultados de tus escaneos en diversos formatos para la elaboración de informes. Esta práctica proporciona una introducción práctica y guiada paso a paso a las funciones principales de Nmap para una evaluación eficaz de la seguridad de la red.

Esta es una Práctica Guiada, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de valoraciones positivas del 100% por parte de los alumnos.

Realizar un Escaneo de Red Básico

En este primer paso, te familiarizarás con Nmap realizando un escaneo básico. Un escaneo básico se utiliza para descubrir qué puertos están abiertos en una máquina objetivo. Un puerto abierto indica que un servicio (como un servidor web o SSH) se está ejecutando y está a la escucha de conexiones.

El entorno de laboratorio ha sido preconfigurado con varios servicios ejecutándose en localhost (tu propia máquina virtual) para que puedas practicar. La herramienta nmap ya está instalada.

  1. Primero, verifiquemos que Nmap esté instalado y comprobemos su versión. Abre la terminal y ejecuta el siguiente comando:

    nmap --version

    Deberías ver una salida que confirme la versión de Nmap, similar a esta:

    Nmap version 7.80 ( https://nmap.org )
    Platform: x86_64-pc-linux-gnu
    Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 nmap-libpcap-1.9.1
    Compiled without:
    Available nsock engines: epoll poll select
  2. Ahora, realiza tu primer escaneo contra localhost. Este comando le indica a Nmap que busque los puertos abiertos más comunes en tu máquina local.

    nmap localhost
  3. Examina el resultado. Nmap enumerará los puertos que encontró abiertos, junto con su estado y el servicio común asociado a dicho puerto. La salida se verá parecida a esta, mostrando los servicios preparados para esta práctica:

    Starting Nmap 7.80 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000092s latency).
    Not shown: 995 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    2121/tcp open  ccproxy-ftp
    2222/tcp open  EtherNetIP-1
    3001/tcp open  nessus
    8080/tcp open  http-proxy
    
    Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Este escaneo inicial te proporciona un mapa de los servicios en ejecución, lo cual es el primer paso en cualquier evaluación de seguridad de red.

Detectar Versiones de Servicios

Saber qué puertos están abiertos es útil, pero conocer el software exacto y la versión que se ejecuta en esos puertos es mucho más valioso para un analista de seguridad. El software desactualizado es una de las principales fuentes de vulnerabilidades. En este paso, utilizarás Nmap para realizar la detección de servicios y versiones.

Utilizaremos el parámetro -sV, que instruye a Nmap para sondear los puertos abiertos y determinar información detallada sobre el servicio y su versión.

  1. Ejecuta un escaneo de detección de versiones contra localhost. Para que el escaneo sea más eficiente, nos enfocaremos en los puertos específicos que descubrimos en el Paso 1 (22, 2121, 2222, 3001, 8080) en lugar de escanear todos los puertos.

    nmap -sV -p 22,8080 localhost

    Consejo Profesional: Apuntar a puertos específicos reduce drásticamente el tiempo de escaneo. Un escaneo de rango completo de puertos con -sV puede tardar varios minutos, mientras que este enfoque dirigido suele completarse en segundos.

  2. Compara el resultado con el escaneo básico del Paso 1. Ahora verás una columna adicional, VERSION, que proporciona detalles sobre el software que se ejecuta en cada puerto.

    La salida será más detallada, similar a esta:

    Starting Nmap 7.80 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00011s latency).
    Not shown: 995 closed ports
    PORT     STATE SERVICE VERSION
    22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
    8080/tcp open  http    nginx 1.18.0 (Ubuntu)
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds

Esta información es crítica. Por ejemplo, si el escaneo revelara una versión antigua de nginx con una vulnerabilidad crítica conocida, sabrías exactamente dónde centrar tus esfuerzos de remediación.

Usar el Motor de Scripts de Nmap (NSE)

El Motor de Scripts de Nmap (NSE) es una de las características más potentes de Nmap. Permite automatizar una amplia variedad de tareas de red utilizando una biblioteca de scripts. Estos scripts pueden usarse para descubrimiento avanzado, detección de vulnerabilidades e incluso explotación.

En este paso, utilizarás el parámetro -sC, que ejecuta un conjunto de scripts predeterminados que se consideran seguros y útiles para el descubrimiento inicial.

  1. Ejecuta un escaneo de Nmap con los scripts por defecto activados contra localhost. El parámetro -sC es una forma conveniente de obtener más información sin tener que especificar scripts individuales.

    nmap -sC localhost
  2. Revisa el resultado. Verás información adicional indentada debajo de cada puerto. Esta es la salida de los scripts de NSE. Por ejemplo, el script http-title podría obtener el título de la página web en el puerto 8080, y los scripts de SSL podrían informar sobre los detalles del certificado.

    La salida será aún más extensa:

    Starting Nmap 7.80 ( https://nmap.org ) at ...
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000099s latency).
    Other addresses for localhost (not scanned): ::1
    Not shown: 995 closed ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    2121/tcp open  ccproxy-ftp
    2222/tcp open  EtherNetIP-1
    3001/tcp open  nessus
    | ssl-cert: Subject: commonName=localhost
    | Subject Alternative Name: DNS:localhost
    | Not valid before: 2024-07-18T03:37:05
    |_Not valid after:  2034-07-16T03:37:05
    8080/tcp open  http-proxy
    |_http-open-proxy: Proxy might be redirecting requests
    |_http-title: Site doesn't have a title (text/html).
    
    Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds

Como puedes observar, los scripts por defecto descubrieron que se permite el inicio de sesión anónimo por FTP en el puerto 2121 y recuperaron el título de la página web en el puerto 8080. Esta es inteligencia valiosa recopilada de forma automática.

Ejecutar un Escaneo de Vulnerabilidades

Ahora es el momento de buscar vulnerabilidades. El NSE incluye una categoría de scripts diseñados específicamente para comprobar fallos de seguridad conocidos. Puedes ejecutar todos los scripts de la categoría vuln para realizar un escaneo de vulnerabilidades amplio.

Es una buena práctica guardar siempre la salida de escaneos largos o importantes en un archivo. Utilizaremos el parámetro -oN para guardar el resultado en el formato normal de Nmap.

  1. Primero, combinemos lo que has aprendido. Ejecuta un escaneo que incluya detección de servicios (-sV) y ejecute todos los scripts de vulnerabilidad (--script vuln). Guarda el resultado en un archivo llamado vuln_scan.txt.

    nmap -sV --script vuln -oN vuln_scan.txt localhost

    Este escaneo puede tardar unos minutos, ya que está ejecutando muchos scripts contra cada puerto abierto.

  2. Una vez que el escaneo se haya completado, se creará un archivo llamado vuln_scan.txt en tu directorio actual (/home/labex/project). Puedes ver su contenido usando el comando cat:

    cat vuln_scan.txt
  3. El archivo de salida es extenso, por lo que es más eficiente buscar palabras clave. Usa grep para buscar líneas que indiquen una vulnerabilidad. El término "VULNERABLE" es un indicador claro.

    grep "VULNERABLE" vuln_scan.txt

    Deberías ver una salida que muestre cualquier vulnerabilidad encontrada. En este entorno de laboratorio, es probable que veas una vulnerabilidad relacionada con el filtro de rangos de bytes (byterange) de Apache:

    |   VULNERABLE:
    |     State: VULNERABLE

    Para ver los detalles completos de la vulnerabilidad, puedes buscar el CVE específico o revisar la salida completa del escaneo. Por ejemplo, podrías encontrar una vulnerabilidad de Denegación de Servicio (DoS) en Apache (CVE-2011-3192) en el puerto 8080. Ten en cuenta que también podrías ver algunos errores de script (como clamav-exec: ERROR), lo cual es normal y puede ignorarse; esto ocurre cuando ciertos scripts de vulnerabilidad no pueden ejecutarse correctamente en el entorno del laboratorio.

Este paso demuestra cómo sondear activamente en busca de debilidades, pasando de un simple descubrimiento a una auditoría de seguridad dirigida.

Guardar y Formatear los Hallazgos del Escaneo

Documentar e informar adecuadamente tus hallazgos es una habilidad crítica para cualquier profesional de la seguridad. Nmap admite varios formatos de salida adecuados para diferentes propósitos. En este paso final, aprenderás a guardar tus resultados en múltiples formatos y a crear un informe HTML fácil de leer.

  1. Primero, crea un directorio dedicado para mantener tus informes organizados.

    mkdir -p ~/project/reports
  2. Ahora, ejecuta el escaneo nuevamente, pero esta vez guarda la salida en dos formatos simultáneamente: texto normal (-oN) y XML (-oX). El XML es un formato estructurado ideal para ser procesado por otras herramientas.

    nmap -sV -p 8080 --script vuln -oN ~/project/reports/scan_report.txt -oX ~/project/reports/scan_report.xml localhost
  3. El formato XML no es muy legible para los humanos. Nmap proporciona una utilidad llamada xsltproc para convertir el archivo XML en un informe HTML limpio. Ejecuta el siguiente comando para generar scan_report.html.

    xsltproc ~/project/reports/scan_report.xml -o ~/project/reports/scan_report.html
  4. Verifiquemos que todos tus archivos de informe se hayan creado en el directorio ~/project/reports. Usa el comando ls -l para listar los archivos y sus detalles.

    ls -l ~/project/reports

    Deberías ver tus tres archivos de informe:

    total 40
    -rw-rw-r-- 1 labex labex 14276 Aug 28 15:12 scan_report.html
    -rw-rw-r-- 1 labex labex  5686 Aug 28 15:11 scan_report.txt
    -rw-rw-r-- 1 labex labex 14924 Aug 28 15:11 scan_report.xml

Ahora tienes un archivo de texto plano para una revisión rápida, un archivo XML para procesamiento automatizado y un archivo HTML para compartir y presentar fácilmente.

Resumen

En esta práctica de laboratorio, has adquirido experiencia práctica con Nmap, una herramienta fundamental en ciberseguridad. Comenzaste realizando escaneos de puertos básicos para identificar servicios abiertos en un host de red. Luego progresaste hacia técnicas más avanzadas, incluyendo la detección de versiones de servicios (-sV) para identificar software específico y su versión. También exploraste el potencial del Motor de Scripts de Nmap (NSE) ejecutando scripts predeterminados (-sC) y un escaneo completo de vulnerabilidades (--script vuln). Finalmente, aprendiste la práctica profesional de guardar los resultados del escaneo en múltiples formatos (-oN, -oX) y convertirlos en un informe HTML legible para su análisis y documentación. Estas habilidades constituyen una base sólida para utilizar Nmap en evaluaciones de seguridad de red en el mundo real.