Nadie se memoriza Nmap. Nadie. Todos usamos una cheat sheet, la consultamos constantemente, y con el tiempo lo importante se queda grabado.

Esta es esa cheat sheet — actualizada para 2026, organizada según lo que realmente haces en un engagement, no en orden alfabético por nombre de flag. Cubre desde el descubrimiento básico hasta los scripts NSE y la evasión de firewalls. Si no está aquí, probablemente no lo necesites en campo.


Especificación de Objetivos

Estos van al final de cualquier comando de Nmap. Combínalos según sea necesario.

# IP individual
nmap 192.168.1.1

# Rango CIDR
nmap 192.168.1.0/24

# Rango de IPs (notación con guión)
nmap 192.168.1.1-254

# Múltiples objetivos
nmap 192.168.1.1 10.0.0.1 172.16.0.1

# Desde archivo
nmap -iL targets.txt

# Excluir hosts
nmap 192.168.1.0/24 --exclude 192.168.1.1,192.168.1.254

# Excluir desde archivo
nmap 192.168.1.0/24 --excludefile exclude.txt

# Objetivos aleatorios (útil para reconocimiento externo)
nmap -iR 100

Descubrimiento de Hosts

Antes de escanear puertos, determina qué está activo. Ahorra tiempo en redes grandes.

# Escaneo de ping solamente (sin escaneo de puertos)
nmap -sn 192.168.1.0/24

# Descubrimiento ARP (red local, requiere root)
nmap -PR 192.168.1.0/24

# Ping TCP SYN (útil cuando ICMP está bloqueado)
nmap -PS22,80,443 192.168.1.0/24

# Ping TCP ACK
nmap -PA80,443 192.168.1.0/24

# Ping UDP
nmap -PU53,161 192.168.1.0/24

# Ping ICMP echo
nmap -PE 192.168.1.0/24

# Deshabilitar descubrimiento de hosts — tratar todos los objetivos como activos
nmap -Pn 192.168.1.1

# Listar objetivos sin escanear (verificación de sanidad)
nmap -sL 192.168.1.0/24

-Pn es tu mejor amigo contra hosts que descartan pings. La mayoría de los servidores de producción lo hacen.


Tipos de Escaneo

Los Cuatro Principales

# Escaneo SYN — predeterminado, sigiloso, requiere root
nmap -sS 192.168.1.1

# Escaneo TCP connect — no requiere root, más ruidoso
nmap -sT 192.168.1.1

# Escaneo UDP — lento, vale la pena para DNS/SNMP/TFTP
nmap -sU 192.168.1.1

# Combinado TCP + UDP
nmap -sS -sU 192.168.1.1

Escaneos Especiales

# Escaneo NULL (sin flags) — evade algunos firewalls sin estado
nmap -sN 192.168.1.1

# Escaneo FIN
nmap -sF 192.168.1.1

# Escaneo Xmas (FIN+PSH+URG)
nmap -sX 192.168.1.1

# Escaneo ACK — mapea reglas de firewall, no puertos abiertos
nmap -sA 192.168.1.1

# Escaneo Window — variante de ACK, a veces encuentra puertos abiertos
nmap -sW 192.168.1.1

# Escaneo Maimon (FIN+ACK)
nmap -sM 192.168.1.1

# Escaneo de protocolo IP
nmap -sO 192.168.1.1

Nota sobre NULL/FIN/Xmas: Estos no funcionan de manera confiable contra objetivos Windows. Windows envía RST tanto para puertos cerrados como abiertos con estos tipos de escaneo.


Especificación de Puertos

# Puerto individual
nmap -p 80 192.168.1.1

# Múltiples puertos
nmap -p 22,80,443,8080 192.168.1.1

# Rango de puertos
nmap -p 1-1000 192.168.1.1

# Los 65535 puertos
nmap -p- 192.168.1.1

# Los N puertos más comunes
nmap --top-ports 100 192.168.1.1
nmap --top-ports 1000 192.168.1.1

# Escaneo rápido (top 100 puertos)
nmap -F 192.168.1.1

# Puertos UDP
nmap -sU -p U:53,161,123 192.168.1.1

# TCP/UDP mixto
nmap -p T:80,443,U:53,161 192.168.1.1

# Puertos por nombre
nmap -p http,https,ssh 192.168.1.1

Para engagements internos: -p- es exhaustivo pero lento. --top-ports 1000 cubre ~99% de lo que importa.


Detección de Servicios y Versiones

# Detección de versión de servicio
nmap -sV 192.168.1.1

# Niveles de intensidad (0=más ligero, 9=agresivo)
nmap -sV --version-intensity 5 192.168.1.1

# Detección agresiva de versiones (más ruidoso)
nmap -sV --version-all 192.168.1.1

# Detección ligera de versiones
nmap -sV --version-light 192.168.1.1

# Detección de OS (requiere root, necesita puerto abierto+cerrado)
nmap -O 192.168.1.1

# Detección agresiva de OS con suposición
nmap -O --osscan-guess 192.168.1.1

# Todo a la vez
nmap -A 192.168.1.1

-A = -sV -sC -O --traceroute. Bueno para reconocimiento rápido en un solo host. Demasiado ruidoso para trabajo sigiloso.


Scripts NSE

El Nmap Scripting Engine es donde Nmap se convierte en una potencia de reconocimiento. Los scripts viven en /usr/share/nmap/scripts/.

Categorías de Scripts

# Scripts predeterminados (seguros, ampliamente útiles)
nmap -sC 192.168.1.1

# Ejecutar script específico
nmap --script=http-title 192.168.1.1

# Múltiples scripts
nmap --script=http-title,http-headers 192.168.1.1

# Comodín por nombre
nmap --script=http-* 192.168.1.1

# Por categoría
nmap --script=vuln 192.168.1.1
nmap --script=auth 192.168.1.1
nmap --script=discovery 192.168.1.1
nmap --script=safe 192.168.1.1
nmap --script=intrusive 192.168.1.1

# Múltiples categorías
nmap --script="default and safe" 192.168.1.1
nmap --script="vuln or exploit" 192.168.1.1
nmap --script="not intrusive" 192.168.1.1

# Pasar argumentos a scripts
nmap --script=http-brute --script-args http-brute.path=/login 192.168.1.1

# Actualizar base de datos de scripts
nmap --script-updatedb

Scripts de Alto Valor por Caso de Uso

Enumeración SMB

nmap -p 445 --script=smb-enum-shares,smb-enum-users,smb-os-discovery 192.168.1.1
nmap -p 445 --script=smb-vuln-ms17-010 192.168.1.1   # EternalBlue
nmap -p 445 --script=smb-vuln-ms08-067 192.168.1.1
nmap -p 445 --script=smb2-security-mode 192.168.1.1

Enumeración HTTP

nmap -p 80,443 --script=http-title,http-headers,http-methods 192.168.1.1
nmap -p 80,443 --script=http-robots.txt 192.168.1.1
nmap -p 80,443 --script=http-sitemap-generator 192.168.1.1
nmap -p 80,443 --script=http-auth-finder 192.168.1.1
nmap -p 80,443 --script=http-vhosts --script-args http-vhosts.domain=example.com 192.168.1.1

SSL/TLS

nmap -p 443 --script=ssl-cert,ssl-enum-ciphers 192.168.1.1
nmap -p 443 --script=ssl-heartbleed 192.168.1.1         # Heartbleed
nmap -p 443 --script=ssl-poodle 192.168.1.1             # POODLE
nmap -p 443 --script=sslv2 192.168.1.1                  # SSLv2

DNS

nmap -p 53 --script=dns-zone-transfer --script-args dns-zone-transfer.domain=example.com 192.168.1.1
nmap -p 53 --script=dns-brute --script-args dns-brute.domain=example.com 192.168.1.1

SNMP

nmap -sU -p 161 --script=snmp-info,snmp-interfaces,snmp-processes 192.168.1.1
nmap -sU -p 161 --script=snmp-brute 192.168.1.1

FTP

nmap -p 21 --script=ftp-anon,ftp-bounce,ftp-brute 192.168.1.1

SSH

nmap -p 22 --script=ssh-auth-methods,ssh-hostkey 192.168.1.1
nmap -p 22 --script=ssh-brute 192.168.1.1

Bases de Datos

nmap -p 3306 --script=mysql-info,mysql-databases,mysql-empty-password 192.168.1.1
nmap -p 1433 --script=ms-sql-info,ms-sql-empty-password 192.168.1.1
nmap -p 5432 --script=pgsql-brute 192.168.1.1
nmap -p 27017 --script=mongodb-info 192.168.1.1
nmap -p 6379 --script=redis-info 192.168.1.1

Temporización y Rendimiento

Velocidad vs. sigilo. En un engagement, sabe cuál estás optimizando.

# T0 — Paranoico (5 min/sonda, evasión de IDS)
nmap -T0 192.168.1.1

# T1 — Sigiloso (15 seg de retardo entre sondas)
nmap -T1 192.168.1.1

# T2 — Educado (400ms de retardo)
nmap -T2 192.168.1.1

# T3 — Normal (predeterminado)
nmap -T3 192.168.1.1

# T4 — Agresivo (recomendado para CTFs e internos rápidos)
nmap -T4 192.168.1.1

# T5 — Insano (puede omitir resultados en redes lentas)
nmap -T5 192.168.1.1

# Control detallado
nmap --min-rate 100 192.168.1.0/24          # mínimo 100 paquetes/seg
nmap --max-rate 500 192.168.1.0/24          # máximo 500 paquetes/seg
nmap --min-parallelism 10 192.168.1.0/24    # mín sondas concurrentes
nmap --max-parallelism 100 192.168.1.0/24   # máx sondas concurrentes
nmap --host-timeout 30m 192.168.1.0/24      # omitir hosts lentos tras 30min
nmap --scan-delay 1s 192.168.1.1            # esperar 1s entre sondas
nmap --max-retries 1 192.168.1.1            # reducir reintentos

Consejo de laboratorio: Ejecuta Nmap desde un VPS en la nube para reducir la latencia de ida y vuelta en objetivos externos. Vultr y DigitalOcean ofrecen instancias de $5-6/mes en múltiples regiones — útil cuando necesitas baja latencia o quieres evitar exponer la IP de tu casa.


Evasión de Firewalls e IDS

Úsalos con cuidado. En un engagement autorizado, documenta qué evasión estás usando.

Fragmentación

# Fragmentar paquetes (fragmentos de 8 bytes)
nmap -f 192.168.1.1

# Doble fragmentación (16 bytes)
nmap -ff 192.168.1.1

# MTU personalizado (debe ser múltiplo de 8)
nmap --mtu 24 192.168.1.1

Señuelos

# Escaneo con IPs señuelo (ME = tu IP real)
nmap -D RND:5 192.168.1.1              # 5 señuelos aleatorios
nmap -D 10.0.0.1,10.0.0.2,ME 192.168.1.1

# Puertos fuente aleatorios
nmap --source-port 53 192.168.1.1      # parece tráfico DNS
nmap --source-port 443 192.168.1.1

Temporización

# Escaneo lento para evadir detección basada en tasa
nmap -T1 --scan-delay 5s 192.168.1.1

# Aleatorizar orden de objetivos (menos obvio por patrón)
nmap --randomize-hosts 192.168.1.0/24

Spoofing

# Falsificar IP fuente (no recibirás respuestas — úsalo con idle scan)
nmap -S 192.168.1.100 -e eth0 192.168.1.1

# Falsificar dirección MAC
nmap --spoof-mac 0 192.168.1.1            # MAC aleatoria
nmap --spoof-mac Apple 192.168.1.1        # prefijo de fabricante
nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

# Añadir datos aleatorios a los paquetes
nmap --data-length 25 192.168.1.1

Escaneo Idle/Zombie

La opción silenciosa — rebota paquetes a través de un host zombie. El zombie necesita estar inactivo con incrementos de IP ID predecibles.

# Primero encuentra un zombie
nmap -O -v --osscan-guess 192.168.1.50

# Escaneo idle a través del zombie
nmap -sI 192.168.1.50 192.168.1.1
nmap -sI 192.168.1.50:80 192.168.1.1    # especificar puerto del zombie

Formatos de Salida

Guarda siempre la salida. La necesitarás para reporting, comparaciones y para no tener que re-escanear.

# Salida normal
nmap -oN scan.txt 192.168.1.1

# Salida XML (analizable, importable a Metasploit/Faraday)
nmap -oX scan.xml 192.168.1.1

# Salida tipo grep (un host por línea)
nmap -oG scan.gnmap 192.168.1.1

# Los tres formatos a la vez
nmap -oA scan 192.168.1.1    # crea scan.nmap, scan.xml, scan.gnmap

# Script kiddie (leet)
nmap -oS scan.txt 192.168.1.1    # no uses esto en serio

# Salida verbosa
nmap -v 192.168.1.1
nmap -vv 192.168.1.1

# Salida de depuración
nmap -d 192.168.1.1
nmap -dd 192.168.1.1

# Razón del estado del puerto
nmap --reason 192.168.1.1

# Solo puertos abiertos
nmap --open 192.168.1.1

# Sin resolución DNS (más rápido)
nmap -n 192.168.1.1

# Siempre resolver DNS
nmap -R 192.168.1.1

# Rastreo de paquetes
nmap --packet-trace 192.168.1.1

# Reanudar escaneo interrumpido
nmap --resume scan.gnmap

Combinaciones Útiles

Estas son las combinaciones que realmente aparecen en las notas de engagement.

Barrido Interno Rápido

nmap -sn -PE -PP -PM -PS21,22,23,25,80,443,3389 -PU53,161 192.168.1.0/24 -oG hosts-up.gnmap

Escaneo TCP Completo de Puertos + Versión

nmap -sS -sV -p- --open -T4 -oA full-tcp 192.168.1.1

Top 1000 Puertos con Scripts Predeterminados

nmap -sS -sC -sV --top-ports 1000 -T4 -oA top1000 192.168.1.1

Host Individual Completo

nmap -A -p- --open -T4 --reason -oA full-host 192.168.1.1

Escaneo de Vulnerabilidades

nmap -sV --script=vuln -p- -T4 -oA vuln-scan 192.168.1.1

Enumeración Completa SMB

nmap -p 445 --script=smb-enum-shares,smb-enum-users,smb-enum-groups,smb-os-discovery,smb-security-mode,smb-vuln-ms17-010 -oA smb-enum 192.168.1.1

Reconocimiento de Servidor Web

nmap -p 80,443,8080,8443,8888 --script=http-title,http-headers,http-methods,http-robots.txt,http-auth-finder -sV -oA web-recon 192.168.1.0/24

UDP Top 20 (Rápido)

nmap -sU --top-ports 20 -T4 --open -oA udp-top20 192.168.1.1

Escaneo Externo Sigiloso

nmap -sS -T2 -f --data-length 25 --randomize-hosts -p 22,80,443 --open -oA stealth-external targets.txt

Procesamiento de Resultados

Extrae datos de los resultados de Nmap sin necesidad de re-escanear.

# Extraer puertos abiertos de la salida grep
grep 'open' scan.gnmap | awk '{print $2}' | sort -u

# Extraer IPs con puerto específico abierto
grep '80/open' scan.gnmap | awk '{print $2}'

# Obtener todos los puertos abiertos del grep para masscan/seguimiento
grep -oP '\d+/open' scan.gnmap | cut -d/ -f1 | sort -un | tr '\n' ','

# Parsear XML con Python
python3 -c "
import xml.etree.ElementTree as ET
tree = ET.parse('scan.xml')
for host in tree.findall('.//host'):
    ip = host.find('address').get('addr')
    for port in host.findall('.//port[@protocol=\"tcp\"]'):
        state = port.find('state').get('state')
        if state == 'open':
            print(f'{ip}:{port.get(\"portid\")}')
"

Nmap + Metasploit

El XML de Nmap se importa directamente a la base de datos de Metasploit.

# Importar escaneo a la BD de Metasploit
msf> db_import /path/to/scan.xml

# Ejecutar Nmap desde dentro de Metasploit
msf> db_nmap -sS -sV -p- 192.168.1.1

# Ver hosts
msf> hosts

# Ver servicios
msf> services
msf> services -p 445

Tarjeta de Referencia Rápida

TareaComando
Descubrimiento de hosts activosnmap -sn 192.168.1.0/24
Escaneo SYN top 1000nmap -sS 192.168.1.1
Los 65535 puertosnmap -p- 192.168.1.1
Detección de versionesnmap -sV 192.168.1.1
Scripts NSE predeterminadosnmap -sC 192.168.1.1
Detección de OSnmap -O 192.168.1.1
Escaneo agresivo completonmap -A 192.168.1.1
Escaneo de vulnerabilidadesnmap --script=vuln 192.168.1.1
Escaneo UDPnmap -sU 192.168.1.1
Guardar toda la salidanmap -oA output 192.168.1.1
Solo puertos abiertosnmap --open 192.168.1.1
Sin pingnmap -Pn 192.168.1.1
Rápido (T4)nmap -T4 192.168.1.1
Fragmentar paquetesnmap -f 192.168.1.1

Nmap vs. Alternativas

Nmap es el estándar, pero no siempre es la herramienta más rápida para cada tarea.

HerramientaMejor Para
NmapEscaneo integral, scripts NSE, resultados confiables
MasscanDescubrimiento rápido de puertos en rangos enormes (millones de IPs)
RustscanDescubrimiento rápido → envía automáticamente a Nmap para detección de servicios
ZmapEncuestas de internet de paquete único
ShodanReconocimiento pasivo sin tocar el objetivo

Flujo de trabajo práctico: Masscan o Rustscan para descubrimiento rápido → Nmap para detalle de servicios/scripts en los puertos descubiertos.


Entorno de Práctica

Si quieres practicar Nmap sin tocar objetivos reales:

  • TryHackMe — salas específicamente para práctica de Nmap, objetivos legales
  • Hack The Box — objetivos más realistas, las máquinas de Starting Point son buenas para práctica de reconocimiento
  • Tu propio laboratorio — levanta un VPS de $5 en Vultr o DigitalOcean , instala algunas VMs vulnerables, escanea a discreción

Un VPS en la nube también te permite ejecutar escaneos Nmap desde una IP conocida que controlas — útil cuando necesitas agregar un escáner a la lista blanca durante trabajo autorizado.


Novedades en 2026

  • Nmap 7.95+ se distribuyó con fingerprints de servicios actualizados que cubren implementaciones TLS más recientes y servicios cloud-native (servidores API de k8s, etc.)
  • La biblioteca NSE se expandió para detección de tiempos de ejecución de contenedores (docker-version, containerd-info)
  • Mejor manejo de servicios HTTP/2 y HTTP/3 — versiones antiguas de Nmap frecuentemente los detectaban como “open|filtered”
  • El soporte IPv6 es más estable; el flag -6 funciona de manera confiable en la mayoría de los tipos de escaneo ahora

Nmap existe desde 1997 y sigue siendo la primera herramienta que usas. Aprénde bien y será la última vez que tengas que buscar una flag.


Esta guía se actualiza regularmente. Guárdala en favoritos.

RedTeamGuide.com es financiado por sus lectores. Algunos enlaces son de afiliados — podemos ganar una comisión sin costo adicional para ti.