Nmap: cómo detectar servicios y versiones con -sV
El comando -sV de Nmap sirve para detectar servicios y versiones en puertos abiertos: envía sondas activas a los servicios detectados y devuelve el nombre del servicio, la versión (cuando es posible) y metadatos como CPE. En esta guía práctica aprenderás cuándo usar -sV, cómo ajustar su intensidad (–version-light, –version-intensity, –version-all, –version-trace), cómo combinarlo con scripts NSE (vscan) y otros flags útiles, y cómo interpretar y validar los resultados para reducir falsos positivos.
Introducción: ¿qué hace -sV y cuándo usarlo?
-sV activa la detección de servicio y versión. No es un simple escaneo de puertos: una vez Nmap encuentra puertos abiertos (por ejemplo con un escaneo previo), -sV envía una serie de sondas (probes) diseñadas para provocar respuestas características que permitan identificar software y versiones. Úsalo cuando necesites inventariar servicios o priorizar parches; evita usarlo en redes ajenas sin autorización —es intrusivo y puede activar IDS/IPS.
Requisitos y pre-recomendaciones
- Instalación de Nmap (versión moderna preferible). Si necesitas instalar o actualizar Nmap en Linux, consulta la guía de instalación apropiada para tu sistema.
- Permisos: ejecución como usuario con privilegios para realizar escaneos (algunos tipos de escaneo, p. ej. -sS, requieren privilegios elevados).
- Consideraciones legales: realiza pruebas solo en sistemas propios o con autorización explícita por escrito.
- Soporte TLS/SSL: la capacidad de identificar servicios detrás de TLS depende de que Nmap haya sido compilado con soporte OpenSSL en la instalación utilizada.
Si aún no tienes Nmap o quieres una instalación actualizada, revisa la guía de instalación: Instalar Nmap en Linux: Guía Práctica Paso a Paso.
Cómo funciona la detección de versiones
Nmap usa una base de firmas llamada nmap-service-probes: un conjunto de sondas y reglas que asignan respuestas a nombres de servicio y versiones. Cada sonda tiene un valor de rareza (1–9) y Nmap selecciona cuáles enviar según la intensidad solicitada. El motor combina heurísticas de coincidencia de texto, regex y respuestas binarias. Además, al ejecutar -sV Nmap puede invocar algunos scripts NSE de la categoría vscan para obtener información adicional.
Comandos básicos y ejemplos rápidos
Ejemplos típicos:
nmap -sV objetivo
nmap -sV -p 22,80,443 objetivo
nmap -sV -p- objetivo # todos los puertos (más lento)
Para un escaneo más dirigido en la red local, primero detecta hosts y puertos abiertos y luego aplica -sV sobre los puertos relevantes. Si necesitas recordar cómo escanear puertos TCP primero, consulta: Nmap: cómo escanear puertos TCP de un equipo.
detectar servicios y versiones — ajustar la intensidad
Las opciones principales para controlar la intensidad de las sondas son:
- –version-light: realiza una detección rápida con sondas comunes (equivale a intensidad baja, aproximada a 2). Menos preciso pero más rápido y menos detectable.
- –version-intensity N: N entre 0 y 9. El valor por defecto suele ser 7; valores más altos incrementan la cantidad de sondas enviadas y la probabilidad de identificar correctamente versiones raras.
- –version-all: fuerza el uso de todas las sondas (equivalente a intensidad 9). Máxima exhaustividad, mayor tiempo y mayor posibilidad de detección por sistemas de defensa.
- –version-trace: modo de trazado/debug que muestra qué sondas se envían y cómo responden, útil para desarrollar o depurar firmas.
Ejemplos:
nmap -sV --version-light objetivo
nmap -sV --version-intensity 3 scanme.nmap.org
nmap -sV --version-all objetivo
nmap -sV --version-trace objetivo
Por qué ajustar la intensidad
Más intensidad aumenta la probabilidad de identificación correcta, pero incrementa el tiempo de escaneo y la huella de red (riesgo de ser bloqueado por WAF/IPS). Use –version-light para inventarios amplios y –version-all o intensidad alta para auditorías puntuales donde la precisión es crítica y el host está autorizado.
Detección TLS/SSL y dependencia de OpenSSL
Cuando un servicio está protegido por TLS (por ejemplo HTTPS), Nmap puede intentar establecer una conexión TLS para obtener la respuesta útil (banner, headers, certificado). Esta funcionalidad depende de que la compilación de Nmap incluya librerías TLS (habitualmente OpenSSL). En paquetes binarios distribuidos por algunas distros la funcionalidad puede variar; si Nmap no puede negociar TLS, verás menos información o mensajes de error relacionados.
Para inspeccionar manualmente certificados y comprobar lo que Nmap podría ver, puedes usar:
openssl s_client -connect objetivo:443 -servername ejemplo.com
Combinar -sV con NSE (vscan) y otros flags útiles
-sV ya ejecuta algunos scripts de la categoría vscan por defecto; puedes lanzar scripts NSE adicionales para profundizar. Ejemplos de combinaciones comunes:
-p-: escanear todos los puertos antes de -sV.-sS: SYN scan (rápido y sigiloso) combinado con -sV para reducir tiempo.-Pn: no hacer ping; útil si el host no responde a ICMP.-A: agrega -sV, detección de SO y scripts intensivos; usar solo con permiso.-T2..-T4: ajustan la velocidad global del escaneo; evita T5 si no quieres disparar defensas.
nmap -sS -p- -T4 -sV --version-intensity 5 objetivo
nmap -sV -p 80,443 --script http-vuln* objetivo
Si quieres información ampliada sobre descubrimiento previo de hosts en una red, es recomendable ejecutar primero un escaneo de descubrimiento; para ello puedes consultar la guía de escaneo de red: Cómo escanear red local con Nmap para descubrir equipos.
Interpretación de resultados: SERVICE, VERSION, CPE y validar falsos positivos
Salida típica muestra columnas SERVICE y VERSION. SERVICE es el servicio identificado (p. ej. ssh, http), y VERSION intenta dar el producto y versión. CPE (Common Platform Enumeration) es un identificador normalizado que ayuda a mapear a CVEs. Ten en cuenta:
- Siempre validar hallazgos críticos manualmente: usar banner grabbing (nc, curl, openssl s_client) o acceder a la aplicación para confirmar la versión.
- Los WAFs, proxies o banners personalizados pueden producir falsos positivos; compara respuestas con y sin herramientas de evasión y revisa con –version-trace si necesitas entender la heurística.
- La mayoría de las veces Nmap identifica el producto y versión, pero raramente ofrece nivel de parche exacto; para ese nivel de detalle necesitarás comprobación interna del sistema o herramientas especializadas de gestión de parches.
Consejos prácticos y errores comunes
- Error: usar –version-all en todo el rango de IPs. Solución: usarlo solo contra objetivos autorizados y en hosts seleccionados.
- Error: asumir que la ausencia de versión significa seguridad. Solución: combinar con escaneo activo de vulnerabilidades y revisión manual.
- Si recibes pocos resultados, comprueba que Nmap puede establecer conexiones TLS (OpenSSL) y que no hay políticas de red que bloqueen probes.
- Para reducir ruido, usa –version-light en inventarios automatizados y reserva –version-intensity 8–9 para análisis manuales.
- Usa –version-trace para depurar por qué Nmap no identifica correctamente un servicio; te mostrará las sondas enviadas y las respuestas recibidas.
Ejemplos paso a paso y salida esperada
1) SSH
nmap -sV -p 22 objetivo
Salida esperada (ejemplo simplificado):
22/tcp open ssh OpenSSH 8.4p1 Debian (protocol 2.0)
Verificación: conecta con ssh -v para observar banner y versión real.
2) HTTP
nmap -sV -p 80,443 objetivo
Salida esperada (ejemplo):
80/tcp open http Apache httpd 2.4.41
443/tcp open https nginx 1.18.0
Verificación: curl -I http://objetivo o openssl s_client -connect objetivo:443 para inspeccionar cabeceras y certificado.
3) SMTP
nmap -sV -p 25 objetivo
Salida esperada:
25/tcp open smtp Exim 4.92
Verificación: telnet objetivo 25 y esperar banner inicial que normalmente contiene el software y versión.
Buenas prácticas legales y éticas
Solo realiza detección de versiones en sistemas que posees o para los que tienes autorización explícita. Documenta el alcance, duración y propietario de la prueba; evita impactos en producción (programa ventanas de mantenimiento) y notifica a los equipos implicados. Si tu trabajo es defensivo, usa entornos de laboratorio para pruebas agresivas (–version-all, scripts ruidosos).
Recursos y siguientes pasos
Actualiza regularmente las firmas nmap-service-probes y contribuye con nuevas sondas si detectas servicios no cubiertos. Para escaneos grandes, separa fases: descubrimiento de hosts, escaneo de puertos y detección de versiones en hosts seleccionados. Cuando necesites la máxima precisión, combina Nmap con herramientas específicas de inventario y agentes en los sistemas finales.
Preguntas frecuentes
- ¿Puedo usar -sV sin escanear todos los puertos?
- Sí. Es eficiente ejecutar primero un escaneo de puertos (por ejemplo -p- en hosts seleccionados) y luego aplicar -sV solo sobre los puertos abiertos detectados.
- ¿Qué intensidad debería usar por defecto?
- Para inventarios amplios, –version-light; para auditorías de un objetivo autorizado, –version-intensity 7–9 o –version-all según necesites precisión.
- ¿Cómo reducir falsos positivos?
- Valida manualmente los hallazgos mediante banner grabbing (nc/curl/openssl), revisa con –version-trace y ten en cuenta intermediarios como proxies o WAFs.
Si necesitas un flujo de trabajo reproducible para tu entorno, indícame el tipo de red (local, pública, nube) y te preparo comandos y reglas de priorización adaptadas.
