Uso del Motor de Scripting de Nmap (Nmap Scripting Engine - NSE)
El Motor de Scripting de Nmap (Nmap Scripting Engine - NSE) es una herramienta poderosa que te permite expandir las capacidades de Nmap utilizando scripts de Lua. Lua es un lenguaje de programación ligero, y estos scripts pueden realizar una amplia variedad de tareas. Por ejemplo, pueden ayudar con la detección avanzada de servicios, lo que significa identificar con mayor precisión qué servicios se están ejecutando en un dispositivo de red. También se pueden utilizar para el escaneo de vulnerabilidades, lo cual es crucial para encontrar debilidades de seguridad en un sistema.
Vamos a utilizar NSE para recopilar más información sobre nuestro servidor HTTP. Los scripts de NSE se agrupan en diferentes categorías. Estas categorías incluyen "default" (predeterminada), que contiene scripts comunes y seguros; "discovery" (descubrimiento), que se utiliza para encontrar servicios de red; "safe" (segura), que no causará ningún daño al sistema objetivo; y "vuln" (vulnerabilidad), que se utiliza para el escaneo de vulnerabilidades.
Primero, queremos ver qué scripts relacionados con HTTP están disponibles. Para hacer esto, utilizaremos el siguiente comando:
ls /usr/share/nmap/scripts/http*
Este comando lista todos los scripts de NSE en el directorio /usr/share/nmap/scripts/
que comienzan con http
. Cuando ejecutes este comando, verás una lista de scripts diseñados para interactuar con servicios HTTP. Estos scripts pueden realizar diferentes funciones, desde la recopilación simple de información, como obtener el título de una página web, hasta tareas más complejas, como escanear buscando vulnerabilidades en un servicio HTTP.
Ahora, vamos a utilizar el script http-title
para extraer el título de nuestra página web. El script http-title
está diseñado para analizar un servicio HTTP y encontrar el título de la página web que sirve. Aquí está el comando para ejecutar este script:
sudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt
En este comando, sudo
se utiliza para ejecutar el comando con privilegios de administrador porque algunas operaciones de Nmap pueden requerirlos. nmap
es el comando principal, y --script=http-title
le dice a Nmap que utilice el script http-title
. -p 8000
especifica que estamos apuntando al puerto 8000, donde se está ejecutando nuestro servidor HTTP. localhost
es el objetivo, lo que significa que estamos ejecutando el escaneo en nuestra propia máquina. El símbolo >
redirige la salida del comando al archivo /home/labex/project/nmap_script_output.txt
.
Vamos a comprobar la salida del comando. Podemos hacer esto utilizando el siguiente comando:
cat /home/labex/project/nmap_script_output.txt
El comando cat
se utiliza para mostrar el contenido de un archivo. Cuando ejecutes este comando, deberías ver una salida que incluya información sobre el título de nuestra página web. La salida podría ser similar a esta:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
PORT STATE SERVICE
8000/tcp open http-alt
|_http-title: Directory listing for /
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
Ahora, vamos a probar un escaneo más completo utilizando múltiples scripts. La categoría "default" incluye scripts seguros que proporcionan información útil sobre el objetivo. Para ejecutar todos los scripts de la categoría "default" contra nuestro servidor HTTP en el puerto 8000, utilizamos el siguiente comando:
sudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt
Este comando es similar al anterior, pero en lugar de especificar un solo script, le estamos diciendo a Nmap que ejecute todos los scripts de la categoría "default".
Vamos a examinar los resultados de este escaneo. Podemos hacer esto utilizando nuevamente el comando cat
:
cat /home/labex/project/nmap_default_scripts.txt
La salida contendrá información más detallada sobre nuestro servidor HTTP, recopilada por varios scripts de NSE que se ejecutan por defecto.
Finalmente, vamos a explorar la función de ayuda de scripts para aprender más sobre un script específico. Si quieres saber más sobre el script http-title
, puedes utilizar el siguiente comando:
nmap --script-help=http-title
Este comando muestra la documentación del script http-title
. La documentación incluye el propósito del script, cómo utilizarlo y el formato de su salida. Comprender la documentación de los scripts es esencial cuando se utiliza NSE para tareas específicas porque te ayuda a saber qué hace el script y cómo usarlo correctamente.