Cargando...
Cargando...
Duración: 1.5 horas (Estimada)
¡Bienvenido/a al quinto episodio de nuestro curso completo de Nmap! En este módulo, nos enfocaremos en la detección de servicios y versiones, la habilidad crítica que transforma el escaneo básico de puertos en inteligencia de seguridad accionable. Aprenderás cómo identificar exactamente qué servicios se están ejecutando en los puertos abiertos y determinar sus versiones específicas.
Saber que un puerto está abierto no es suficiente, necesitamos saber qué está corriendo en él. En seguridad de redes, identificar exactamente qué servicio y versión se está ejecutando en un puerto abierto es como verificar la identificación de todos los que entran a tu edificio.
Esta información es vital para las evaluaciones de seguridad, la gestión de vulnerabilidades y la documentación de la red.
Al final de este módulo, vas a poder identificar ("fingerprint") con precisión los servicios en tu red, incluso aquellos que se ejecutan en puertos no estándar o que intentan ocultar su identidad.
La enumeración de servicios es el proceso de identificar y recopilar información sobre los servicios que se ejecutan en una red. Mientras que el escaneo de puertos nos dice qué puertos están abiertos, la enumeración de servicios nos dice qué está realmente corriendo en esos puertos.
Esta distinción es crucial porque:
Una enumeración de servicios efectiva proporciona la base para la evaluación de vulnerabilidades, las pruebas de penetración y la gestión de la seguridad de la red.
La detección de versión es crítica porque las vulnerabilidades son específicas de cada versión. Saber que un servidor web está ejecutando Apache no es suficiente; necesitamos saber si es Apache 2.4.49 con una vulnerabilidad crítica de path traversal o una versión parcheada.
La información de la versión permite:
Para los atacantes, la información de la versión revela posibles caminos de explotación. Para los defensores, destaca las brechas de seguridad que deben abordarse. Es por eso que la detección de versiones es una piedra angular tanto de las operaciones de seguridad ofensivas como defensivas.
La detección de servicios de Nmap es sofisticada y multicapa:
Este proceso se rige por la base de datos nmap-service-probes, que contiene miles de huellas digitales ("fingerprints") para diferentes servicios y versiones.
El archivo nmap-service-probes contiene patrones que coinciden con las respuestas de los servicios:
# Ejemplo de nmap-service-probes
Probe TCP GetRequest q|GET / HTTP/1.0\r\n\r\n|
rarity 1
ports 80,81,631,1080,3128,8000,8080,8081
sslports 443,8443Cada sonda especifica:
Nmap usa estas sondas estratégicamente, comenzando con las más comunes y procediendo a sondas más raras solo cuando es necesario.
Empecemos con los comandos básicos de detección de versión:
nmap -sV 192.168.1.1Esto habilita la detección de versión con la configuración predeterminada. La opción -sV le dice a Nmap que intente determinar la versión del servicio en todos los puertos abiertos.
Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 18:00 EDT Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). Not shown: 995 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0) 53/tcp open domain ISC BIND 9.16.1 (Ubuntu Linux) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) 443/tcp open ssl/http nginx 1.18.0 (Ubuntu) 8443/tcp open ssl/http Apache Tomcat 9.0.60 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 6.52 seconds
Notá cómo Nmap identifica no solo el tipo de servicio, sino versiones específicas e incluso información de la distribución. Este nivel de detalle es crucial para la evaluación de seguridad.
nmap -sV -p 22,80,443 192.168.1.1Esto enfoca la detección de versión en puertos específicos, lo cual es útil cuando solo estamos interesados en ciertos servicios o queremos acelerar el escaneo.
Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 18:05 EDT Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) 443/tcp open ssl/http nginx 1.18.0 (Ubuntu) Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 3.21 seconds
La detección de versión se puede combinar con diferentes tipos de escaneo:
# Escaneo SYN con detección de versión
sudo nmap -sS -sV 192.168.1.1
# Escaneo UDP con detección de versión
sudo nmap -sU -sV -p 53,123,161 192.168.1.1
# Escaneo comprensivo con detección de versión
sudo nmap -sS -sU -sV -p T:1-1000,U:53,123,161 192.168.1.1Nmap ofrece diferentes niveles de intensidad para la detección de versión, equilibrando la exhaustividad con la velocidad y la intrusividad:
nmap -sV --version-intensity 0 192.168.1.1Usa sondas mínimas, enfocándose en velocidad y sigilo. Útil para:
nmap -sV 192.168.1.1Usa la intensidad predeterminada (7), equilibrando exhaustividad y eficiencia. Adecuado para:
nmap -sV --version-intensity 9 192.168.1.1Usa todas las sondas disponibles para máxima precisión. Apropiado para:
nmap -sV --version-all 192.168.1.1Intenta cada sonda individualmente sin importar el estado del puerto. Exhaustivo pero potencialmente disruptivo. Usado para:
| Intensidad | Velocidad | Precisión | Intrusividad | Caso de Uso |
|---|---|---|---|---|
| 0 (Ligera) | Rápida | Básica | Baja | Escaneos rápidos, sistemas sensibles |
| 1-3 | Más rápida | Limitada | Más baja | Monitoreo regular |
| 4-6 | Moderada | Buena | Moderada | Evaluaciones generales |
| 7 (Predeterminado) | Más lenta | Muy Buena | Moderada | Evaluaciones de seguridad |
| 8-9 | Lenta | Excelente | Más alta | Pruebas de seguridad críticas |
| --version-all | Muy Lenta | Máxima | La más alta | Auditorías comprensivas |
Veamos cómo funciona la detección de versión en la práctica examinando los paquetes y respuestas:
Para ver las sondas exactas que Nmap envía durante la detección de versión, usamos la opción --version-trace:
nmap -sV --version-trace 192.168.1.1 -p 80Starting Nmap 7.94 ( https://nmap.org ) at 2025-04-14 18:15 EDT Service scan sending probe GetRequest to 192.168.1.1:80 Service scan sending probe HTTPOptions to 192.168.1.1:80 Service scan sending probe RTSPRequest to 192.168.1.1:80 Service scan sending probe Help to 192.168.1.1:80 Service scan sending probe SSLSessionReq to 192.168.1.1:80 Service scan match (GetRequest): 192.168.1.1:80 is http. Version: Apache httpd 2.4.41 Nmap scan report for 192.168.1.1 Host is up (0.0023s latency). PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.41 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 0.82 seconds
Esta salida muestra:
Examinemos los paquetes reales con --packet-trace:
sudo nmap -sV -p 80 --packet-trace 192.168.1.1SENT (0.0429s) TCP 10.10.14.2:63090 > 192.168.1.1:80 S ttl=56 id=57322 iplen=44 seq=1699105818 win=1024 <mss 1460> RCVD (0.0573s) TCP 192.168.1.1:80 > 10.10.14.2:63090 SA ttl=64 id=0 iplen=44 seq=3349149304 win=64240 <mss 1460> Service scan sending probe GetRequest to 192.168.1.1:80 SENT (0.0574s) TCP 10.10.14.2:63090 > 192.168.1.1:80 A ttl=56 id=57323 iplen=40 seq=1699105819 win=1024 SENT (0.0574s) TCP 10.10.14.2:63090 > 192.168.1.1:80 PA ttl=56 id=57324 iplen=56 seq=1699105819:1699105835 win=1024 RCVD (0.0718s) TCP 192.168.1.1:80 > 10.10.14.2:63090 A ttl=64 id=1 iplen=40 seq=3349149305 win=64240 RCVD (0.0719s) TCP 192.168.1.1:80 > 10.10.14.2:63090 PA ttl=64 id=2 iplen=479 seq=3349149305:3349149744 win=64240 Service scan match (GetRequest): 192.168.1.1:80 is http. Version: Apache httpd 2.4.41
Este rastreo detallado muestra:
Los servicios no siempre se ejecutan en sus puertos estándar. Exploremos cómo Nmap maneja este desafío:
nmap -sV -p- 192.168.1.1Esto escanea los 65.535 puertos e intenta la detección de versión en cualquiera que esté abierto. Es exhaustivo pero consume tiempo.
nmap -sV -p 8080,8443,10000 192.168.1.1Esto verifica puertos no estándar específicos que comúnmente alojan servicios web o interfaces de administración.
PORT STATE SERVICE VERSION 8080/tcp open http Apache httpd 2.4.41Nmap identifica correctamente el servicio HTTP a pesar de que se ejecuta en el puerto 8080 en lugar del puerto estándar 80.
PORT STATE SERVICE VERSION 2222/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5Nmap identifica correctamente SSH ejecutándose en el puerto 2222 en lugar del puerto estándar 22.
El "banner grabbing" es una técnica para extraer información de los banners de servicio. Nmap lo hace automáticamente durante la detección de versión, pero también podemos hacerlo manualmente:
# Para HTTP
nc -v 192.168.1.1 80
GET / HTTP/1.0
(presionar Enter dos veces)
# Para SMTP
nc -v 192.168.1.1 25
# Para FTP
nc -v 192.168.1.1 21
# Para SSH
nc -v 192.168.1.1 22Ejemplo de respuesta HTTP:
HTTP/1.1 200 OK
Date: Mon, 14 Apr 2025 18:20:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8El encabezado "Server" revela la versión del servidor web.
Nmap Scripting Engine (NSE) proporciona capacidades adicionales de fingerprinting de servicios:
# Información básica del servicio
nmap --script=banner 192.168.1.1
# Información del servidor HTTP
nmap --script=http-server-header 192.168.1.1
# Información del certificado SSL/TLS
nmap --script=ssl-cert 192.168.1.1
# Información del servidor SSH
nmap --script=ssh2-enum-algos 192.168.1.1Estos scripts extraen información más detallada que la detección de versión estándar.
Para una evaluación completa de servicios, combinamos detección de versión con scripts NSE relevantes:
nmap -sV --script=banner,version 192.168.1.1Esto proporciona tanto detección de versión como información adicional del servicio.
Diferentes servicios requieren diferentes enfoques de enumeración. Exploremos técnicas para servicios comunes:
# Información básica del servidor web
nmap -sV -p 80,443,8080,8443 --script=http-server-header 192.168.1.1
# Detectar aplicaciones web
nmap -p 80,443 --script=http-enum 192.168.1.1
# Buscar vulnerabilidades comunes
nmap -p 80,443 --script=http-vuln* 192.168.1.1PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-server-header: Apache/2.4.41 (Ubuntu) | http-enum: | /admin/: Página de login de admin | /wp-login.php: Página de login de WordPress |_ /phpmyadmin/: phpMyAdmin
# Enumeración MySQL
nmap -sV -p 3306 --script=mysql-info 192.168.1.1
# Enumeración MSSQL
nmap -sV -p 1433 --script=ms-sql-info 192.168.1.1
# Enumeración PostgreSQL
nmap -sV -p 5432 --script=pgsql-brute 192.168.1.1PORT STATE SERVICE VERSION 3306/tcp open mysql MySQL 5.7.33-0ubuntu0.18.04.1 | mysql-info: | Protocolo: 10 | Versión: 5.7.33-0ubuntu0.18.04.1 | Thread ID: 9 | Flags de capacidades: 65535 | Algunas Capacidades: Support41Auth, Speaks41ProtocolOld, SupportsTransactions, DontAllowDatabaseTableColumn, IgnoreSigpipes, InteractiveClient, SupportsLoadDataLocal, ODBCClient, IgnoreSpaceBeforeParenthesis, SwitchToSSLAfterHandshake, LongPassword, ConnectWithDatabase, FoundRows, LongColumnFlag, SupportsCompression, Speaks41ProtocolNew, SupportsMultipleStatments, SupportsAuthPlugins, SupportsMultipleResults | Estado: Autocommit | Salt: \x14j\x08W\x16\x16\x15\x1D\x06\x0F\x01\x15\x13\x0E\x1C\x14\x10\x11\x0A\x08\x1B |_ Nombre Plugin Auth: mysql_native_password
# Enumeración SMTP
nmap -sV -p 25,465,587 --script=smtp-commands 192.168.1.1
# Enumeración POP3
nmap -sV -p 110,995 --script=pop3-capabilities 192.168.1.1
# Enumeración IMAP
nmap -sV -p 143,993 --script=imap-capabilities 192.168.1.1PORT STATE SERVICE VERSION 25/tcp open smtp Postfix smtpd |_smtp-commands: inlane.philocyber.com, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8
# Enumeración SMB
nmap -sV -p 139,445 --script=smb-os-discovery 192.168.1.1
# Enumeración RDP
nmap -sV -p 3389 --script=rdp-enum-encryption 192.168.1.1
# Enumeración Active Directory (LDAP)
nmap -sV -p 389,636 --script=ldap-rootdse 192.168.1.1PORT STATE SERVICE VERSION 445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds | smb-os-discovery: | OS: Windows 10 Pro 21H2 (Windows 10 Pro 6.3) | OS CPE: cpe:/o:microsoft:windows_10::- | Nombre Computadora: ESTACION01 | Nombre NetBIOS Computadora: ESTACION01\x00 | Nombre Dominio: ejemplo.local | Nombre Forest: ejemplo.local | FQDN: ESTACION01.ejemplo.local |_ Hora Sistema: 2025-04-14T14:25:00-04:00
Algunos servicios están diseñados para ser difíciles de identificar o pueden comportarse de maneras que confunden los métodos de detección estándar.
Cuando los puertos están filtrados por firewalls, la detección de versión puede fallar:
# Omitir descubrimiento de host y aumentar timeouts
nmap -Pn -sV --max-retries 2 --min-rate 100 192.168.1.1
# Usar escaneo TCP connect en lugar de SYN
nmap -sT -sV 192.168.1.1Para servicios inusuales o personalizados:
# Usar detección de versión agresiva
nmap -sV --version-intensity 9 --version-all 192.168.1.1
# Probar todos los scripts NSE de versión
nmap -sV --script=version 192.168.1.1Algunos servicios ocultan intencionalmente su identidad:
# Usar múltiples técnicas de sondeo
nmap -sV --version-all --script=banner,version -p 8080 192.168.1.1
# Analizar puertos inusuales (comando de ejemplo, ajustar según sea necesario)
nmap -sV -p $(nmap -p- --open -T4 -n 192.168.1.1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',') 192.168.1.1Realizá detección básica de versión en tu red objetivo:
# Escanea tu puerta de enlace predeterminada (reemplazá con IP real)
nmap -sV 192.168.1.1
# Escanea un servidor web (reemplazá con dominio/IP real)
nmap -sV -p 80,443 ejemplo.comCreá una tabla con:
Compará diferentes niveles de intensidad de detección de versión:
# Detección ligera (reemplazá con IP real)
time nmap -sV --version-intensity 0 192.168.1.1 -oN escaneo_ligero.txt
# Detección estándar
time nmap -sV 192.168.1.1 -oN escaneo_estandar.txt
# Detección agresiva
time nmap -sV --version-intensity 9 192.168.1.1 -oN escaneo_agresivo.txtCompará los resultados:
Probá la capacidad de Nmap para identificar servicios en puertos no estándar:
nmap -sV -p 2222 192.168.1.1# Ejecutá un servidor web en el puerto 22 (ejemplo, requiere configuración)
# Luego escanealo
nmap -sV -p 22 192.168.1.1Documentá con qué precisión Nmap identifica estos servicios.
Creá un inventario comprensivo de servicios de tu red:
# Escanea todos los hosts con detección de versión (reemplazá rango de red)
nmap -sV 192.168.1.0/24 -oX servicios_red.xml
# Convierte a reporte HTML (requiere xsltproc)
xsltproc servicios_red.xml -o servicios_red.htmlAnalizá los resultados:
Problema: Nmap identifica incorrectamente un servicio.
Solución:
# Aumentar intensidad, agregar scripts
nmap -sV --version-intensity 9 \
--script=ban1:Problema: Servicio detectado, pero no la versión.
Solución:
# Usar --version-all o banner grabbing
nmap -sV --version-all 192.168.1.1
curl -I http://192.168.1.1 # EjemploProblema: El escaneo agota el tiempo de espera en servicios lentos.
Solución:
# Ajustar parámetros de timing
nmap -sV --max-rtt-timeout 500ms \
--initial-rtt-timeout 200ms ...Problema: El escaneo de versión es demasiado lento.
Solución:
# Escaneo en dos fases o puertos objetivo
nmap -p 80,443,22 -sV ... # Dirigido
# O usar -oG para fase 1Un equipo de seguridad usó detección de versión para identificar servicios vulnerables:
nmap -sV 10.0.0.0/24 -oX servicios.xmlgrep -A 3 "Apache httpd 2.4.49" servicios.xmlnmap --script=http-vuln-cve2021-41773 10.0.0.5Esto identificó versiones vulnerables de Apache, OpenSSL desactualizado y servidores de correo sin parches, permitiendo priorizar la remediación.
Una organización verificó el cumplimiento:
nmap -sV --script=ssl-enum-ciphers ... | grep "TLSv1.0"nmap -sV ... | grep -E "Apache.*2.2|nginx.*1.10"nmap -sV ... -oN reporte_cumplimiento.txtEsto permitió eliminar servicios prohibidos, actualizar software y documentar el cumplimiento para auditorías.
En el próximo episodio, exploraremos:
Nota: Usá este video como guía visual para complementar el material escrito.
Test your understanding with these questions
1. ¿Cuál es el objetivo principal de la detección de servicios y versiones en el escaneo de redes?
2. ¿Qué opción de Nmap se utiliza para iniciar la detección de servicios y versiones?
3. ¿Cuál es el nombre del archivo de base de datos que utiliza Nmap para hacer coincidir las respuestas de los servicios de red con las huellas digitales y versiones de servicios conocidos?
4. ¿Cuál es la principal contrapartida al elegir un nivel de intensidad de versión más alto (ej., `--version-intensity 9`) para la detección de servicios en Nmap?
5. Además de basarse en los números de puerto estándar, ¿de qué otra manera intenta Nmap identificar los servicios que se ejecutan en puertos no estándar?
