Saltearse al contenido

Nmap a fondo

Nmap es la herramienta de escaneo de red por excelencia: descubre hosts, puertos, servicios, versiones, sistemas operativos y, con su motor de scripts (NSE), hasta vulnerabilidades. Dominar sus opciones es la diferencia entre un escaneo que tarda horas y es ruidoso, y uno rápido, preciso y adaptado a lo que necesitas. Es la herramienta central del recon activo (ver Reconocimiento activo).

nmap [tipo de escaneo] [opciones] [objetivo]
nmap -sS -sV -p- -T4 -oA salida 10.0.0.5

El flujo interno: descubrimiento de host (¿está vivo?) → escaneo de puertos (¿qué está abierto?) → detección de servicio/versión → NSE.

nmap -sn 10.0.0.0/24 # ping sweep (solo descubrir vivos, sin escanear puertos)
nmap -Pn 10.0.0.5 # saltar descubrimiento (asumir vivo; útil si bloquea ICMP)
nmap -PS22,80,443 10.0.0.0/24 # descubrir por SYN a puertos concretos

-Pn es clave cuando el host no responde a ping pero sí tiene servicios.

-sS SYN scan (por defecto como root): rápido, "sigiloso" (no completa el handshake)
-sT TCP connect: sin privilegios (completa la conexión, más ruidoso)
-sU UDP scan: lento pero necesario (DNS 53, SNMP 161, etc.)
-sA ACK scan: mapear reglas de firewall (filtrado vs no filtrado)
-p- los 65535 puertos TCP
-p 80,443,8080 puertos concretos
--top-ports 100 los 100 más comunes
-F fast (top 100)
-T0..-T5 timing: T0 paranoico (evasión) ... T5 insane (rápido, ruidoso)
--min-rate 1000 paquetes por segundo mínimos

Flujo típico eficiente: primero -p- --min-rate para encontrar abiertos rápido, luego -sV -sC solo sobre esos puertos.

-sV versiones de los servicios (banner + probes)
-sV --version-intensity 9 más agresivo
-O detección de sistema operativo
-A agresivo: -sV -O -sC --traceroute (todo junto, ruidoso)

NSE lleva a Nmap de “qué hay” a “qué puedo hacer con ello”:

-sC scripts por defecto (seguros, informativos)
--script=vuln buscar vulnerabilidades conocidas
--script=smb-enum-shares,smb-os-discovery -p445 target
--script=http-enum,http-title -p80,443 target
--script=ftp-anon,ssh-auth-methods target
--script-help=<script> qué hace un script
# categorías: safe, default, discovery, vuln, exploit, brute, auth
-oA base guarda en los 3 formatos (.nmap, .gnmap, .xml)
-oN / -oG / -oX normal / grepeable / XML
-v / -vv verbosidad --open solo mostrar puertos abiertos

El .gnmap es ideal para extraer con grep los puertos/hosts y alimentar otras herramientas.

-T2 / -T1 más lento = menos detectable
-f fragmentar paquetes
-D RND:5 señuelos (decoys) para ofuscar el origen
--source-port 53 origen desde un puerto "de confianza"
--data-length 50 añadir datos aleatorios

Un IDS verá un -T5 -A -p- al instante; un escaneo lento y fragmentado pasa más desapercibido (ver Evasión de firewalls e IDS).

Detección: un host conectando a muchos puertos de muchos destinos en poco tiempo (firma de escaneo), SYN sin completar handshake, probes de NSE conocidos. Mitigación: IDS/IPS (Suricata/Snort con reglas de port-scan), rate-limiting, segmentación, y no exponer servicios innecesarios. Un escaneo bien detectado delata al atacante antes de que explote nada.

  • Descubrir hosts vivos (-sn) o asumirlos (-Pn)
  • Escaneo completo de puertos TCP (-p- con —min-rate)
  • Puertos UDP clave (-sU —top-ports)
  • Detección de versión y SO (-sV -O) sobre los abiertos
  • NSE por servicio (smb, http, ftp…) y —script=vuln
  • Guardar en los 3 formatos (-oA) para grep/informe
  • Aplicar timing/evasión si el sigilo importa
  • Alimentar otras herramientas con los resultados