Blog

Nmap: cómo detectar sistema operativo de un equipo con -O

Tutorial práctico de Nmap -O: requisitos (root o capacidades), ejemplos de comando, opciones útiles (--osscan-guess, --osscan-limit), interpretación de resultados y consejos para…

7 min aprox. alext0918
TecnoSender Guía técnica
7 min aprox. Lectura

Nmap: cómo detectar sistema operativo — Esta guía explica qué hace la opción -O de Nmap, cuándo usarla y qué resultados esperar: comandos prácticos, permisos necesarios (root, capacidades Linux, Npcap en Windows), opciones que mejoran la precisión, interpretación de la salida y buenas prácticas para pruebas seguras. Aprenderás a preparar el entorno, ejecutar scans útiles y entender por qué Nmap acierta o falla.

Qué hace -O y cuándo usarlo

La opción -O activa la detección remota del sistema operativo mediante huellas TCP/IP (fingerprinting). Nmap envía varios probes (TCP, UDP, ICMP) y compara las respuestas con su base de firmas para proponer un OS y un porcentaje de precisión. Úsalo cuando tengas autorización para auditar un host y necesites confirmar plataforma (Windows, Linux, appliance, versión aproximada) como paso de reconocimiento en pruebas de seguridad defensivas o inventario.

Nota: no uses -O en redes ajenas sin permiso.

Requisitos y permisos

La detección de SO requiere enviar paquetes raw y, por tanto, privilegios especiales. Tradicionalmente se ejecuta como root en Unix; sin embargo, Nmap puede reconocer capacidades Linux (CAP_NET_RAW) que permiten raw-sockets sin iniciar sesión como root. En Windows Nmap depende de Npcap (el reemplazo de WinPcap) para captura e inyección; Npcap debe estar instalado (suele requerir permisos administrativos) para que -O funcione correctamente. (nmap.org

Linux: root vs capabilities

  1. Opción sencilla: ejecutar con sudo — sudo nmap -O <objetivo>.
  2. Alternativa más segura: conceder capacidades al binario Nmap para evitar usar sudo cada vez. Ejemplo práctico (comprueba la política de tu distribución):
sudo setcap cap_net_raw,cap_net_admin+ep $(which nmap)

Esta línea da a nmap las capacidades necesarias para enviar/recibir paquetes raw sin elevar todo el proceso a root; la sintaxis de setcap puede variar entre distribuciones, y conviene verificar con la documentación local. (wiki.archlinux.org

Windows

Instala Npcap con las opciones recomendadas por el instalador de Nmap. Sin Npcap Nmap caerá a métodos no-raw como -sT (connect scan) que no permiten la misma calidad de fingerprinting. Si Npcap no está disponible, algunos scans (incluido -O) no funcionarán o serán mucho menos precisos. (nmap.org

Cómo funciona la detección de SO

Nmap envía una batería de probes y observa detalles finos: flags TCP, respuestas a SYN/ACK/FIN/ACK/PSH/URG, valores iniciales IP ID, opciones TCP, comportamiento ICMP, entre otros. Las respuestas se comparan con la base de firmas nmap-os-db (huellas recopiladas) y se calcula un match con una estimación de precisión. Un fingerprint completo (respuestas a muchos probes y al menos un puerto abierto y otro cerrado) aumenta la probabilidad de un match exacto. (nmap.org

Comandos básicos y ejemplos prácticos

  1. Escaneo básico de OS (privilegios necesarios):
    sudo nmap -O 192.168.1.10
  2. Aggressive (incluye -O, -sV, NSE y traceroute):
    sudo nmap -A 192.168.1.10

    -A combina detección de SO y versiones; es más ruidoso y detectable.

  3. Forzar conjeturas menos conservadoras:
    sudo nmap -O --osscan-guess 192.168.1.10
  4. Limitar la detección sólo a hosts con puertos que den pistas (mejora rendimiento):
    sudo nmap -O --osscan-limit 192.168.1.0/24
  5. Ejemplo combinando opciones útiles:
    sudo nmap -v -O --osscan-limit -p 22,80,443 --reason 192.168.1.10

Si no tienes privilegios y no puedes obtenerlos, Nmap imprimirá un mensaje indicando que el tipo de scan requiere privilegios; alternativamente, usa -sT (TCP connect) para hacer una aproximación menos precisa. (sources.debian.org

Opciones útiles

  • --osscan-guess: intenta conjeturas más agresivas cuando no hay match exacto.
  • --osscan-limit: sólo prueba OS detection en hosts con al menos un puerto abierto y otro cerrado.
  • -A: modo agresivo (incluye -O y -sV).
  • -v: salida más detallada, útil para ver qué probes se usan.
  • -Pn: no hacer ping previo; usar cuando ICMP está bloqueado por el firewall.
  • -p: limitar puertos para acelerar el proceso (pero evita perder la combinación abierto/cerrado útil para fingerprinting).

Estas opciones están documentadas en la guía de uso de Nmap y permiten equilibrar precisión, ruido y tiempo de ejecución. (nmap.org

Interpretación de la salida

En el resultado de -O verás líneas como «OS details», «Aggressive OS guesses» o «No exact OS matches for host» y una cifra de accuracy (porcentaje). Interpretación práctica:

  • Match con alta precisión (>90%): indicativo fuerte, combinar con -sV para confirmar versiones de servicios.
  • Aggressive OS guesses: tentativas cuando no hay match exacto; útiles pero menos fiables.
  • Fingerprint: Nmap puede imprimir la huella cruda; sirve para enviarla al proyecto Nmap o compararla manualmente.
  • OUIs (MAC vendor) — si Nmap detecta la MAC puede añadir pista de fabricante (routers, impresoras, appliances).

Por qué Nmap puede fallar

  • Firewalls/IPS/filtrado: bloquean probes o modifican respuestas.
  • NAT y proxies: la dirección origen/respuesta puede venir de un intermediario que altera la huella.
  • Virtualización y contenedores: hypervisors o stacks virtuales pueden compartir TCP/IP stacks o alterar comportamiento.
  • Honeypots o hardening del kernel: provocan respuestas deliberadamente engañosas.
  • Hosts sin puertos cerrados/abiertos visibles: Nmap necesita diferencias (abierto vs cerrado) para mejorar la coincidencia.

Consejos para mejorar la precisión

  1. Antes de -O, obtiene un listado de puertos con -sS o -sV para identificar puertos abiertos y cerrados (esto ayuda a que la huella sea completa). Puedes consultar cómo detectar servicios y versiones para combinar resultados. Nmap: cómo detectar servicios y versiones con -sV
  2. Usa --osscan-limit para evitar gastar tiempo en hosts sin información útil.
  3. Prueba variaciones: con/ sin --osscan-guess, ajustar tiempo -T y puertos probados.
  4. Combina datos: OUIs, versiones (-sV), banners y NSE scripts que devuelvan información del sistema.

Actualizar y personalizar firmas (nmap-os-db)

La base nmap-os-db se actualiza con nuevas versiones de Nmap; para obtener firmas recientes actualiza el paquete Nmap o compila la última versión. También es posible enviar nuevos fingerprints al proyecto Nmap para su inclusión en futuras versiones.

Pruebas en laboratorio y ejemplos seguros

Realiza pruebas sólo en entornos controlados (tu laboratorio, VMs o redes autorizadas). Un flujo de trabajo recomendado para comprobar que todo funciona:

  1. Levanta dos VMs (Linux y Windows) en la misma red de laboratorio.
  2. Instala Nmap en tu máquina de auditoría y, en Windows, Npcap en la VM objetivo si quieres pruebas cruzadas.
  3. Prueba primero un scan no-intrusivo: nmap -sV -p 22,80 <ip>.
  4. Si tienes puertos abiertos/cerrados, ejecuta: sudo nmap -v -O --osscan-limit <ip> y verifica la salida.
  5. Comprueba que la huella coincide con la versión del SO de la VM y ajusta opciones según sea necesario.

Errores comunes y soluciones

  • Mensaje «You requested a scan type which requires root privileges»: indica que necesitas sudo o capacidades para usar -O; solución: ejecutar con sudo o dar capacidades con setcap. (sources.debian.org
  • Resultados inconsistentes entre ejecuciones: puede deberse a filtrado intermitente o a respuestas diferenciales por IDS; repite el scan y compara.
  • Sin Npcap en Windows: Nmap caerá a métodos que no permiten OS detection completa; instala Npcap con permisos de administrador. (nmap.org

Advertencias legales y éticas

El fingerprinting activo puede considerarse intrusivo. No escanees sistemas que no te pertenezcan o sin autorización explícita. En entornos profesionales documenta y obtén permisos por escrito antes de realizar análisis.

Conclusión y pasos siguientes

La opción -O de Nmap es una herramienta poderosa para detectar sistema operativo de hosts autorizados. Para mejores resultados: prepara el entorno (privilegios o capacidades), combina -O con -sV y NSE, limita objetivos con --osscan-limit y prueba en laboratorio. Si necesitas profundizar en instalación y permisos en Linux o cómo explorar la red antes de usar -O, consulta guías prácticas sobre instalación de Nmap y descubrimiento de red en este sitio. Instalar Nmap en Linux: Guía Práctica • Cómo escanear red local con Nmap para descubrir equipos

Preguntas frecuentes (breve)

  • ¿Puedo usar -O sin root? Sí, si Nmap tiene CAP_NET_RAW/CAP_NET_ADMIN concedidas (setcap) o en Windows si Npcap está instalado y el usuario tiene permisos adecuados; si no, usa -sT (menos preciso). (wiki.archlinux.org
  • ¿–osscan-guess hace el resultado más fiable? No necesariamente; aumenta la probabilidad de obtener una suposición útil cuando no hay match exacto, pero esas conjeturas son menos fiables y requieren corroboración.
  • ¿Cómo actualizo las firmas? Actualiza Nmap (paquete de tu distro o compilación desde fuentes) para obtener la versión más reciente de nmap-os-db.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *