El Nmap Scripting Engine (NSE) es una potente caracterísitca incorporada a Nmap que amplía su funcionalidad considerablemente. Los scripts NSE están escritos en el lenguaje de programación Lua y se pueden usar para llevar a cabo una gran variedad de tareas, desde buscar vulnerabilidades hasta automatizar exploits para las mismas.

La cantidad de scripts disponibles es amplísima, estando agrupados en diversas categorías. Entre otras, tenemos:

  • safe: no afectará al objetivo
  • intrusive: no seguro, es probable que afecte al objetivo
  • vuln: escanea en busca de vulnerabilidades
  • exploit: intenta explotar una vulnerabilidad.
  • auth: intenta omitir la autenticación para ejecutar servicios (por ejemplo, iniciar sesión en un servidor FTP de forma anónima)
  • brute: intenta obtener credenciales mediante fuerza bruta para ejecutar servicios
  • discovery: intenta consultar los servicios en ejecución para obtener más información sobre la red (por ejemplo, consultar un servidor SNMP)

Para ejecutar los scripts hay que hacer uso del switch --script. Por ejemplo, si indicamos --script=safe, todos los scripts de la categoría safe se ejecutarán contra el objetivo (solo se activarán los scripts que se dirijan a un servicio activo).

Si queremos que se ejecute un script en concreto basta con indicar su nombre. Por ejemplo

--script=http-fileupload-exploiter

También es posible ejecutar varios simultánemente escribiendo sus nombres separados por comas

--script=smb-enum-users,smb-enum-shares`

Es posible que algunos scripts requieran argumentos, los cuales se pueden indicar mediante el switch --script-args. Cada argumento se debe declarar de la forma <script-name>.<argument>=<valor> Por ejemplo, el script http-put toma dos argumentos:

nmap -p 80 --script=http-put --script-args http-put.url='/dav/shell.php',http-put.file='./shell.php'

Los scripts de Nmap vienen con ayuda incorporada, a la que se puede acceder mediante

nmap --script-help <script-name>

Si bien no suele ofrecer una ayuda extensa, puede ser útil cuando se trabaja en local.

Cómo encontrar scripts

Debido a la gran cantidad de scripts y categorías existentes, no siempre es fácil encontrar aquél que contenga la funcionalidad que necesitamos. Para buscar un script tenemos dos opciones: consultar la documentación de Nmap disponible en la web (aquí), o consultar los scripts almacenados con la instalación de Nmap (en Linux suelen almacenarse en /usr/share/nmap/scripts).

En el directorio donde se guardan los scripts a los que tiene acceso Nmap existe el fichero script.db, un fichero de texto formateado con el nombre de archivo y categorías para cada script disponible. Podemos buscar es este archivo

grep "ftp" /usr/share/nmap/scripts/script.db

o filtrar el contenido del directorio

ls -l /usr/share/nmap/scripts/*ftp*

Instalar nuevos scripts

Es posible instalar scripts de forma manual descargándolos de Nmap o desarrollándolos nosotros mismos. En Linux podemos realizar la descarga mediante el siguiente comando:

sudo wget -O /usr/share/nmap/scripts/<nombre-script>.nse https://svn.nmap.org/nmap/scripts/<nombre-script>.nse

Después de ello se debe ejecutar nmap --script-updatedb para actualizar el archivo script.db con la información del nuevo script descargado. Este comando también debemos ejecutarlo en caso de añadir un nuevo script desarrollado por nosotros.



Más información: