Cerramos el Módulo 2 con un mapa de superficie de ataque priorizado y con un nmap -sn que nos dijo qué hosts de 10.10.10.0/24 están vivos. Ahora empieza el Módulo 3 y toca mirar de verdad: de "estos hosts existen" pasamos a "estos puertos están abiertos en ellos". Un puerto abierto es una puerta que escucha; detrás de cada uno hay un servicio que, en las lecciones siguientes, identificaremos (03-02) y cruzaremos con vulnerabilidades conocidas (03-03).

Esta lección se centra en una sola pregunta, bien respondida: ¿qué puertos están abiertos en los objetivos autorizados? Veremos la teoría de TCP/UDP y los estados de puerto, los tipos de escaneo (SYN, connect, UDP, FIN/NULL/Xmas, ACK), el control de velocidad y la evasión básica de ruido —siempre dentro del alcance—, y cómo exprimir Nmap para descubrir puertos sin todavía interrogar a fondo los servicios. Antes de tocar nada, recordemos el encuadre: escaneamos solo las IPs y rangos del contrato, sabemos que un escaneo agresivo puede tumbar servicios y por eso se acuerdan ventanas, y documentamos cada comando lanzado.

Contenido

  1. Recordatorio de alcance: escanear no es inocuo
  2. TCP y UDP: cómo se descubre un puerto
  3. Los estados de puerto de Nmap
  4. Tipos de escaneo TCP y UDP
  5. Selección de puertos y objetivos
  6. Timing, velocidad y evasión de ruido
  7. Formatos de salida y documentación
  8. Escaneo de TechNova de principio a fin
  9. Alternativas rápidas: masscan y RustScan
  10. Contrapartida defensiva: cómo se detecta un escaneo
  11. Errores comunes y consejos
  12. Ejercicios
  13. Conclusión

  1. Recordatorio de alcance: escanear no es inocuo

Un escaneo de puertos genera tráfico real contra sistemas de producción. No es una consulta pasiva como el whois: estás enviando miles de paquetes a la infraestructura del cliente. Antes de la primera orden, tres reglas no negociables:

  • Scope estricto. Escanea solo las IPs y rangos que figuran por escrito en el contrato. En TechNova: la tienda y sus entornos expuestos, y la red interna 10.10.10.0/24. Un nmap contra una IP vecina no autorizada es, sencillamente, ilegal.
  • Impacto acordado. Un escaneo agresivo (-T5, escaneo UDP masivo, muchos hosts a la vez) puede saturar un firewall, disparar alarmas o tumbar servicios frágiles. Se acuerdan ventanas de escaneo (p. ej. de madrugada) y se avisa al contacto técnico.
  • Documentar todo. Cada comando, con su marca de tiempo y su salida, se guarda. Si un servicio se cae durante tu ventana, debes poder demostrar qué lanzaste exactamente.

Regla de oro: si dudas de si una IP está en el alcance, no la escanees y consulta las RoE.

  1. TCP y UDP: cómo se descubre un puerto

Descubrir puertos consiste en enviar paquetes y leer las respuestas. Los dos protocolos de transporte se comportan de forma muy distinta, y por eso se escanean distinto.

TCP es orientado a conexión: usa el three-way handshake (SYN → SYN/ACK → ACK). Ese handshake es lo que explotan los escáneres:

sequenceDiagram
    participant P as Pentester
    participant O as Objetivo
    Note over P,O: Puerto ABIERTO
    P->>O: SYN
    O->>P: SYN/ACK
    Note over P,O: Puerto CERRADO
    P->>O: SYN
    O->>P: RST

Si el puerto está abierto, responde SYN/ACK; si está cerrado, responde RST (reset); si un firewall filtra el paquete, normalmente no responde nada (o devuelve un ICMP de prohibido).

UDP no tiene handshake: es "dispara y olvida". Envías un datagrama y:

  • Si el puerto está cerrado, el sistema suele devolver un ICMP port unreachable (tipo 3, código 3).
  • Si está abierto, muchas veces no responde nada (a menos que el servicio conteste), lo que se confunde con "filtrado". Por eso el escaneo UDP es lento y ambiguo: Nmap tiene que esperar y reintentar.

  1. Los estados de puerto de Nmap

Nmap no dice solo "abierto/cerrado". Distingue seis estados, y entenderlos evita conclusiones erróneas:

Estado Significado Qué implica para el pentester
open Un servicio acepta conexiones Objetivo principal: hay algo escuchando
closed Responde, pero nada escucha El host está vivo; ese puerto no da servicio
filtered No hay respuesta; un firewall/filtro bloquea No se puede determinar; hay un cortafuegos delante
unfiltered Accesible pero Nmap no sabe si abierto (solo -sA) Útil para mapear reglas de firewall
open|filtered No se distingue abierto de filtrado (típico en UDP) Ambiguo; requiere sondas adicionales
closed|filtered No se distingue cerrado de filtrado (-sI) Poco frecuente

La distinción clave para el día a día es filtered vs closed: closed significa "el host respondió, pero ese puerto no tiene servicio"; filtered significa "algo (un firewall) se ha comido mi paquete". Confundirlos lleva a descartar puertos que en realidad están protegidos, no ausentes.

  1. Tipos de escaneo TCP y UDP

Cada técnica manipula las banderas TCP de forma distinta para obtener información. Comparativa de las principales:

Escaneo Flag Nmap Cómo funciona Sigiloso Requiere root Uso típico
SYN (half-open) -sS Envía SYN, no completa el handshake El estándar; rápido y discreto
Connect -sT Completa el handshake con connect() No No Sin privilegios; queda en logs
UDP -sU Datagramas UDP + ICMP unreachable Servicios UDP (DNS, SNMP, NTP)
FIN -sF Solo bandera FIN Evadir firewalls sin estado
NULL -sN Sin banderas Evadir firewalls sin estado
Xmas -sX FIN+PSH+URG (paquete "iluminado") Evadir firewalls sin estado
ACK -sA Solo ACK; no detecta abiertos Mapear reglas de firewall

Algunas notas prácticas:

  • -sS (SYN) es la opción por defecto cuando se ejecuta como root. Nunca completa la conexión (envía RST tras el SYN/ACK), por lo que muchas aplicaciones ni la registran. Es rápido y relativamente discreto.
  • -sT (connect) usa la llamada del sistema connect(); no necesita privilegios, pero completa la conexión, así que casi siempre aparece en los logs del servicio. Es la opción cuando no eres root.
  • FIN/NULL/Xmas se basan en un detalle del RFC 793: un puerto cerrado responde RST a estos paquetes "raros" y uno abierto los ignora. Solo funcionan contra pilas TCP que siguen el RFC (no Windows moderno) y sirven para colarse por firewalls sin estado. En una auditoría, se usan cuando el SYN se ve filtrado.
  • -sA (ACK) no busca puertos abiertos: busca saber qué filtra el firewall. Si un ACK recibe RST, el puerto está unfiltered (el firewall lo deja pasar); si no hay respuesta, está filtered. Es reconocimiento de reglas, no de servicios.

  1. Selección de puertos y objetivos

Por defecto Nmap escanea los 1000 puertos más comunes, no los 65535. Controlar qué puertos y qué objetivos tocas es esencial para ser eficiente y respetar el alcance.

# Puertos por defecto (los 1000 top) de un host de TechNova
nmap 10.10.10.15

# Un puerto concreto y un rango
nmap -p 80,443,8080 10.10.10.15
nmap -p 1-1024 10.10.10.15

# TODOS los puertos TCP (65535). Más lento pero completo
nmap -p- 10.10.10.15

# Los 100 puertos más frecuentes (rápido, buen primer barrido)
nmap -F 10.10.10.15

Para objetivos, Nmap acepta IPs sueltas, rangos, notación CIDR y ficheros:

# Toda la red interna autorizada
nmap 10.10.10.0/24

# Un rango concreto
nmap 10.10.10.15-55

# Desde la lista priorizada del recon (un host por linea)
nmap -iL hosts_vivos.txt

El fichero hosts_vivos.txt es precisamente el entregable del nmap -sn con el que cerramos el Módulo 2: los hosts que respondieron al ping sweep. Aquí lo reutilizamos como entrada.

  1. Timing, velocidad y evasión de ruido

La velocidad de escaneo es un equilibrio entre rapidez, sigilo y no romper nada. Nmap ofrece plantillas de temporización con -T0 a -T5:

Plantilla Nombre Velocidad Ruido/impacto Cuándo
-T0 paranoid Lentísima Mínimo Evasión extrema de IDS
-T1 sneaky Muy lenta Muy bajo Evasión de IDS
-T2 polite Lenta Bajo, poca carga Redes frágiles
-T3 normal Media (por defecto) Medio Uso general
-T4 aggressive Rápida Alto Redes rápidas y robustas
-T5 insane Máxima Muy alto, puede fallar Solo labs muy rápidos

En una auditoría profesional, -T3 o -T4 con una ventana acordada suele ser lo razonable. -T5 puede perder paquetes y tumbar dispositivos débiles; -T0/-T1 se reservan para pruebas de evasión de IDS explícitamente pactadas.

La evasión básica de ruido —siempre dentro del marco autorizado, como técnica para medir la capacidad de detección del cliente— incluye:

# Fragmentar los paquetes para dificultar el analisis del IDS
nmap -f 10.10.10.15

# Ralentizar y limitar la tasa de paquetes (menos ruidoso)
nmap -T2 --max-rate 50 10.10.10.15

# Anadir senuelos: mezclar tu IP con IPs falsas (autorizado y con cuidado)
nmap -D 10.10.10.101,10.10.10.102,ME 10.10.10.15

Importante: la evasión no sirve para "escanear sin permiso sin que se enteren". Se usa para evaluar si el IDS/IPS del cliente detecta técnicas evasivas, y siempre está en el contrato. Ocultar actividad no autorizada es un delito, no una técnica.

  1. Formatos de salida y documentación

Documentar es obligatorio. Nmap guarda resultados en varios formatos; el más útil para un informe es guardar en todos a la vez con -oA:

# Guarda en .nmap (legible), .xml (para herramientas) y .gnmap (grepeable)
nmap -sS -p- -T4 -oA technova_dev_tcp 10.10.10.15
  • .nmap: salida legible para humanos, para leer y pegar en el informe.
  • .gnmap: una línea por host, fácil de filtrar con grep (p. ej. extraer solo hosts con el 445 abierto).
  • .xml: entrada para otras herramientas (Metasploit, informes automáticos).

Con marca de tiempo en el nombre y estos tres ficheros por escaneo, tienes la trazabilidad que exige una auditoría seria.

  1. Escaneo de TechNova de principio a fin

Apliquemos todo a la lista priorizada. Empezamos por dev (10.10.10.15), que el recon marcó como entorno preproducción mal asegurado. Primero un barrido rápido de los puertos más comunes:

nmap -sS -F -T4 10.10.10.15
Starting Nmap 7.94 ( https://nmap.org ) at 2026-07-12 02:14 CEST
Nmap scan report for dev.technova.lab (10.10.10.15)
Host is up (0.0012s latency).
Not shown: 96 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql
8080/tcp open  http-proxy

Lectura línea a línea:

  • Host is up (0.0012s latency): el host responde; la latencia baja confirma que es local.
  • Not shown: 96 closed tcp ports (reset): de los 100 puertos del barrido rápido, 96 devolvieron RST (cerrados). El host está vivo y no filtra por defecto.
  • 22/tcp open ssh: SSH abierto, acceso remoto.
  • 80/tcp open http y 8080/tcp open http-proxy: dos servicios web (la app y probablemente un panel o proxy).
  • 3306/tcp open mysql: ¡una base de datos MySQL expuesta en un host de desarrollo! Un hallazgo jugoso que casa con el db-interno que priorizamos.

El barrido rápido puede dejarse puertos altos. Confirmamos con un escaneo completo de los 65535 puertos, guardando salida:

nmap -sS -p- -T4 -oA technova_dev_tcp 10.10.10.15
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
3306/tcp  open  mysql
8080/tcp  open  http-proxy
54321/tcp open  unknown

Aparece un 54321/tcp open unknown que el barrido rápido no cubría: un puerto no estándar, posiblemente una puerta trasera o un servicio de administración a medida. Justo el tipo de hallazgo que justifica el -p-. Aún no sabemos qué es: identificarlo es tarea de 03-02.

Como la tienda usa DNS y hay un controlador de red, conviene un vistazo a UDP en los puertos clave (no todos, sería lentísimo):

nmap -sU --top-ports 20 -T4 10.10.10.40
PORT     STATE         SERVICE
53/udp   open          domain
161/udp  open          snmp
123/udp  open|filtered ntp

El 161/udp open snmp es muy relevante: SNMP mal configurado es una mina de información interna (lo enumeraremos en 03-02). El open|filtered del NTP muestra la típica ambigüedad de UDP.

El resultado de esta lección es una tabla de puertos abiertos por host, la materia prima del resto del módulo:

Host Puertos TCP abiertos Puertos UDP relevantes
10.10.10.15 (dev) 22, 80, 3306, 8080, 54321
10.10.10.40 (db-interno) 22, 3306 53, 161
tienda.technova.lab 22, 80, 443

  1. Alternativas rápidas: masscan y RustScan

Para rangos muy grandes, Nmap puede ser lento. Dos herramientas complementarias, útiles como primer barrido que luego se refina con Nmap:

# masscan: rapidisimo, ideal para /16 o /8. Limita SIEMPRE la tasa
sudo masscan 10.10.10.0/24 -p1-65535 --rate 1000

# RustScan: descubre puertos a gran velocidad y encadena con nmap
rustscan -a 10.10.10.15 -- -sV

Precaución de impacto: masscan sin --rate puede lanzar millones de paquetes por segundo y saturar la red o el firewall del cliente. Se limita siempre la tasa y se acuerda la ventana. El patrón profesional es: masscan/RustScan para descubrir rápido qué puertos abren, y Nmap para el detalle de las lecciones siguientes.

  1. Contrapartida defensiva: cómo se detecta un escaneo

Escanear deja rastro, y un buen pentester entiende cómo lo verá el defensor (esto además sirve para escribir la parte de detección del informe):

  • Un IDS/IPS (Snort, Suricata) detecta escaneos por patrón: muchos SYN a puertos distintos desde una misma IP en poco tiempo dispara reglas de portscan. El escaneo SYN es discreto para la aplicación, pero no para un IDS de red.
  • Los firewalls con estado registran y pueden limitar conexiones por IP; un -T5 se nota enseguida.
  • Escaneos NULL/FIN/Xmas son anómalos por definición (paquetes que ningún cliente legítimo envía), así que un IDS moderno los marca como sospechosos.

Hardening que recomendaremos: cerrar todo lo no imprescindible (reduce la superficie que tu escaneo encuentra), segmentar la red, exponer solo lo necesario a Internet, y configurar el IDS/IPS para alertar y limitar escaneos. La mejor defensa contra el descubrimiento de puertos es no tener puertos abiertos que no hagan falta.

  1. Errores Comunes y Consejos

  • Escanear fuera del alcance. El error más grave y con consecuencias legales. Verifica cada IP contra las RoE antes de lanzar.
  • Fiarse solo del barrido por defecto. Los 1000 puertos top se dejan servicios en puertos altos (el 54321 de dev). Para hosts prioritarios, lanza -p-.
  • Olvidar UDP. Muchos escaneos son solo TCP y se pierden DNS, SNMP, NTP o TFTP. Escanea al menos los --top-ports UDP en hosts clave.
  • Confundir filtered con closed. filtered no es "no hay nada": es "hay un firewall". Interprétalo como presencia de defensa, no de ausencia de servicio.
  • Usar -T5 en producción. Puede tumbar dispositivos frágiles y perder resultados por paquetes descartados. -T3/-T4 con ventana acordada.
  • No guardar la salida. Sin -oA no hay trazabilidad. Guarda siempre, con marca de tiempo.
  • Consejo: empieza rápido y amplio (-F o masscan), identifica los hosts interesantes y profundiza solo en ellos con -p-. Ahorra tiempo y ruido.

  1. Ejercicios

Ejercicio 1. Quieres el barrido más completo posible de puertos TCP sobre el host dev de TechNova (10.10.10.15), guardando la salida en los tres formatos con el nombre base dev_full, a velocidad agresiva. Escribe el comando y explica cada opción.

Ejercicio 2. Un escaneo SYN (-sS) contra tienda.technova.lab devuelve todos los puertos como filtered, salvo el 80 y el 443. ¿Qué te dice eso sobre la máquina y su red? ¿Qué escaneo probarías para entender las reglas del firewall y por qué?

Ejercicio 3. Tu cliente te pide que evalúes si su IDS detecta escaneos "sigilosos" y te da una ventana de madrugada. Propón dos comandos Nmap orientados a bajo ruido / evasión y explica qué mide cada uno. Indica qué límite ético/legal no debes cruzar.

Soluciones

Solución 1.

nmap -sS -p- -T4 -oA dev_full 10.10.10.15
  • -sS: escaneo SYN (half-open), rápido y discreto, requiere root.
  • -p-: los 65535 puertos TCP, no solo los 1000 por defecto (así no se escapa el 54321).
  • -T4: temporización agresiva, adecuada para una red local robusta y una ventana acordada.
  • -oA dev_full: guarda en dev_full.nmap, dev_full.gnmap y dev_full.xml (trazabilidad completa).

Solución 2. Que casi todo esté filtered y solo 80/443 aparezcan open indica una máquina detrás de un firewall con estado que solo permite tráfico web entrante: el firewall se está "comiendo" los SYN a los demás puertos (por eso filtered, no closed). Para entender las reglas probarías un escaneo ACK (-sA): no busca puertos abiertos, sino distinguir qué puertos están filtered (sin respuesta) de los unfiltered (devuelven RST), lo que permite mapear qué deja pasar el firewall. Es reconocimiento de la política del cortafuegos, no de servicios.

Solución 3. Dos ejemplos válidos:

# 1) Escaneo lento y de baja tasa: mide si el IDS detecta actividad "a fuego lento"
nmap -sS -T1 --max-rate 20 10.10.10.0/24

# 2) Escaneo con fragmentacion: mide si el IDS reensambla y detecta paquetes fragmentados
nmap -sS -f 10.10.10.15

El primero evalúa la detección de escaneos lentos (por debajo de umbrales de tasa); el segundo, si el IDS reensambla fragmentos para ver el patrón de escaneo. Límite infranqueable: todo esto es válido solo porque el cliente lo ha autorizado por escrito y dentro de la ventana pactada. La evasión nunca sirve para escanear sistemas sin permiso "sin ser detectado": eso sería actividad ilícita, no una prueba.

Conclusión

Hemos convertido la lista de hosts vivos del recon en algo mucho más concreto: un inventario de puertos abiertos por host, obtenido de forma controlada, documentada y dentro del alcance. En el camino hemos entendido cómo TCP y UDP revelan sus puertos, los seis estados que distingue Nmap (con la distinción crucial filtered/closed), los tipos de escaneo y cuándo usar cada uno, y cómo ajustar velocidad y ruido sin romper nada ni cruzar líneas legales.

Fíjate en lo que todavía no sabemos: hemos visto que en dev el 3306/tcp está abierto y etiquetado como mysql, pero eso es solo la suposición de Nmap por número de puerto. No sabemos qué versión de MySQL corre, ni qué hay realmente detrás del 54321, ni qué servidor web sirve el puerto 80. Ese salto —de "el puerto está abierto" a "esto es exactamente el servicio X versión Y con esta información"— es el trabajo de la siguiente lección.

En 03-02 Enumeración de Servicios cogeremos esta tabla de puertos abiertos y, con detección de versiones (-sV), detección de sistema operativo y enumeración por protocolo (HTTP, SMB, SNMP, MySQL…), construiremos un inventario de servicios con versiones. Sabremos no solo dónde llama, sino quién abre la puerta.

© Copyright 2026. Todos los derechos reservados