Escanear vulnerabilidades con Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás los fundamentos del escaneo de redes utilizando Nmap (Network Mapper), una potente herramienta de código abierto para el descubrimiento de redes y la 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 Nmap Scripting Engine (NSE) para realizar comprobaciones de vulnerabilidades. Finalmente, aprenderás a analizar y guardar los resultados de tus escaneos en varios formatos para la elaboración de informes. Este laboratorio ofrece una introducción práctica y paso a paso a las funciones principales de Nmap para una evaluación eficaz de la seguridad de la red.

Realizar un escaneo de red básico

En este 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á escuchando 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.

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

nmap --version

Deberías ver una salida que confirma 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

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

Examina la salida. Nmap enumerará los puertos que encontró abiertos, junto con el estado y el servicio común asociado a ese puerto. La salida se verá similar a esto, mostrando los servicios preparados para este laboratorio:

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

En este paso, utilizarás Nmap para realizar la detección de servicios y versiones. 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 potente para un analista de seguridad. El software desactualizado es una fuente principal de vulnerabilidades.

Utilizaremos el flag -sV, que le indica a Nmap que sondee los puertos abiertos para determinar información detallada sobre el servicio y la versión.

Ejecuta un escaneo de detección de versiones contra localhost. Para hacer el escaneo más eficiente, apunta a los puertos específicos utilizados en este ejemplo 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.

Compara la salida 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 enfocar tus esfuerzos de remediación.

Usar el Nmap Scripting Engine (NSE)

En este paso, utilizarás el Nmap Scripting Engine (NSE), una de las características más potentes de Nmap. Te permite automatizar una amplia variedad de tareas de red utilizando una biblioteca de scripts. Estos scripts pueden usarse para un descubrimiento más avanzado, detección de vulnerabilidades e incluso explotación.

Utilizarás el flag -sC, que ejecuta un conjunto de scripts predeterminados que se consideran seguros y útiles para el descubrimiento. Debido a que el servicio FTP en este laboratorio se ejecuta en el puerto no estándar 2121, combina -sC con la detección de servicios (-sV) para que Nmap pueda identificar el servicio antes de elegir los scripts correspondientes.

Ejecuta un escaneo de Nmap con detección de servicios y los scripts predeterminados habilitados contra localhost. Apunta a los puertos 2121 y 8080 para que el escaneo sea rápido y, al mismo tiempo, muestre la salida de los scripts de los servicios FTP y web.

nmap -sV -sC -p 2121,8080 localhost

Revisa la salida. Verás información adicional con sangría debajo de cada puerto. Esta es la salida de los scripts NSE. Por ejemplo, el script ftp-anon puede informar que el inicio de sesión FTP anónimo está permitido en el puerto 2121, el script http-title podría obtener el título de la página web en el puerto 8080, y los scripts SSL podrían informar sobre los detalles del certificado.

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

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 VERSION
2121/tcp open  ftp     vsftpd 3.0.5
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|   STAT:
| FTP server status:
|      Logged in as ftp
|_End of status
8080/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Unix

Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds

Como puedes ver, los scripts predeterminados descubrieron que el inicio de sesión FTP anónimo está permitido en el puerto 2121 y recuperaron el título de la página web en el puerto 8080. Esta es información valiosa recopilada automáticamente.

Ejecutar un escaneo de vulnerabilidades

En este paso, utilizarás scripts NSE para 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 flag -oN para guardar la salida en el formato normal de Nmap.

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

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

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

Una vez que el escaneo se complete, 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

El archivo de salida es largo, 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 fuerte.

grep "VULNERABLE" vuln_scan.txt

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

|   VULNERABLE:
|     State: VULNERABLE

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

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

Guardar y formatear los hallazgos del escaneo

En este paso, aprenderás a guardar tus resultados en múltiples formatos y a crear un informe HTML fácil de usar. Documentar y reportar 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.

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

mkdir -p ~/project/reports

Ahora, ejecuta el escaneo nuevamente, pero esta vez guarda la salida en dos formatos simultáneamente: texto normal (-oN) y XML (-oX). XML es un formato estructurado que es ideal para procesar con otras herramientas.

nmap -sV -p 8080 --script vuln -oN ~/project/reports/scan_report.txt -oX ~/project/reports/scan_report.xml localhost

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

Verifica 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 automático y un archivo HTML para compartir y presentar fácilmente.

Resumen

En este 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 a técnicas más avanzadas, incluida la detección de versiones de servicios (-sV) para identificar software específico y su versión. También exploraste el poder del Nmap Scripting Engine (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 forman una base sólida para utilizar Nmap en evaluaciones de seguridad de redes del mundo real.