Reconocimiento y enumeración con Nmap: guía práctica para principiantes en pentesting

Introducción al pentesting y Nmap

El reconocimiento y enumeración con Nmap es uno de los pilares fundamentales del pentesting (pruebas de penetración). Antes de intentar explotar una vulnerabilidad, necesitas recopilar información del objetivo: ¿qué puertos están abiertos? ¿qué servicios corren? ¿qué versión? ¿es Windows o Linux? Sin esa información, cualquier intento de ataque es como disparar a ciegas.

El pentesting se divide en varias fases, pero las dos primeras —reconocimiento y enumeración— son críticas. Y Nmap es la navaja suiza para realizarlas.

🎯 Laboratorio real: Este artículo está basado en escaneos reales contra Metasploitable 2 (IP 192.168.100.149), una máquina vulnerable diseñada para practicar. Si aún no tienes tu propio laboratorio, te recomiendo seguir primero mi guía: Cómo montar un laboratorio de pentesting. Allí explico paso a paso cómo tener tu máquina lista.

¿Qué es el reconocimiento en ciberseguridad?

Es el proceso de recopilar información sobre un sistema objetivo. Puede ser:

  • Pasivo: sin interactuar directamente con el objetivo (ej. búsquedas en redes sociales, whois, Google dorks).
  • Activo: interactuando directamente, como cuando haces un escaneo con Nmap.

La información que buscamos incluye direcciones IP, puertos abiertos, servicios disponibles, etc.

¿Qué es la enumeración?

La enumeración va un paso más allá. No se conforma con saber que hay un servicio en el puerto 80; quiere saber qué versión de Apache, qué directorios están expuestos, qué usuarios existen, si hay recursos compartidos accesibles. Es la diferencia entre saber que hay una puerta y saber qué tipo de cerradura tiene.

¿Qué es Nmap y por qué es esencial?

Nmap (Network Mapper) es una herramienta de código abierto creada por Gordon Lyon (Fyodor). Lleva más de 20 años siendo el estándar de facto para el descubrimiento de redes y auditoría de seguridad

Características principales

  • Escaneo de puertos (TCP, UDP, SCTP…)
  • Detección de servicios y versiones (-sV)
  • Identificación de sistemas operativos (-O)
  • Motor de scripts (NSE) que permite automatizar desde detección de vulnerabilidades hasta enumeración avanzada
  • Escaneo rápido y eficiente, con múltiples técnicas de evasión

Casos de uso en pentesting

  • Auditorías de seguridad internas y externas
  • Descubrimiento de activos en una red
  • Identificación de servicios con versiones obsoletas
  • Pruebas de cumplimiento (PCI DSS, ISO 27001…)
  • Fase de reconocimiento para pruebas de intrusión autorizadas

Instalación y primeros pasos con Nmap

Instalación en Linux, Windows y macOS

  • Linux (Debian/Ubuntu):
sudo apt update && sudo apt install nmap -y
  • Windows/macOS: Descarga el instalador desde nmap.org y ejecútalo.

Primer escaneo y cómo interpretarlo (con un ejemplo real)

Vamos a realizar nuestro primer escaneo activo contra Metasploitable. Usaremos el escaneo SYN (-sS), que es rápido y discreto, y pediremos versión de servicios (-sV) y detección de sistema operativo (-O).

sudo nmap -sS -sV -O 192.168.100.149

Resultado real (basado en el laboratorio:

Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-05 20:48 +0200
Nmap scan report for 192.168.100.149
Host is up (0.0010s latency).
Not shown: 977 closed tcp ports (reset)
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp   open  telnet      Linux telnetd
25/tcp   open  smtp        Postfix smtpd
53/tcp   open  domain      ISC BIND 9.4.2
80/tcp   open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp  open  rpcbind     2 (RPC #100000)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3306/tcp open  mysql       MySQL 5.0.51a-3ubuntu5
5432/tcp open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open  vnc         VNC (protocol 3.3)
6667/tcp open  irc         UnrealIRCd
MAC Address: 52:54:00:25:62:42 (QEMU virtual NIC)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.9 - 2.6.33

¿Qué nos dice esto?

  • Puerto 21 (vsftpd 2.3.4): Una versión muy antigua de FTP que tiene una backdoor famosa. Si ves esto en un cliente real, saltan todas las alarmas.
  • Puerto 22 (OpenSSH 4.7p1): SSH antiguo (2007), vulnerable a varias CVEs. En un sistema moderno deberías ver OpenSSH 8.x o 9.x.
  • Puerto 23 (telnet): Telnet envía contraseñas en texto plano. Nadie debería usarlo hoy.
  • Puerto 80 (Apache 2.2.8): Versión obsoleta de 2008. Llena de vulnerabilidades conocidas.
  • Sistema operativo: Linux kernel 2.6 (anterior a 2011). Muy desactualizado.

💡 Consejo: No te asustes si al principio ves mucha información. Concéntrate en la columna VERSION. Una versión moderna suele ser segura; una versión muy antigua es una bandera roja. Nmap te está diciendo exactamente por dónde podrías atacar (en un entorno autorizado, claro).

Tipos de escaneo en Nmap

Cada tipo de escaneo tiene sus ventajas y desventajas. Vamos a ver los tres que más usarás.

Escaneo SYN (Stealth Scan) - -sS

Es el favorito de los pentesters porque es rápido y menos detectable que otros. No completa la conexión TCP (envía SYN, recibe SYN-ACK y responde RST), por lo que muchas aplicaciones no lo registran.

sudo nmap -sS 192.168.100.149
  • Requiere privilegios de administrador (sudo).

Escaneo TCP Connect - -sT

Completa el triple handshake TCP. Es más detectable (los servicios lo registran como una conexión real), pero no necesita privilegios elevados.

nmap -sT 192.168.100.149
  • Útil cuando no tienes sudo o estás en sistemas Windows sin WinPcap/Npcap.

Escaneo UDP - -sU

El gran olvidado. Muchos servicios importantes corren sobre UDP (DNS, SNMP, DHCP, TFTP…). Es más lento y menos fiable porque UDP no confirma la recepción, pero es necesario.

sudo nmap -sU --top-ports 20 192.168.100.149

Resultado real en Metasploitable:

PORT      STATE         SERVICE
53/udp    open          domain
67/udp    closed        dhcps
68/udp    open|filtered dhcpc
69/udp    open|filtered tftp
137/udp   open          netbios-ns
138/udp   open|filtered netbios-dgm

Análisis rápido:

  • Puerto 53 abierto → servidor DNS (inusual en una máquina normal).
  • Puerto 69 open|filtered → TFTP, un servicio peligroso si permite descargas sin autenticación.
  • Puertos 137/138 → NetBIOS, típico de entornos Windows pero aquí presente por Samba.

💡 Nota: Los estados open|filtered significan que Nmap no pudo determinar si está realmente abierto o hay un firewall filtrando. En Metasploitable suelen estar abiertos.

Detección de versiones y sistemas operativos

Abrir un puerto está bien, pero saber qué corre detrás es lo que marca la diferencia.

Identificación de servicios (-sV)

Este parámetro hace que Nmap envíe sondas específicas para determinar el software y su versión.

nmap -sV --version-intensity 7 192.168.100.149 -p 21,22,80,445

Resultado (ya visto antes, pero fijémonos en los detalles):

21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1
80/tcp   open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X

¿Por qué es tan importante?

  • vsftpd 2.3.4 → CVE-2011-2523: backdoor que da shell root.
  • OpenSSH 4.7p1 → Vulnerable a generación débil de claves (CVE-2008-0166).
  • Apache 2.2.8 → Múltiples vulnerabilidades, incluyendo Slowloris.
  • Samba 3.X → CVE-2007-2447: ejecución remota de comandos.

Sin -sV, solo verías "ftp", "ssh", "http"... y no sabrías que son críticamente vulnerables.

Detección de sistema operativo (-O)

Nmap analiza las respuestas de las sondas TCP/IP y las compara con una base de datos de firmas.

sudo nmap -O 192.168.100.149

Salida real:

Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
  • Saber que es un Linux con kernel 2.6 (anterior a 2010) nos confirma que el sistema está muy desactualizado y es probable que tenga cientos de vulnerabilidades.

Enumeración de servicios con Nmap

Aquí es donde Nmap se vuelve realmente poderoso gracias a su motor de scripts (NSE).

Scripts NSE (Nmap Scripting Engine)

El NSE permite ejecutar scripts de automatización para tareas como detectar vulnerabilidades, enumerar usuarios, extraer banners, etc. Hay cientos de scripts organizados por categorías: auth, default, discovery, vuln, exploit

Un comando muy útil para empezar es el de vulnerabilidades:

nmap --script vuln 192.168.100.149
  • Este escaneo puede tardar varios minutos, pero la información que devuelve es oro puro.

Ejemplos prácticos de enumeración (con resultados reales)

vsftpd 2.3.4 - Backdoor (crítica)

El script ftp-vsftpd-backdoor detectó:

| ftp-vsftpd-backdoor: 
|   VULNERABLE:
|   vsFTPd version 2.3.4 backdoor
|     State: VULNERABLE (Exploitable)
|     IDs:  CVE:CVE-2011-2523
|     Exploit results:
|       Shell command: id
|       Results: uid=0(root) gid=0(root)
  • Traducción: Este FTP tiene una puerta trasera. Un atacante puede obtener una shell como root sin contraseña. Así de grave.

UnrealIRCd - Backdoor

|_irc-unrealircd-backdoor: Looks like trojaned version of unrealircd.
  • El IRC (puerto 6667) también tiene una backdoor conocida (CVE-2010-2075). Permite ejecutar comandos del sistema.

Apache Slowloris (DoS)

| http-slowloris-check: 
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
  • El servidor web puede ser tumbado con un ataque de denegación de servicio manteniendo muchas conexiones parciales.

RMI Remote Code Execution

| rmi-vuln-classloader: 
|   VULNERABLE:
|   RMI registry default configuration remote code execution
  • Java RMI mal configurado permite ejecutar código arbitrario.

Enumeración de recursos compartidos SMB

nmap --script smb-os-discovery,smb-enum-shares -p 445 192.168.100.149

Resultado real:

| smb-os-discovery: 
|   OS: Unix (Samba 3.0.20-Debian)
|   Computer name: metasploitable
| smb-enum-shares: 
|   \\192.168.100.149\IPC$: 
|     Anonymous access: READ/WRITE
|   \\192.168.100.149\tmp: 
|     Comment: oh noes!
|     Anonymous access: READ/WRITE
  • ¿Qué significa? Hay un recurso compartido llamado tmp con acceso anónimo de lectura y escritura. Cualquiera en la red puede subir o bajar archivos. Es una invitación a meter un payload malicioso.

Enumeración HTTP: descubriendo paneles y archivos sensibles

nmap --script http-enum,http-title -p 80 192.168.100.149

Resultado real:

| http-enum: 
|   /tikiwiki/: Tikiwiki
|   /test/: Test page
|   /phpinfo.php: Possible information file
|   /phpMyAdmin/: phpMyAdmin
|   /doc/: Potentially interesting directory w/ listing
|_  /index/: Potentially interesting folder
|_http-title: Metasploitable2 - Linux

Hallazgos importantes:

  • phpinfo.php → Expone toda la configuración de PHP (versión, rutas, variables de entorno).
  • phpMyAdmin → Interfaz de administración de MySQL, a menudo con contraseñas débiles o por defecto.
  • doc/ y icons/ → Directorios con listado activado; pueden contener archivos sensibles.

Optimizando el reconocimiento: velocidad vs. sigilo

No todos los escenarios requieren la misma velocidad. A veces necesitas ser sigiloso para no activar alarmas; otras veces quieres barrer una red rápidamente.

Plantillas de temporización (-T0 a -T5)

PlantillaUso recomendado
-T0 (paranoid)Evasión extrema, muy lento (para IDS muy sensibles)
-T1 (sneaky)Sigiloso, útil en entornos monitoreados
-T2 (polite)Para no saturar redes lentas
-T3 (normal)Valor por defecto, equilibrio
-T4 (aggressive)Escaneos locales o redes rápidas (puede perder puertos)
-T5 (insane)Muy rápido, poco fiable, mucho ruido

Ejemplo para no levantar sospechas (modo sigiloso):

sudo nmap -sS -T2 --max-retries 1 --min-rate 100 192.168.100.149

Técnicas de evasión básicas

Además de fragmentar paquetes (-f), puedes probar:

# Escaneo con IPs señuelo (decoy)
sudo nmap -sS -D 10.0.0.1,10.0.0.2,ME 192.168.100.149

# Modificar puerto de origen (simular tráfico DNS)
sudo nmap -sS --source-port 53 192.168.100.149

# MTU pequeño (evita detección por tamaño de paquete)
sudo nmap -sS --mtu 24 192.168.100.149

⚠️ Recuerda: Estas técnicas solo deben usarse en entornos autorizados o laboratorios propios. Usarlas contra sistemas ajenos es ilegal.

Buenas prácticas, ética y errores comunes

Buenas prácticas para escanear como un profesional

  1. Empieza siempre con un escaneo rápido (-p- --min-rate 5000) para descubrir puertos abiertos.
  2. Luego profundiza con -sV -sC -O en esos puertos.
  3. No olvides UDP (-sU --top-ports 20).
  4. Usa scripts específicos para servicios interesantes (HTTP, SMB, FTP, etc.).
  5. Guarda los resultados con -oA nombre_archivo para futuros análisis.

Ética y legalidad (esto es serio)

  • Nunca escanees sistemas sin permiso explícito por escrito.
  • Cumple las leyes locales (en muchos países, escanear sin autorización es delito).
  • Usa Nmap solo con fines educativos o en trabajos autorizados (pentesting, auditorías internas).
  • En tu laboratorio (como Metasploitable), eres libre de practicar todo lo que quieras.

Errores comunes al usar Nmap (y cómo evitarlos)

  1. No usar privilegios de root → El escaneo SYN (-sS) no funcionará correctamente. Usa sudo.
  2. Ignorar puertos UDP → Te perderás servicios críticos como DNS, SNMP o TFTP.
  3. Quedarte solo con el estado open → Sin -sV no sabrás las versiones vulnerables.
  4. No ejecutar scripts de vulnerabilidad → El script vuln encontró 6+ vulnerabilidades críticas en Metasploitable. Siempre úsalo (en entornos autorizados).
  5. Olvidar -Pn → Si el objetivo bloquea el ping, Nmap asumirá que está caído. Añade -Pn para forzar el escaneo.
  6. Escaneos UDP sin límite de tiempo → Usa --host-timeout o --max-retries para que no se eternicen.

Caso práctico completo: escaneando Metasploitable paso a paso

Ahora que ya conoces las técnicas, vamos a aplicarlas todas en orden contra nuestra máquina vulnerable. Sigue estos pasos en tu laboratorio y compara resultados.

Paso 1: Escaneo rápido de puertos abiertos (descubrimiento)

sudo nmap -sS -p- --min-rate 5000 192.168.100.149
  • Resultado: 23 puertos TCP abiertos en menos de un minuto.

Paso 2: Escaneo profundo de versiones y SO en esos puertos

sudo nmap -sS -sV -O -p 21,22,23,25,80,139,445,3306,5432,5900,6667 192.168.100.149
  • Obtenemos: vsftpd 2.3.4, OpenSSH 4.7p1, Apache 2.2.8, Samba 3.x, etc.

Paso 3: Escaneo de vulnerabilidades (NSE vuln)

nmap --script vuln 192.168.100.149
  • Tiempo: ~5-10 minutos. Hallazgos: Backdoor en vsftpd, backdoor en UnrealIRCd, RCE en RMI, Slowloris, etc.

Paso 4: Enumeración específica SMB

nmap --script smb-enum-shares,smb-os-discovery -p 445 192.168.100.149
  • Resultado: Recurso tmp con acceso anónimo de lectura/escritura.

Paso 5: Enumeración HTTP

nmap --script http-enum,http-title,http-php-version -p 80 192.168.100.149
  • Resultado: phpinfo.php, phpMyAdmin, directorios listables.

Paso 6: Escaneo UDP (top 20 puertos)

sudo nmap -sU --top-ports 20 192.168.100.149
  • Resultado: DNS, NetBIOS, TFTP abiertos.

Paso 7: Generar reporte completo

sudo nmap -sS -sV -O --script vuln -oA informe_metasploitable 192.168.100.149
  • Esto crea tres archivos: .nmap (texto legible), .xml (para otras herramientas), .gnmap (para grep).

Resumen de hallazgos críticos en Metasploitable

ServicioPuertoVulnerabilidadCriticidad
vsftpd 2.3.421Backdoor (shell root)🔴 Crítica
UnrealIRCd6667Backdoor ejecución comandos🔴 Crítica
Samba 3.0.20445RCE (CVE-2007-2447)🔴 Crítica
Java RMI1099ClassLoader RCE🟠 Alta
Apache 2.2.880Slowloris, múltiples CVEs🟠 Alta
OpenSSH 4.7p122Claves débiles (Debian)🟡 Media

🧠 Moraleja: Con solo Nmap y sus scripts, hemos identificado al menos 4 formas de obtener acceso root a Metasploitable. Esto demuestra por qué el reconocimiento y enumeración son tan importantes en pentesting.

Herramientas complementarias

Nmap es genial, pero no está solo. Combínalo con estas herramientas para un flujo de trabajo profesional:

  • Wireshark – Analiza el tráfico que genera Nmap y entiende qué está pasando a nivel de paquetes.
  • Metasploit – Importa los resultados XML de Nmap (db_import) y pasa directamente a la explotación.
  • Nikto – Escáner específico para servidores web (complementa a http-enum).
  • Burp Suite – Para auditoría manual de aplicaciones web.
  • Searchsploit – Busca exploits para las versiones que encontraste (searchsploit vsftpd 2.3.4).

Preguntas frecuentes (FAQs)

  1. ¿Nmap es legal?
    Sí, siempre que se use en sistemas con permiso explícito. Escanear sin autorización puede ser delito.
  2. ¿Qué es el escaneo SYN?
    Un escaneo que no completa la conexión TCP, lo que lo hace rápido y difícil de detectar. Requiere sudo.
  3. ¿Para qué sirve -sV?
    Para detectar las versiones exactas de los servicios que corren en los puertos abiertos.
  4. ¿Qué es NSE?
    El motor de scripts de Nmap. Permite automatizar desde detección de vulnerabilidades hasta enumeración de usuarios.
  5. ¿Nmap puede detectar vulnerabilidades?
    Sí, con scripts como --script vuln o específicos como ftp-vsftpd-backdoor.
  6. ¿Es necesario ser root para usar Nmap?
    Para escaneos SYN (-sS), detección de SO (-O) y algunos scripts, sí. Para escaneos TCP Connect (-sT) no.
  7. ¿Puedo escanear toda Internet con Nmap?
    Técnicamente sí, pero es ilegal sin autorización. Además, hay herramientas específicas como masscan o zmap para eso. Limítate a tus redes o laboratorios controlados.
  8. ¿Cuánto tarda un escaneo normal contra Metasploitable?
    En mi laboratorio (red local): escaneo SYN de todos los puertos (~1 min), -sV -O (~2-3 min), --script vuln (~5-10 min). Si tarda más, revisa tu red o reduce el número de puertos.

Conclusión

El reconocimiento y enumeración con Nmap es una habilidad esencial para cualquier profesional de ciberseguridad. En esta guía, usando tu propio laboratorio con Metasploitable, hemos visto cómo:

  • Detectar puertos abiertos con escaneos SYN y UDP.
  • Identificar versiones de servicios obsoletos con -sV.
  • Enumerar recursos compartidos inseguros (SMB).
  • Descubrir vulnerabilidades críticas con scripts NSE (--script vuln).
  • Interpretar los resultados para planificar una fase de explotación.

Nmap no es solo una herramienta, es una puerta de entrada al mundo del hacking ético. Cuanto más practiques, más preciso y eficiente serás.

Ahora es tu turno: Abre tu terminal, inicia tu máquina Metasploitable (sigue mi guía de laboratorio si no lo tienes) y reproduce cada uno de los comandos que ejecuté. Compara tus resultados con los míos. ¿Encuentras algún servicio adicional? ¿Alguna vulnerabilidad distinta? El reconocimiento es un arte que se perfecciona con horas de escaneo y análisis.

Próximo artículo de la serie: "Explotación de vulnerabilidades con Metasploit: convirtiendo los hallazgos de Nmap en acceso al sistema" (si te interesa, déjamelo en lo comentarios, o si tienes dudas sobre otro tema también).

Comentarios (0)

  • No hay comentarios aún. ¡Sé el primero en comentar!

Debes iniciar sesión para dejar un comentario.