Cargando...
Cargando...
Duración: 1.5 horas (Estimada)
¡Bienvenido/a al sexto episodio de nuestro curso completo de Nmap! En este módulo, exploraremos el Nmap Scripting Engine (NSE), un potente framework que extiende las capacidades de Nmap mucho más allá del escaneo básico. Aprenderás a usar scripts preconstruidos para reconocimiento avanzado, detección de vulnerabilidades y enumeración de servicios.
El NSE transforma Nmap de un simple escáner de puertos a una plataforma comprensiva de evaluación de seguridad. Es como pasar de una lupa a un laboratorio forense completo.
Con más de 600 scripts incorporados, NSE puede automatizar tareas complejas, detectar vulnerabilidades y extraer información detallada de los servicios de red.
Al final de este módulo, podrás aprovechar los scripts NSE para realizar reconocimientos avanzados, detectar vulnerabilidades y extraer información valiosa de los servicios de red, todo dentro del familiar framework de Nmap.
El Nmap Scripting Engine (NSE) es un potente framework de extensión que permite a los usuarios escribir y compartir scripts para automatizar una amplia variedad de tareas de red. Estos scripts están escritos en el lenguaje de programación Lua y se ejecutan durante los escaneos de Nmap.
NSE permite a Nmap:
El NSE se introdujo en Nmap 4.21 en 2007 y desde entonces se ha convertido en una de las características más potentes de Nmap, con cientos de scripts disponibles en la distribución estándar y más disponibles en la comunidad.
Los scripts NSE se organizan en categorías según su funcionalidad:
-sC o -AEntender estas categorías nos ayuda a seleccionar los scripts apropiados para diferentes escenarios y requisitos de seguridad.
Comencemos con los comandos básicos de NSE:
nmap -sC 192.168.1.1Esto ejecuta el conjunto predeterminado de scripts, que generalmente son seguros y proporcionan información útil sin ser intrusivos.
Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 20:00 EDT Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). Not shown: 995 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh | ssh-hostkey: | 3072 da:db:85:cc:5e:2d:d9:a2:52:f5:87:f2:8f:1e:c2:82 (RSA) | 256 c1:8a:f5:82:96:e2:93:68:95:b7:a1:ce:a1:4b:77:19 (ECDSA) |_ 256 cf:c1:34:c2:2d:e1:32:b2:e5:e0:3d:f4:f8:64:59:c9 (ED25519) 53/tcp open domain | dns-nsid: |_ bind.version: 9.16.1-Ubuntu 80/tcp open http |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.41 (Ubuntu) 443/tcp open https |_ssl-date: TLS randomness does not represent time | ssl-cert: Subject: commonName=philocyber.com | Subject Alternative Name: DNS:philocyber.com, DNS:www.philocyber.com | Not valid before: 2025-01-14T00:00:00 |_Not valid after: 2026-01-14T23:59:59 8443/tcp open https-alt Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds
Notá cómo los scripts proporcionan información adicional sobre cada servicio, como las claves de host SSH, la versión del servidor DNS, detalles del servidor HTTP e información del certificado SSL.
nmap --script=discovery 192.168.1.1Esto ejecuta todos los scripts de la categoría "discovery", que se centran en descubrir más información sobre el objetivo.
Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 20:05 EDT Pre-scan script results: | broadcast-dhcp-discover: | Response 1 of 1: | IP Offered: 192.168.1.100 | DHCP Message Type: DHCPOFFER | Server Identifier: 192.168.1.1 | IP Address Lease Time: 1 day, 0:00:00 | Subnet Mask: 255.255.255.0 | Router: 192.168.1.1 | Domain Name Server: 192.168.1.1 |_ Domain Name: home Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). Not shown: 995 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh | ssh-hostkey: | 3072 da:db:85:cc:5e:2d:d9:a2:52:f5:87:f2:8f:1e:c2:82 (RSA) | 256 c1:8a:f5:82:96:e2:93:68:95:b7:a1:ce:a1:4b:77:19 (ECDSA) |_ 256 cf:c1:34:c2:2d:e1:32:b2:e5:e0:3d:f4:f8:64:59:c9 (ED25519) 53/tcp open domain | dns-nsid: |_ bind.version: 9.16.1-Ubuntu 80/tcp open http |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.41 (Ubuntu) 443/tcp open https |_ssl-date: TLS randomness does not represent time | ssl-cert: Subject: commonName=philocyber.com | Subject Alternative Name: DNS:philocyber.com, DNS:www.philocyber.com | Not valid before: 2025-01-14T00:00:00 |_Not valid after: 2026-01-14T23:59:59 8443/tcp open https-alt Host script results: | dns-brute: | DNS Brute-force hostnames: | mail.philocyber.com - 203.0.113.10 | www.philocyber.com - 203.0.113.10 | ftp.philocyber.com - 203.0.113.10 |_ admin.philocyber.com - 203.0.113.10 Nmap done: 1 IP address (1 host up) scanned in 8.35 seconds
nmap --script=http-title,http-headers 192.168.1.1 -p 80Esto ejecuta solo los scripts especificados contra el puerto HTTP del objetivo.
Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 20:10 EDT Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). PORT STATE SERVICE 80/tcp open http |_http-title: Apache2 Ubuntu Default Page: It works | http-headers: | Date: Wed, 14 Apr 2025 00:10:15 GMT | Server: Apache/2.4.41 (Ubuntu) | Last-Modified: Mon, 10 Apr 2025 10:30:22 GMT | ETag: "2c39-61b63e5c46240" | Accept-Ranges: bytes | Content-Length: 11321 | Vary: Accept-Encoding | Connection: close | Content-Type: text/html | |_ (Request type: GET) Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds
nmap --script="http-*" 192.168.1.1 -p 80Esto ejecuta todos los scripts cuyos nombres comienzan con "http-" contra el puerto HTTP del objetivo.
nmap --script="default,safe" 192.168.1.1Esto ejecuta scripts de las categorías "default" y "safe".
Muchos scripts NSE aceptan argumentos para personalizar su comportamiento:
nmap --script=http-brute --script-args userdb=usuarios.txt,passdb=contraseñas.txt 192.168.1.1Esto ejecuta el script http-brute con listas personalizadas de nombres de usuario y contraseñas.
Para obtener información sobre un script específico:
nmap --script-help=http-enumStarting Nmap 7.94 ( https://nmap.org ) http-enum Categorías: discovery intrusive https://nmap.org/nsedoc/scripts/http-enum.html Enumera directorios usados por aplicaciones y servidores web populares. Esto analiza un archivo de huellas digitales (fingerprints) similar en formato al del escáner de aplicaciones web Nikto. Este script, sin embargo, va un paso más allá al incorporar coincidencias de patrones avanzadas y tener la capacidad de identificar versiones específicas de aplicaciones web. Podés pasar tu propio archivo de huellas digitales con el argumento de script 'fingerprints'. Argumentos del Script http-enum.basepath Ruta base para anteponer a todas las solicitudes. Predeterminado: / http-enum.displayall Establecer en true para mostrar todas las rutas, incluso si devuelven 404. Predeterminado: false http-enum.fingerprintfile Especificar un archivo diferente para leer las huellas digitales. http-enum.category Establecer en una categoría (como 'wordpress') para ejecutar solo las huellas digitales que coincidan con esa categoría. slaxml.debug Ver la documentación de la biblioteca slaxml. http.max-cache-size, http.max-pipeline, http.pipeline, http.useragent Ver la documentación de la biblioteca http. Ejemplo de Uso nmap --script=http-enum <objetivo> nmap --script=http-enum --script-args http-enum.basepath='pub/' <objetivo>
Al ejecutar scripts complejos, puede ser necesario ajustar los parámetros de timing:
nmap --script=vuln -T4 --max-hostgroup 1 --min-rate 100 192.168.1.1Esto ejecuta scripts de detección de vulnerabilidades con configuraciones de timing agresivas.
nmap --script=default -oA resultados_scripts 192.168.1.1Esto guarda los resultados de los scripts en todos los formatos (normal, XML y grepable).
Exploremos algunas de las categorías de scripts más útiles:
Recopilan información sobre la red y los servicios.
nmap --script=discovery 192.168.1.0/24Scripts útiles incluyen:
Mejoran las capacidades de detección de servicios de Nmap. Estos scripts se usan automáticamente con -sV.
nmap --script=version 192.168.1.1Verifican problemas de seguridad conocidos.
nmap --script=vuln 192.168.1.1Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 20:20 EDT Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). Not shown: 995 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 53/tcp open domain 80/tcp open http |_http-csrf: No se encontraron vulnerabilidades CSRF. |_http-dombased-xss: No se encontraron XSS basados en DOM. | http-slowloris-check: | VULNERABLE: | Ataque DoS Slowloris | Estado: PROBABLEMENTE VULNERABLE | IDs: CVE:CVE-2007-6750 | Slowloris intenta mantener muchas conexiones abiertas al servidor web objetivo y | mantenerlas abiertas el mayor tiempo posible. Logra esto abriendo conexiones al | servidor web objetivo y enviando una solicitud parcial. Al hacerlo, agota | los recursos del servidor http causando Denegación de Servicio. | | Fecha de divulgación: 2009-09-17 | Referencias: | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750 |_ http://ha.ckers.org/slowloris/ |_http-stored-xss: No se encontraron vulnerabilidades XSS almacenadas. 443/tcp open https 8443/tcp open https-alt Nmap done: 1 IP address (1 host up) scanned in 30.42 seconds
Scripts populares incluyen:
Intentan adivinar contraseñas.
nmap --script=brute 192.168.1.1Scripts comunes incluyen:
Nota: Siempre asegurate de tener la autorización adecuada antes de usar scripts de fuerza bruta, ya que pueden activar bloqueos de cuenta y generar tráfico significativo.
Exploremos scripts para servicios comunes:
nmap --script="http-*" -p 80,443 192.168.1.1Scripts útiles:
nmap --script="mysql-*,ms-sql-*,mongodb-*" -p 1433,3306,27017 192.168.1.1Scripts útiles:
nmap --script="smtp-*,pop3-*,imap-*" -p 25,110,143,465,587,993,995 192.168.1.1Scripts útiles:
nmap --script="smb-*" -p 139,445 192.168.1.1Scripts útiles:
Para evaluaciones comprensivas, combinamos scripts en flujos de trabajo:
nmap -p 80,443 --script="http-enum,http-headers,http-methods,http-title,http-robots.txt,http-vuln-*" 192.168.1.1Este flujo de trabajo:
nmap -p- --script="default,discovery,version" --script-timeout 2m 192.168.1.1Este flujo de trabajo:
nmap -p 22,23,25,80,443,445,3389 --script="ssl-cert,ssh-auth-methods,telnet-encryption,smb-security-mode" 192.168.1.1Este flujo de trabajo verifica:
Ejecutá los scripts predeterminados contra un objetivo y analizá los resultados:
nmap -sC 192.168.1.1 -oN scripts_default.txtPreguntas a responder:
Realizá enumeración detallada de servicios específicos:
# Enumeración de servidor web
nmap --script="http-enum,http-headers,http-methods" -p 80,443 192.168.1.1 -oN enum_web.txt
# Enumeración SSH
nmap --script="ssh-hostkey,ssh-auth-methods" -p 22 192.168.1.1 -oN enum_ssh.txt
# Compará la información recopiladaCreá una tabla mostrando qué información proporcionó cada script y cómo podría ser útil para una evaluación de seguridad.
Realizá un escaneo de vulnerabilidades en tu objetivo:
nmap --script=vuln 192.168.1.1 -oN escaneo_vuln.txtAnalizá los resultados:
Creá un flujo de trabajo de script personalizado para un escenario específico:
# Ejemplo: Evaluación de red interna nmap -p 21-25,80,139,445 --script="default,discovery,safe" 192.168.1.0/24 -oA evaluacion_internaDocumentá tu flujo de trabajo:
Problema: Los scripts tardan demasiado o agotan el tiempo de espera.
Solución:
# Ajustar timeout del script
nmap --script=vuln --script-timeout 5m 192.168.1.1Problema: Los scripts reportan vulnerabilidades que no existen.
Solución:
# Verificar con otras herramientas/pruebas manuales
nmap --script=ssl-heartbleed ...
# Luego verificar con tester dedicadoProblema: Los scripts fallan con errores.
Solución:
# Actualizar base de datos NSE
nmap --script-updatedb
# Ejecutar con debugging
nmap --script=... -d ...Problema: Los scripts son demasiado intrusivos/ruidosos.
Solución:
# Usar scripts dirigidos/seguros
nmap --script="safe" ...
# Controlar timing
--min-rate 100 --max-retries 1Un equipo de seguridad usó scripts NSE para evaluar una aplicación web:
nmap -sV -p 80,443 ejemplo.comnmap --script="http-enum,http-headers,http-methods" ...nmap --script="http-vuln-*" ...Esto identificó software desactualizado, interfaces expuestas, métodos inseguros y fuga de información, llevando a recomendaciones específicas de remediación.
Un administrador de red usó NSE para una auditoría de seguridad:
nmap -sV 10.0.0.0/24nmap --script="ssl-cert,ssh-auth-methods,smb-security-mode" ...nmap --script="vuln" ...Esto reveló certificados expirados, autenticación débil, SMB inseguro y exploits conocidos, permitiendo priorizar actualizaciones y cambios de configuración.
En el próximo episodio, exploraremos:
Nota: Usá este video como guía visual para complementar el material escrito.
Test your understanding with these questions
1. ¿Cuál es el propósito principal del Nmap Scripting Engine (NSE)?
2. ¿Qué opción de Nmap se utiliza para ejecutar el conjunto predeterminado de scripts NSE?
3. Si querés ejecutar todos los scripts NSE que se categorizan como potencialmente peligrosos o que podrían interrumpir servicios, ¿qué categoría seleccionarías?
4. ¿Cómo podés proporcionar parámetros o configuraciones específicas a un script NSE al ejecutarlo con Nmap?
5. ¿Cuál es una estrategia común para realizar una evaluación comprensiva de una aplicación web usando Nmap Scripting Engine?
