Conceptos

Escaneo de puertos

#network#recon

Técnica de reconocimiento que identifica qué puertos están abiertos en un host y qué servicios podrían estar escuchando (p.ej., SSH/22, HTTP/80). Es una base para enumeración y evaluación…

Definición

Técnica de reconocimiento que identifica qué puertos están abiertos en un host y qué servicios podrían estar escuchando (p.ej., SSH/22, HTTP/80). Es una base para enumeración y evaluación de superficie de ataque.

Contexto

  • Un puerto “abierto” sugiere un servicio accesible; “cerrado” suele indicar que el host responde pero no hay servicio; “filtrado” sugiere que un firewall/ACL bloquea o no responde.
  • Se usa en inventario defensivo (blue team) y en recon ofensivo (red team) siempre con autorización.

Desarrollo (MIT-style)

Qué se escanea realmente

  • TCP: estado de puertos (SYN/ACK, RST) y handshake.
  • UDP: más difícil (muchos servicios no responden); se infiere por ICMP “port unreachable” o por respuestas específicas.

Estados de puertos (Nmap)

  • open: servicio escuchando.
  • closed: sin servicio, pero accesible (no bloqueado).
  • filtered: no se puede determinar (firewall/ACL filtra).
  • unfiltered: accesible, pero Nmap no puede concluir open/closed (típico en -sA).
  • open|filtered: Nmap no distingue entre abierto o filtrado (común en UDP).
  • closed|filtered: Nmap no distingue entre cerrado o filtrado.

Banderas TCP (contexto rápido)

  • SYN inicia el handshake; ACK confirma; RST resetea; FIN finaliza.
  • PSH solicita entrega rápida a la app; URG marca datos urgentes.

Tipos comunes

  • TCP SYN scan (“half-open”): envía SYN, interpreta SYN/ACK vs RST; reduce logging en algunos casos, pero no es invisible.
  • TCP connect scan: completa handshake; más ruidoso.
  • UDP scan: más lento y propenso a falsos negativos/positivos.
  • Service/version detection: tras detectar puerto abierto, intenta identificar versión (banner, probes).

Escaneos TCP avanzados (Nmap)

  • Null (-sN): sin flags; RST = cerrado, sin respuesta = open|filtered.
  • FIN (-sF): FIN activado; RST = cerrado, sin respuesta = open|filtered.
  • Xmas (-sX): FIN+PSH+URG; mismo criterio que null/FIN.
  • Maimon (-sM): FIN+ACK; útil en algunos BSD antiguos.
  • ACK (-sA): mapea reglas de firewall (unfiltered/filtered), no servicios.
  • Window (-sW): similar a ACK, observa ventana TCP para inferir estado.
  • Custom (--scanflags): combinación manual de flags.

Evasión / mapeo de defensas

  • ACK/Window ayudan a inferir políticas de firewall, no puertos abiertos.
  • Fragmentación (-f/-ff / --mtu) intenta evadir inspección básica.
  • Spoofing (-S, --spoof-mac) y decoys (-D) para ofuscar origen.
  • Idle scan (-sI) usa un host “zombi” para ocultar el origen real.
  • No garantiza evasión frente a firewalls stateful o IDS modernos.

Escaneos Nmap básicos

  • -sT TCP connect (único posible sin privilegios).
  • -sS TCP SYN (requiere root/sudo).
  • -sU UDP (lento; suele devolver open|filtered).

Interpretación práctica (simplificada)

  • Open: hay servicio escuchando y accesible.
  • Closed: el host responde, pero no hay servicio en ese puerto.
  • Filtered: no se puede determinar (bloqueo/ACL, sin respuesta).

OPSEC / ruido

  • Más velocidad (-T4) y rango grande = más ruido y más probabilidad de detección/bloqueo.
  • Escaneos a puertos “raros” suelen disparar alertas.

Ejemplos

  • Descubrir hosts vivos en una subred (luego escanear puertos).
  • Escanear todos los puertos TCP de un host crítico para inventario de exposición.

Pitfalls / Errores comunes

  • Confundir “filtrado” con “cerrado”.
  • Concluir “no hay servicio” en UDP por falta de respuesta (puede ser open|filtered).
  • Escanear sin ventana/permiso y activar bloqueos o incidentes.
  • No correlacionar con contexto (VPN, NAT, ACLs) y sacar conclusiones erróneas.
  • Tomar “open|filtered” o “closed|filtered” como conclusiones definitivas sin más pruebas.
  • Asumir que ACK/Window indican servicios (muestran reglas de firewall).

Diagrama

sequenceDiagram
participant S as Scanner
participant H as Host
S->>H: TCP SYN (port X)
alt Open
H-->>S: SYN/ACK
S->>H: RST (cierre)
else Closed
H-->>S: RST
else Filtered
H-->>S: (sin respuesta / ICMP)
end

Integración con herramientas

  • Ejemplos prácticos: Nmap

Referencias

  1. https://nmap.org/book/man-port-scanning-basics.html
  2. https://nmap.org/book/man.html
Título original en mis apuntes: Port Scanning