Nmap (Network Mapper) es una de las herramientas de código abierto más potentes para el escaneo de redes. Su objetivo principal es automatizar dos tareas fundamentales en la fase de enumeración: descubrir hosts activos en una red y detectar los servicios y puertos abiertos de dichos hosts.
Hacer esto manualmente con ping, arp-scan o telnet sería lento y fácilmente bloqueado por firewalls. Nmap centraliza múltiples tácticas de descubrimiento en una sola herramienta.
Nota: Siempre que sea posible, ejecuta Nmap con
sudo. Sin privilegios de root, solo podrás usar conexiones TCP completas (mucho más ruidosas), ya que manipular paquetes TCP "en crudo" requiere acceso de superusuario.
Descubrimiento de Hosts
Antes de escanear puertos, necesitas saber qué hosts están vivos. Nmap permite definir el objetivo de varias formas:
| Formato | Ejemplo |
|---|---|
| IP única | 192.168.0.1 |
| Rango de IPs | 192.168.0.1-10 |
| Subred CIDR | 192.168.0.0/24 |
| Hostname | ejemplo.thm |
Ping Scan (-sn)
Descubre hosts activos sin escanear sus puertos. Útil para mapear redes con poco ruido.
sudo nmap -sn 192.168.0.0/24El comportamiento varía según la ubicación del objetivo:
- Red local (LAN): Usa peticiones ARP. Si hay respuesta, lista el host como
Upy además muestra su MAC y fabricante. - Red remota: Emplea ICMP echo, TCP SYN al puerto 443 y TCP ACK al puerto 80 para detectar si el host está encendido.
List Scan (-sL)
Lista todos los objetivos calculados según la subred sin enviar ningún paquete. Útil para verificar el scope antes de lanzar un escaneo real.
nmap -sL 192.168.0.0/24Escaneo de Puertos
Existen 65.535 puertos TCP y UDP. Nmap permite descubrir cuáles tienen servicios activos escuchando.
Tipos de escaneo
TCP Connect Scan (-sT)
Nmap completa el three-way handshake de TCP por entero. Es el modo por defecto sin root, pero deja registros en la máquina objetivo porque la conexión llega a abrirse.
nmap -sT 10.10.10.1TCP SYN Scan — Stealth (-sS)
Nmap envía un SYN. Si el servidor responde con SYN-ACK (puerto abierto), Nmap aborta inmediatamente con un RST, sin completar la conexión. Es el modo por defecto con sudo y el más habitual en pentesting porque generalmente no queda registrado a nivel de aplicación.
sudo nmap -sS 10.10.10.1UDP Scan (-sU)
Escanea puertos UDP (usados por DHCP, DNS, SNMP, etc.). Como UDP no tiene handshake, un ICMP Port Unreachable indica que el puerto está cerrado.
sudo nmap -sU 10.10.10.1Filtro de puertos
| Argumento | Comportamiento |
|---|---|
| (sin argumento) | Los 1.000 puertos TCP más comunes |
-F | Solo los 100 más comunes (Fast Mode) |
-p 10-1024 | Rango personalizado de puertos |
-p- | Los 65.535 puertos completos |
Detección de Versiones y Sistema Operativo
Una vez localizados los puertos abiertos, el siguiente paso es saber exactamente qué corre detrás.
| Flag | Función |
|---|---|
-sV | Interroga los puertos para identificar el servicio y versión exacta (ej. OpenSSH 8.9p1) |
-O | Intenta deducir el SO del host analizando patrones de respuesta (OS fingerprinting) |
-A | Modo agresivo: activa -O, -sV, scripts NSE por defecto y traceroute a la vez |
-Pn | Omite el descubrimiento de host y escanea directamente. Útil cuando el objetivo bloquea ICMP |
# Escaneo completo típico en pentesting
sudo nmap -sS -sCV -A -Pn 10.10.10.1Control de Tiempos (Timing)
Lanzar consultas demasiado agresivas puede saturar la red o activar alarmas en un IDS. Nmap incluye seis plantillas de velocidad con -T:
| Plantilla | Nombre | Descripción |
|---|---|---|
-T0 | Paranoid | Minutos entre paquetes. Máximo sigilo |
-T1 | Sneaky | Muy cauteloso frente a firewalls e IDS |
-T2 | Polite | Limita el ancho de banda activamente |
-T3 | Normal | Comportamiento por defecto |
-T4 | Aggressive | Equilibrio velocidad/sigilo. El más usado en redes locales estables |
-T5 | Insane | Máxima velocidad. Puede generar falsos negativos si la red pierde paquetes |
Para mayor control, también puedes ajustar variables individuales:
# Máximo 500 paquetes/segundo, tiempo límite de 30s por host
sudo nmap -sS --max-rate 500 --host-timeout 30s 10.10.10.0/24| Variable | Función |
|---|---|
--min-parallelism / --max-parallelism | Límite de sondeos en paralelo |
--min-rate / --max-rate | Paquetes por segundo mínimos/máximos |
--host-timeout | Tiempo máximo antes de abandonar un host lento |
Formatos de Salida
Nmap permite exportar los resultados en varios formatos para su análisis posterior o integración con otras herramientas.
Verbosidad en pantalla
nmap -v 10.10.10.1 # Verbose: muestra hallazgos en tiempo real
nmap -vv 10.10.10.1 # Más detalle
nmap -d 10.10.10.1 # Debug: útil para diagnosticar problemas de la herramientaExportación a archivo
| Flag | Formato | Uso típico |
|---|---|---|
-oN <archivo> | Texto plano legible | Lectura humana, notas |
-oX <archivo> | XML estructurado | Importar en otras herramientas |
-oG <archivo> | Grep-able (una línea por host) | Procesado con grep, awk, scripts |
-oA <nombre> | Los tres anteriores a la vez | Documentación completa de un pentest |
# Exportar los tres formatos con el prefijo "escaneo_inicial"
sudo nmap -sS -sCV -oA escaneo_inicial 10.10.10.0/24Cheatsheet rápida
# Descubrir hosts vivos en una red
sudo nmap -sn 192.168.0.0/24
# Escaneo stealth de los 1000 puertos más comunes
sudo nmap -sS 10.10.10.1
# Escaneo completo con versiones y scripts
sudo nmap -sS -sCV -A 10.10.10.1
# Todos los puertos + detección agresiva + guardar resultados
sudo nmap -sS -p- -A -T4 -oA resultado 10.10.10.1
# Objetivo que bloquea pings (máquina CTF típica)
sudo nmap -sS -Pn -sCV 10.10.10.1