Escaneo de vulnerabilidades con NSE

NmapBeginner
Practicar Ahora

Introducción

Bienvenido al laboratorio de Escaneo de vulnerabilidades con NSE.

Nmap (Network Mapper) es una potente herramienta de código abierto utilizada para el descubrimiento de redes y la auditoría de seguridad. Una de sus características más flexibles y potentes es el Nmap Scripting Engine (NSE). El NSE permite a los usuarios escribir y compartir scripts sencillos para automatizar una amplia variedad de tareas de red.

Utilizar el NSE para el escaneo de vulnerabilidades es muy eficaz, pero también cambia el propósito del escaneo. Ya no te limitas a observar la exposición, sino que estás sondeando activamente en busca de debilidades conocidas. Esto hace que el control del alcance y una interpretación cuidadosa sean fundamentales.

En este laboratorio, aprenderás a transformar Nmap de un simple escáner de puertos a un escáner de vulnerabilidades activo. Utilizarás categorías de scripts específicas, como vuln, para sondear activamente los servicios objetivo. Este proceso ayuda a identificar vulnerabilidades y exposiciones comunes (CVE) conocidas y configuraciones de servidor peligrosas. Al finalizar este laboratorio, serás capaz de actualizar la base de datos de scripts, ejecutar escaneos basados en categorías, auditar servicios específicos como HTTP y SMB, y analizar los resultados del escaneo.

Actualizar la base de datos de scripts de NSE

En este paso, aprenderás a actualizar la base de datos del Nmap Scripting Engine (NSE).

Nmap viene preinstalado con cientos de scripts ubicados en el directorio /usr/share/nmap/scripts/. Estos scripts están categorizados según su propósito, como default, discovery, safe, intrusive, vuln y exploit.

Antes de ejecutar cualquier escaneo de vulnerabilidades, es una buena práctica asegurarse de que la base de datos interna de scripts de Nmap esté actualizada. Esta base de datos actúa como un índice, permitiendo a Nmap encontrar y categorizar scripts rápidamente. Cuando se añaden nuevos scripts al sistema o se modifican los existentes, la base de datos debe actualizarse para que Nmap sepa cómo utilizarlos.

Esto refleja un principio de seguridad más amplio: el contenido de detección y evaluación envejece rápidamente. Las herramientas son tan actuales como las reglas, firmas o plantillas en las que se basan.

Para actualizar la base de datos de scripts de NSE, debes utilizar el argumento --script-updatedb. Dado que este comando modifica archivos del sistema en el directorio de instalación de Nmap, requiere privilegios administrativos.

Ejecuta el siguiente comando en tu terminal:

sudo nmap --script-updatedb

Deberías ver una salida similar a esta, indicando que la base de datos se actualizó correctamente:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.09 seconds

Esto confirma que Nmap ha actualizado con éxito su índice de scripts y categorías disponibles. Ahora estás listo para comenzar a escanear.

Ejecutar escaneos de vulnerabilidades (categoría vuln)

En este paso, utilizarás la categoría vuln de los scripts de NSE para buscar vulnerabilidades conocidas en tu máquina local.

La categoría vuln contiene scripts diseñados específicamente para comprobar vulnerabilidades conocidas e informar sobre ellas. Cuando especificas una categoría en lugar del nombre de un script individual, Nmap ejecutará automáticamente todos los scripts que pertenezcan a esa categoría contra los puertos abiertos que descubra.

Los hallazgos de estos scripts son pistas, no pruebas definitivas de compromiso. Un resultado positivo a menudo significa que "este servicio parece ser consistente con un problema conocido" y aún requiere la revisión de un analista.

Para obtener los resultados más precisos, se recomienda encarecidamente combinar los scripts de NSE con la detección de versiones. La detección de versiones (-sV) intenta determinar el software exacto y la versión que se ejecuta en un puerto abierto. Muchos scripts de vulnerabilidad dependen de esta información de versión para decidir si un objetivo podría ser vulnerable antes de enviar sondeos intrusivos.

Escanearás tu máquina local (localhost) utilizando la detección de versiones y la categoría de scripts vuln.

Ejecuta el siguiente comando:

nmap -sV --script vuln -p 80,139,445 localhost

El escaneo puede tardar uno o dos minutos en completarse porque los scripts de vulnerabilidad realizan comprobaciones complejas. Tu salida se verá similar a la siguiente:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0014s latency).

PORT    STATE SERVICE     VERSION
80/tcp  open  http        Apache httpd 2.4.52 ((Ubuntu))
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum: 
|_  /server-status/: Potentially interesting folder
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| vulners: 
|   cpe:/a:apache:http_server:2.4.52: 
|      PACKETSTORM:176334 9.8 https://vulners.com/packetstorm/PACKETSTORM:176334 *EXPLOIT*
|      HTTPD:C072933AA965A86DA3E2C9172FFC1569 9.8 https://vulners.com/httpd/HTTPD:C072933AA965A86DA3E2C9172FFC1569
|       ... (truncated for brevity)
139/tcp open  netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:samba:samba:4.6.2: 
|      SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
|      SAMBA_IS_KNOWN_PIPENAME 10.0 https://vulners.com/canvas/SAMBA_IS_KNOWN_PIPENAME *EXPLOIT*
|       ... (truncated for brevity)
445/tcp open  netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:samba:samba:4.6.2: 
|      SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
|       ... (truncated for brevity)

Host script results:
|_samba-vuln-cve-2012-1182: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 66.86 seconds

En esta salida, Nmap descubrió el servidor web Apache en el puerto 80 y el servicio Samba en los puertos 139 y 445. Los scripts de la categoría vuln se ejecutaron automáticamente contra estos servicios, comprobando problemas comunes como directorios HTTP interesantes y vulnerabilidades SMB conocidas.

Auditar servicios específicos (p. ej., SMB/HTTP)

En este paso, aprenderás a dirigirte a servicios específicos utilizando scripts de NSE individuales en lugar de ejecutar una categoría completa.

Ejecutar una categoría completa como vuln puede ser ruidoso y consumir mucho tiempo. A menudo, durante una evaluación de seguridad, identificarás un servicio específico (como un servidor web o un recurso compartido de archivos) y querrás ejecutar scripts dirigidos contra él.

Por ejemplo, el script http-enum enumera directorios utilizados por aplicaciones web y servidores populares. Es una excelente manera de encontrar paneles administrativos ocultos o carpetas de respaldo. Para hacer el escaneo más rápido, puedes usar el flag -p para decirle a Nmap que solo escanee el puerto específico donde se ejecuta el servicio (por ejemplo, el puerto 80 para HTTP).

Ejecuta el siguiente comando para auditar el servidor web Apache local:

nmap -p 80 --script http-enum localhost

Verás una salida centrada únicamente en el puerto 80:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000096s latency).

PORT   STATE SERVICE
80/tcp open  http
| http-enum: 
|_  /server-status/: Potentially interesting folder

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

De manera similar, puedes dirigirte al servicio Samba (SMB). SMB es un protocolo de intercambio de archivos en red que históricamente ha sido un objetivo frecuente de exploits. Puedes usar el script smb-os-discovery para recopilar información detallada sobre el sistema operativo y la configuración de SMB. SMB normalmente se ejecuta en los puertos 139 y 445.

Ejecuta el siguiente comando para auditar el servicio SMB local:

nmap -p 139,445 --script smb-os-discovery localhost

La salida proporcionará información detallada sobre el servicio SMB:

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

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

Al dirigirte a puertos y scripts específicos, reduces significativamente el tiempo de escaneo y generas resultados altamente enfocados y procesables.

Analizar la salida de NSE

En este paso final, aprenderás a guardar los resultados de tu escaneo de Nmap en un archivo y analizar la salida en busca de palabras clave específicas.

Al realizar escaneos de vulnerabilidades, la salida puede ser extensa. Es crucial guardar los resultados en un archivo para que puedas revisarlos más tarde, compartirlos con tu equipo o analizarlos utilizando otras herramientas de línea de comandos. Nmap ofrece varios formatos de salida. El flag -oN guarda la salida en un formato de texto normal y legible por humanos.

Ejecutarás un escaneo de vulnerabilidades contra la máquina local y guardarás los resultados en un archivo llamado vuln_scan.txt en tu directorio de proyecto.

Ejecuta el siguiente comando:

nmap -sV --script vuln -p 80,139,445 localhost -oN ~/project/vuln_scan.txt

Espera a que el escaneo se complete. Una vez que termine, los resultados estarán guardados de forma segura en ~/project/vuln_scan.txt.

Ahora, puedes analizar este archivo. En un escenario del mundo real, podrías estar buscando indicadores específicos de compromiso o vulnerabilidades críticas. Puedes usar el comando grep para buscar en el archivo de texto. Por ejemplo, puedes buscar la palabra "VULNERABLE" (sin distinguir entre mayúsculas y minúsculas usando el flag -i) para detectar rápidamente cualquier problema confirmado.

Ejecuta el siguiente comando para buscar en el archivo de salida:

grep -i "VULNERABLE" ~/project/vuln_scan.txt
|_  Hosts are all up (not vulnerable).

Para verificar que el archivo se creó y contiene los datos del escaneo, puedes ver las primeras líneas del archivo usando el comando head:

head -n 10 ~/project/vuln_scan.txt

Deberías ver el encabezado estándar de Nmap y el comienzo del informe de escaneo:

## Nmap 7.80 scan initiated Mon Mar  9 15:27:21 2026 as: nmap -sV --script vuln -p 80,139,445 -oN /home/labex/project/vuln_scan.txt localhost
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).

Guardar y analizar la salida es una habilidad fundamental para cualquier profesional de la seguridad, lo que te permite gestionar grandes cantidades de datos de manera eficiente.

Resumen

¡Felicidades! Has completado con éxito el laboratorio de Escaneo de vulnerabilidades con NSE.

En este laboratorio, aprendiste a elevar Nmap de un escáner de puertos estándar a una herramienta de evaluación de vulnerabilidades activa. Comenzaste actualizando la base de datos del Nmap Scripting Engine para asegurarte de tener los scripts más recientes disponibles. Luego, utilizaste la categoría vuln para sondear automáticamente los servicios descubiertos en busca de vulnerabilidades conocidas. Además, practicaste cómo dirigirte a servicios específicos como HTTP y SMB con scripts individuales para realizar auditorías enfocadas. Finalmente, aprendiste a guardar los resultados de tu escaneo en un archivo y analizarlos utilizando herramientas de línea de comandos para una evaluación eficiente.

Estas habilidades forman una base sólida para la auditoría de seguridad de redes y la gestión de vulnerabilidades.