Aprende › Redes, WiFi y pivoting

Escaneo de puertos con Nmap: guía práctica desde cero

· 10 min de lectura

Aprende qué es un puerto, cómo funciona un escaneo, qué significan los estados abierto, cerrado y filtrado, los tipos de escaneo y opciones más útiles de Nmap, cómo leer los resultados en un laboratorio y cómo reducir la superficie que expones a internet.

Antes de atacar o defender un sistema, hay que saber qué tiene expuesto: qué servicios escuchan, en qué puertos, con qué versiones. Ese es el primer paso de cualquier prueba de penetración y también de cualquier revisión defensiva, y la herramienta estándar para hacerlo es Nmap (Network Mapper), un escáner libre y gratuito que lleva más de dos décadas siendo la referencia.

En casi todos los laboratorios de whoami-labs el trabajo empieza igual: una IP y un escaneo. De lo que encuentres ahí depende todo lo demás. Por eso entender bien Nmap, y sobre todo saber leer lo que te dice, es una de las habilidades más importantes que puedes aprender.

En esta lección vas a ver qué es un puerto, cómo funciona un escaneo por dentro, qué significan los estados que muestra Nmap, las opciones que más vas a usar, un flujo de reconocimiento completo en un laboratorio y cómo se reduce lo que un escaneo puede descubrir de tus sistemas.

Escanea solo sistemas propios o en entornos autorizados, como los laboratorios de whoami-labs. Escanear redes ajenas sin permiso puede ser ilegal y suele violar las condiciones de tu proveedor de internet.

Qué es un puerto y qué hace un escaneo#

Una dirección IP identifica una máquina; un puerto identifica un servicio dentro de esa máquina. Hay 65.535 puertos TCP y otros tantos UDP. Por convención, ciertos servicios usan puertos conocidos: 22 para SSH, 80 para HTTP, 443 para HTTPS, 445 para SMB, 3306 para MySQL.

Un escaneo de puertos consiste en intentar conectar con muchos puertos de una máquina y observar cómo responde cada uno. Las respuestas revelan qué servicios están activos, cuáles están cerrados y cuáles están protegidos por un firewall.

Estados de un puerto según la respuesta al paquete SYN: abierto, cerrado y filtrado
Estados de un puerto según la respuesta al paquete SYN: abierto, cerrado y filtrado

La mayoría de escaneos TCP se basan en el saludo de tres pasos (three-way handshake) con el que empieza toda conexión: el cliente envía SYN, el servidor responde SYN/ACK si el puerto está abierto, y el cliente confirma con ACK. Según lo que responda la máquina al primer paquete, Nmap clasifica el puerto.

Los estados de un puerto#

EstadoQué significaQué responde la máquina
openHay un servicio escuchandoSYN/ACK en TCP
closedNo hay servicio, pero la máquina respondeRST en TCP
filteredUn firewall bloquea; no se sabe si hay servicioNada, o un error ICMP de «inalcanzable»
unfilteredAccesible, pero no se sabe si está abiertoAparece en escaneos ACK
open/filteredNo se puede distinguir entre abierto y filtradoTípico en UDP, donde muchos servicios no responden

Los puertos abiertos son tu mapa de ataque. Los filtrados te dicen que hay un firewall, lo que también es información útil.

Tipos de escaneo más usados#

OpciónNombreCuándo usarla
-sSSYN scan («medio abierto»)El escaneo por defecto con privilegios de root: rápido y no completa la conexión
-sTConnect scanSin privilegios de root; completa la conexión, más visible en los registros
-sUUDP scanPara servicios UDP como DNS (53), SNMP (161) o TFTP (69); es lento
-sVDetección de versionesPregunta a cada servicio abierto qué software y versión es
-sCScripts por defectoEjecuta scripts NSE seguros que obtienen información extra
-ODetección de sistema operativoIntenta adivinar el sistema por su forma de responder
-AAgresivoCombina -sV, -sC, -O y traceroute
-snDescubrimiento de equiposSolo averigua qué máquinas están vivas, sin escanear puertos

Las opciones que más vas a usar#

# Escaneo rápido de los 1000 puertos más comunes
nmap IP_DEL_LAB

# Todos los puertos TCP (los servicios no siempre están en puertos estándar)
nmap -p- IP_DEL_LAB

# Puertos concretos, con versiones y scripts por defecto
nmap -p 22,80,445 -sV -sC IP_DEL_LAB

# Más velocidad en una red de laboratorio
nmap -p- --min-rate 2000 -T4 IP_DEL_LAB

# No intentar descubrir si el equipo está vivo (cuando bloquea ping)
nmap -Pn IP_DEL_LAB

# Guardar los resultados en los tres formatos (normal, XML y grepable)
nmap -p- -sV -sC -oA escaneo_lab IP_DEL_LAB

La opción -T controla la velocidad, de -T0 (muy lento y sigiloso) a -T5 (muy rápido y agresivo). En laboratorios se suele usar -T4; en redes reales, velocidades altas pueden saturar equipos o disparar alertas.

Los scripts NSE#

El Nmap Scripting Engine (NSE) incluye cientos de scripts para obtener información adicional: listar recursos compartidos SMB, comprobar si un FTP acepta acceso anónimo, leer títulos de páginas web o buscar configuraciones débiles.

# Scripts de una categoría
nmap --script "default and safe" -p 21,80,445 IP_DEL_LAB

# Un script concreto: ¿el FTP permite acceso anónimo?
nmap --script ftp-anon -p 21 IP_DEL_LAB

# Enumerar recursos compartidos SMB
nmap --script smb-enum-shares -p 445 IP_DEL_LAB

Las categorías más útiles para empezar son default, safe, discovery y version. Evita las categorías intrusive, brute o dos fuera de un laboratorio.

Flujo de reconocimiento en un laboratorio#

Este es el flujo que se usa en la mayoría de laboratorios de whoami-labs. Divide el trabajo en dos fases para ir rápido y no perder nada.

Paso 1: descubrir todos los puertos abiertos#

sudo nmap -p- --min-rate 2000 -T4 -oN puertos.txt IP_DEL_LAB

Esta fase solo busca qué puertos están abiertos, en los 65.535 puertos TCP. Suele tardar uno o dos minutos en un laboratorio.

Paso 2: estudiar a fondo solo esos puertos#

Con la lista de puertos abiertos, lanza el escaneo detallado únicamente sobre ellos:

sudo nmap -p 21,22,80,8080 -sV -sC -oA detalle IP_DEL_LAB

Paso 3: leer el resultado#

Un resultado típico se parece a esto:

PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu
80/tcp   open  http    Apache httpd 2.4.41
|_http-title: Panel de gestión interna
8080/tcp open  http    Apache Tomcat 9.0.30

Cada línea es una pista para el siguiente paso:

  • FTP con acceso anónimo: conéctate y revisa si hay archivos con credenciales.
  • SSH: guarda la versión; normalmente se usará más adelante con credenciales encontradas.
  • HTTP con un panel: abre la web, revisa el código fuente y busca directorios ocultos.
  • Tomcat: revisa si el gestor (/manager) usa credenciales por defecto.

Paso 4: investigar las versiones#

Con el software y la versión exactos, busca vulnerabilidades conocidas en fuentes como el NVD o Exploit-DB, o con searchsploit en Kali. Recuerda que una versión antigua no garantiza que sea vulnerable: las distribuciones a veces aplican parches sin cambiar el número de versión.

Flujo de reconocimiento: descubrir todos los puertos, estudiar los abiertos y decidir el siguiente paso por servicio
Flujo de reconocimiento: descubrir todos los puertos, estudiar los abiertos y decidir el siguiente paso por servicio

Descubrir los equipos de una red#

En muchos ejercicios no te dan una IP, sino una red entera, y primero hay que averiguar qué máquinas están encendidas. Para eso existe el descubrimiento de equipos (host discovery), que no escanea puertos: solo pregunta quién responde.

# ¿Qué equipos están vivos en la red 192.168.56.0/24?
sudo nmap -sn 192.168.56.0/24

# Guardar solo las IP encontradas, una por línea
sudo nmap -sn 192.168.56.0/24 -oG - | awk '/Up$/{print $2}' > vivos.txt

# Escanear después todos esos equipos
sudo nmap -sV -iL vivos.txt

En una red local, Nmap usa peticiones ARP, que son muy fiables porque ningún equipo puede ignorarlas sin dejar de funcionar en la red. Fuera de la red local combina pings ICMP con intentos de conexión a puertos comunes. Si una máquina bloquea todo eso, aparecerá como caída aunque esté encendida: en ese caso, -Pn le indica a Nmap que la escanee igualmente.

Las notaciones de rangos más útiles son 192.168.56.0/24 (las 256 direcciones de esa red), 192.168.56.10-50 (un intervalo) y -iL archivo.txt (una lista de objetivos).

Nmap y otras herramientas de escaneo#

Nmap no es la única opción, aunque sí la más completa. Conviene conocer las alternativas para saber cuándo usar cada una:

HerramientaPunto fuerteCuándo usarla
NmapDetección de versiones, scripts NSE, salida detalladaCasi siempre: es la referencia
MasscanVelocidad extrema en rangos enormesBarridos de redes muy grandes, solo para encontrar puertos abiertos
RustScanDescubre puertos muy rápido y luego llama a NmapLaboratorios donde quieres la fase 1 en segundos
NetcatProbar a mano un puerto concretoComprobar un servicio puntual o hablar con él directamente

Un patrón habitual es usar una herramienta rápida para encontrar los puertos abiertos y Nmap para estudiarlos en detalle, exactamente el mismo flujo de dos fases que viste antes.

Qué revela un escaneo a un atacante#

InformaciónPara qué la usa
Puertos y servicios abiertosElegir por dónde empezar
Versiones de softwareBuscar vulnerabilidades conocidas
Sistema operativoAjustar técnicas y exploits
Configuraciones débiles (FTP anónimo, SMB sin contraseña)Acceder sin explotar nada
Servicios internos expuestos por errorBases de datos, paneles o APIs que no deberían verse desde fuera

Cómo reducir lo que se puede descubrir#

En esta lección, «corregir» significa reducir la superficie expuesta: que un escaneo encuentre lo mínimo posible.

Exponer solo lo necesario#

Revisa qué escucha cada servidor y desactiva lo que no usas:

# Ver qué servicios escuchan en un servidor Linux propio
sudo ss -tulpn

Las bases de datos, paneles de administración y servicios internos deben escuchar solo en 127.0.0.1 o en la red interna, nunca en una IP pública.

Firewall por defecto en denegar#

Configura el firewall para bloquear todo lo entrante salvo los puertos imprescindibles. En Ubuntu, por ejemplo, con ufw:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Mantener el software actualizado y discreto#

  • Aplica actualizaciones de seguridad con regularidad.
  • Evita que los servicios anuncien su versión exacta cuando sea posible (por ejemplo, ServerTokens Prod en Apache).
  • Retira paneles de administración de internet o protégelos con VPN.

Detectar escaneos#

Los sistemas de detección de intrusos como Suricata o Snort, y servicios como fail2ban para intentos repetidos, ayudan a ver y frenar escaneos y ataques automatizados. Escanea tú mismo tus sistemas con regularidad: es la forma de saber qué ve un atacante antes que él.

Errores comunes#

  • Escanear solo los 1.000 puertos por defecto. Muchos servicios escuchan en puertos altos; usa -p-.
  • Olvidar UDP. Servicios como SNMP o TFTP solo aparecen con -sU.
  • Confiar ciegamente en la versión detectada. Es una estimación; confirma antes de sacar conclusiones.
  • Ir demasiado rápido en redes reales. Velocidades altas pueden tumbar equipos frágiles o perder resultados.
  • No guardar los resultados. Usa -oA para poder revisarlos y compararlos después.

Preguntas frecuentes#

¿Es ilegal usar Nmap?#

La herramienta es legal y la usan administradores de todo el mundo. Lo que puede ser ilegal es escanear sistemas sin autorización. Practica en tus propias máquinas y en laboratorios como los de whoami-labs.

¿Por qué hay que usar sudo con algunos escaneos?#

El escaneo SYN (-sS) y la detección de sistema operativo necesitan crear paquetes a bajo nivel, algo que solo puede hacer un usuario con privilegios. Sin ellos, Nmap usa el escaneo de conexión completa (-sT).

¿Qué diferencia hay entre filtered y closed?#

closed significa que la máquina respondió que no hay servicio en ese puerto. filtered significa que no hubo respuesta clara porque algo (normalmente un firewall) bloquea el paquete.

¿Cuánto tarda un escaneo de todos los puertos?#

Depende de la red y de la velocidad. En un laboratorio local con --min-rate suele ser cuestión de uno o dos minutos; en internet o con firewalls que descartan paquetes puede tardar mucho más.

¿Qué hago después del escaneo?#

Investigar cada servicio abierto: abrir las webs, probar accesos anónimos, buscar versiones vulnerables y enumerar más a fondo. El escaneo no es el fin, es el mapa.

Resumen#

  • Un puerto identifica un servicio; un escaneo descubre qué puertos responden y cómo.
  • Nmap clasifica los puertos como open, closed o filtered, entre otros estados.
  • El flujo eficaz en un laboratorio es: todos los puertos primero (-p-) y detalle solo de los abiertos (-sV -sC).
  • Cada servicio y versión encontrada es una pista para el siguiente paso.
  • La defensa consiste en exponer lo mínimo, firewall por defecto en denegar, software actualizado y detección de escaneos.

Fuentes y lecturas recomendadas#

Practícalo en estos laboratorios

Ver todos los laboratorios de esta categoría