El motor de secuencias de comandos de Nmap
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-exploiterTambié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.dbo 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>.nseDespué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: