the_open_door
café
ESEN
← Volver al índice

Port Scanning (Nmap)

Antes de atacar nada hay que saber qué escucha en la máquina. Un puerto TCP/UDP abierto es un servicio esperando conexiones, y cada servicio es una superficie de ataque potencial. El escaneo de puertos es el primer paso de todo el proceso, y la forma de hacerlo condiciona lo que se encuentra: un escaneo pobre deja servicios sin ver y cierra vías antes de empezar.

La estrategia estándar son dos fases: un barrido rápido de los 65535 puertos para descubrir cuáles están abiertos y, sobre esos (y solo esos), un escaneo dirigido y más lento que identifica el servicio y su versión. Descubrir es barato; perfilar es caro, así que se perfila solo lo que existe.

# Fase 1: barrido completo de los 65535 puertos TCP, rápido
sudo nmap -sS -n -Pn -p- --min-rate 5000 --open 10.10.10.10

# Fase 2: sobre los puertos abiertos, servicio + versión + scripts por defecto
nmap -p22,80,445 -sCV 10.10.10.10 -oN targetedScan

Qué hace cada flag (y por qué).

El escaneo UDP: por qué y cuándo. Los servicios que hablan UDP no aparecen en ningún escaneo TCP, por muy completo que sea, así que una máquina puede parecer casi vacía y tener el vector escuchando ahí. Para verlos hace falta -sU:

sudo nmap -sU -n -Pn --top-ports 100 --min-rate 5000 10.10.10.10

Es mucho más lento que el TCP, y la razón está en el protocolo: TCP tiene handshake, así que un SYN siempre provoca respuesta (SYN/ACK abierto, RST cerrado) y el estado se decide con un paquete. UDP no tiene nada de eso: si el puerto está abierto, lo normal es que el servicio no conteste a un paquete vacío, y el silencio es idéntico al de un puerto filtrado por un cortafuegos. nmap tiene que esperar timeouts y reintentar, y depende de que llegue un ICMP port unreachable para marcar "cerrado" (mensaje que además suele estar limitado en frecuencia). De ahí que aparezcan tantos open|filtered: no es un fallo del escaneo, es que sin respuesta no se puede distinguir.

Por eso no se barren los 65535 puertos UDP: se lanza un --top-ports (100 o 1000) a la vez que el TCP, y se mira con más detalle si el TCP no da vector. Lo que vive ahí merece la pena: SNMP en 161 (con comunidad public filtra usuarios, procesos y a veces credenciales), DNS en 53, NTP en 123, TFTP en 69 (sin autenticación), mDNS en 5353, IKE/IPsec en 500, y el 111 de rpcbind que delata NFS. En un controlador de dominio el trío 53/123/389 es prácticamente una firma.

La regla práctica: el barrido UDP corto va siempre, y cuando el TCP no ofrece vector, el UDP deja de ser opcional.

Por qué importa. El escaneo es la base de todo lo que viene después: cada puerto abierto es una hipótesis de ataque. Saltarse -p- o -Pn es la causa más común de un pentest que se atasca "sin vector": el vector estaba en un puerto que nunca se llegó a mirar. Y la fase de versión (-sV) no es un trámite, es la que convierte "hay algo en el 8080" en "hay un Tomcat 9.0.30 vulnerable a X".

Cómo detectarlo. Un escaneo deja una firma de red clara: muchos intentos de conexión a puertos numerosos o secuenciales desde una sola IP en pocos segundos. El SYN scan (-sS) se delata por SYN sin el ACK final (conexiones medio abiertas) y una ráfaga de RST; el barrido UDP, por una tanda de ICMP port unreachable. Los IDS/IPS (Suricata/Snort/Zeek) traen umbrales de port scan para esto, y el cortafuegos registra los múltiples puertos denegados desde el mismo origen. Un --min-rate alto y -p- hacen el patrón aún más evidente.

Defensa. Reducir la superficie: exponer solo los puertos imprescindibles, filtrar el resto en el cortafuegos y no confiar en la oscuridad de un puerto alto. La detección de versión se alimenta de los banners: minimizarlos (o falsearlos) ralentiza al atacante, aunque no lo detiene.

Herramientasnmapmasscan

Máquinas donde se aplica