Guia_Nmap
📘 Guía Completa de Nmap
📑 Índice
Introducción
TCP
Opciones más comunes
Escaneo de red
Escaneo de puertos
Captura de paquetes
Escaneo de Servicios y vulnerabilidades
Outputs
XML
UDP
Firewall o IDS (intrussion detection system)
Scripts (.nse)
Categorías de scripts NSE
Creación de Scripts en LUA para nmap
Integración con Metasploit
Introducción
Nmap es una herramienta de código abierto para exploración de red y auditoría de seguridad. Esta guía está diseñada
para ayudarte a entender todos los comandos, opciones y trucos esenciales para sacarle el máximo partido a esta
potente utilidad.
TCP
Utilizaremos nmap para escanear los 65535 puertos existentes, empezando con el protocolo TCP.
Con route -n veremos el Gateway del ruter, o puerta de enlace. Usando nmap, la IP se pone siempre al final.
Opciones más comunes
-p # Puertos más comunes
-p22 # Escanea un único puerto
-p1-65535 # Rango completo
-p- # Todos los puertos
--top-ports 500 # Los 500 más comunes
-sT # TCP connect scan (Three-Way Handshake)
-sS # TCP SYN scan (semiabierto)
--open # Solo los abiertos
-v # Vervose, aguanta hasta triple vervose (vvv).
-n # No resolucion DNS
-T[0-5] # Ajuste de velocidad 0:paranoic, 1:furtive, 2:polite, 3:normal, 4:agresive,
5:insame
-Pn # Desactiva descubrimiento de host.
-sn # Realiza un ping a la red para descubrir los hosts abiertos
--rua # Random user agent
--min-rate # Los paquetes mínimos que quieres enviar a los puertos por segundo,ej. --min-rate
5000
-O # Detecta el sistema operativo
-sV # versión y Servicio
-sC # Lanza scripts basicos de reconocimiento
-A # Modo Agresivo (MUY RUIDOSO)
La resolución DNS traduce la resolución DNS de IP a nombre, por lo que va más lento.
Escaneo de red
nmap -sn [Link]/24 | grep -oP ‘\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\’ | sort
Escaneo de puertos
nmap -p- -n -sS -Pn -vvv --min-rate 5000 --open 192.168.150 -oN target
Captura de paquetes
tcpdump -i ens33 -w [Link] -v
wireshark -r [Link] &>/dev/null &
Escaneo de Servicios y vulnerabilidades
nmap -p50,80,8080,445 5000 -sCV 192.168.150
Outputs
-oN [Link] # Normal
-oX [Link] # XML
-oG [Link] # Grepeable
-oS [Link] # Script kiddie
nmap -Pn -sS -F -T4 [Link] -oN nmap_normal.txt
nmap -Pn -sS -F -T4 [Link] -oG nmap_Grepeable.txt
Comandos para coger los puertos extraídos de nmap en formato grepeable:
cat nmap_Grepeable.txt | grep '^[0-9]' | sed 's/\// /g' | awk '{print $1}' | xargs | tr ' ' ','
cat nmap_Grepeable.txt | grep -oP '\d{1,5}/open' | awk '{print $1}' FS='/' | xargs | tr ' ' ','
XML
nmap -sCV -p25,53,88,135,139,445,3268,5985,8530 -oN targeted -oX targetXML [Link]
xsltproc targetXML > [Link]
python3 -m [Link] 80
UDP
-sU → Escaneo por UDP. Se puede combinar con cualquier parámetro del TCP. Ej;
nmap -p- --open -sU [Link] -v -n -Pn
Firewall o IDS (intrussion detection system)
Opción Descripción
-f Fragmenta los paquetes para evadir el firewall.
--mtu Fragmenta paquetes con un tamaño múltiplo de 8. Manipula el tamaño máximo de los paquetes para
evitar detección.
-D Decoy (spoof de IPs). Ej: nmap -p22 [Link] -D [Link] . Permite confundir el firewall
enviando peticiones desde múltiples IPs.
--source- Especifica el puerto de origen, útil si el firewall permite ciertos puertos. Ej: nmap -p22 [Link] -
port -open -T5 -v -n --source-port 53
--data- Cambia la longitud del paquete para evitar restricciones. Ej: nmap -p12 [Link] --data-
length length 21 genera paquetes de longitud 79.
--spoof- Falsifica la dirección MAC. Ej: nmap -p22 [Link] --spoof-mac Dell -Pn o --spoof-mac
mac [Link] -Pn .
-sS Escaneo SYN (semiabierto). Envía SYN y recibe SYN/ACK pero responde con RST en lugar de ACK
para evitar establecer conexión completa y dejar logs.
-sN Escaneo NULL. No activa ningún flag TCP (URG, ACK, PSH, RST, SYN, FIN). Útil contra firewalls que
bloquean SYN.
Ejemplos:
nmap -Pn -sS -sV -p445,3389 -f --data-leng 200 -D [Link]
nmap -Pn -sS -sV -p445,3389 -f --data-leng 200 -D [Link], [Link]
nmap -p- -sS -sV -F --host-timeout 5s [Link]/24
nmap -p- -sS -sV -F --scan-delay 5s [Link]
nmap -p- -sS -sV -F -T1 [Link]
Scripts (.nse)
El parámetro --script de Nmap permite al usuario ejecutar uno o varios scripts NSE (Nmap Scripting Engine) sobre un
objetivo de escaneo específico. Estos scripts amplían las capacidades de Nmap, permitiendo desde la detección de
servicios hasta el descubrimiento de vulnerabilidades.
Los scripts están ubicados en el sistema de archivos, generalmente en la ruta /usr/share/nmap/scripts , y se pueden
localizar fácilmente con:
locate .nse
Categorías de scripts NSE
Los scripts de Nmap están organizados en distintas categorías, cada una orientada a un propósito específico:
default: Conjunto básico de scripts que se ejecutan por defecto con la opción -sC . Son seguros y adecuados para la
mayoría de los escaneos.
discovery: Scripts destinados a la identificación de dispositivos, servicios o información general de red.
safe: Scripts considerados no intrusivos. No generan alertas en sistemas de detección de intrusos (IDS) y son
apropiados para entornos de producción.
intrusive: Scripts más agresivos que pueden causar alertas en IDS o afectar servicios. Se utilizan para pruebas de
penetración avanzadas.
vuln: Scripts diseñados para identificar vulnerabilidades conocidas en sistemas y servicios.
locate .nse | xargs grep "categories"
Y para ver solo los nombres de las categorías únicas:
locate .nse | xargs grep "categories" | grep -oP '".*?"' | sort -u
Además, puedes combinar categorías en un mismo escaneo. Por ejemplo:
nmap -p22 [Link] --script="vuln and safe"
Y si deseas aplicar el conjunto de scripts por defecto, puedes simplemente utilizar:
nmap -sC <objetivo>
Ejemplo de script para un fuzzing rápido:
--script [Link]
Ejemplo de scripts de reconocimiento para SMB
nmap -p445 --script smb-protocols [Link]
nmap -p445 --script smb-security-mode [Link]
nmap -p445 --script smb-enum-sessions [Link]
nmap -p445 --script smb-enum-shares [Link]
nmap -p445 --script smb-enum-sessions --script-args smbusername=admin,smbpassword=pass [Link]
Creación de Scripts en LUA para nmap
Estructura de un script básico
--HEAD--
description = [[
Script de ejemplo que enumera y reporta puertos abiertos por TCP
]]
--RULE--
portrule = function(host, port)
return [Link] == “tcp”
and [Link] == “open”
end
--ACTION--
acction = function(host, port)
return “this port is open!”
end
Integración con Metasploit
Metasploit Framework permite importar los resultados de escaneos de Nmap para analizarlos, almacenarlos y realizar
acciones adicionales de reconocimiento o explotación. A continuación se describe el flujo completo para utilizar esta
integración de forma efectiva.
1. Iniciar Metasploit
msfconsole
2. Gestión de espacios de trabajo
Ver los espacios existentes:
workspace
Consultar opciones disponibles:
workspace -h
Crear un nuevo espacio de trabajo:
workspace -a pentest_1
3. Conexión a la base de datos
Verificar el estado de la base de datos:
db_status
4. Importar resultados de Nmap
Importar un archivo XML generado por Nmap:
db_import nmap_scan.xml
Generar archivo XML:
nmap -Pn -sS -sV -O -p- <IP> -oX nmap_scan.xml
5. Consultar información importada
Ver hosts detectados:
hosts
Ver servicios encontrados:
services
6. Escanear desde Metasploit
Ejecutar escaneo desde Metasploit:
db_nmap -Pn -sS -O -sV -p445 <IP>
7. Actualización de resultados
La base de datos se actualiza automáticamente tras nuevos escaneos. Puedes volver a ejecutar hosts o services
para consultar la información más reciente.