Saltar al contenido
Reconocimiento
Índice de contenidos

Uso de Scripts en Nmap (NSE)

Los Nmap Scripting Engine (NSE) permiten ampliar las capacidades de Nmap para realizar tareas de enumeración, detección de vulnerabilidades, autenticación y recopilación de información sobre los servicios encontrados.


Scripts de vulnerabilidades

Ejecuta los scripts de las categorías vuln y safe sobre un puerto concreto.

nmap --script "vuln and safe" -p<PUERTO> <IP>

Ejemplo:

nmap --script "vuln and safe" -p80 192.168.1.10

Scripts por servicio

HTTP

nmap --script "http*" -p80,443 <IP>

FTP

nmap --script "ftp*" -p21 <IP>

SMB

nmap --script "smb*" -p445 <IP>

SSH

nmap --script "ssh*" -p22 <IP>

SNMP

nmap --script "snmp*" -p161 -sU <IP>

Categorías más utilizadas

CategoríaDescripción
safeScripts seguros y no intrusivos.
defaultScripts ejecutados con -sC.
discoveryObtención de información del objetivo.
authComprobaciones relacionadas con autenticación.
bruteAtaques de fuerza bruta contra servicios compatibles.
vulnDetección de vulnerabilidades conocidas.
malwareDetección de posibles infecciones.
exploitScripts que intentan explotar vulnerabilidades.

Buscar scripts disponibles

Listar todos los scripts instalados:

ls /usr/share/nmap/scripts/

Buscar un servicio concreto:

ls /usr/share/nmap/scripts/ | grep http
ls /usr/share/nmap/scripts/ | grep smb

Actualizar la base de datos de scripts

Si se añaden nuevos scripts:

sudo nmap --script-updatedb

Leyenda

ParámetroDescripción
--scriptEspecifica el script o categoría de scripts que se ejecutará.
"vuln and safe"Ejecuta únicamente los scripts de vulnerabilidades considerados seguros.
-p<PUERTO>Puerto o puertos sobre los que se ejecutarán los scripts.
<IP>Dirección IP del objetivo.

Ejemplos útiles

Detectar vulnerabilidades SMB:

nmap --script smb-vuln* -p445 <IP>

Enumerar un servidor HTTP:

nmap --script http-enum -p80 <IP>

Comprobar si un servidor es vulnerable a MS17-010:

nmap --script smb-vuln-ms17-010 -p445 <IP>

Consejo: Evita ejecutar scripts NSE sobre todos los puertos (-p-), ya que incrementa considerablemente el tiempo de escaneo. Lo habitual es identificar primero los puertos abiertos con un escaneo inicial y, después, lanzar los scripts únicamente sobre los servicios detectados.