¿Cómo nmap adivina el sistema operativo?

7

nmap tiene la capacidad de adivinar el sistema operativo con la opción -O . Me sorprendió mucho que pudiera encontrar el kernel o el paquete de servicio correctos.

* ¿Cómo nmap adivina el sistema operativo?

* ¿Cuáles son las firmas comunes para Windows 7,8, varios sistemas Linux, etc.?

    
pregunta Jon 16.10.2014 - 10:47
fuente

2 respuestas

5

Heurísticamente . nmap observa el comportamiento del sistema durante las sondas, desarrolla una "huella dactilar", que en un análogo a una prueba real de huellas dactilares, busca principalmente las minucias:

  • comportamiento fuera de especificación y especificación adicional o comportamiento indefinido
  • tiempos de retransmisión
  • respuesta a la fragmentación y varias sondas ICMP
  • patrones en números de secuencia de TCP, números de ID de IP y TTL
  • comportamiento con varias opciones de TCP y marcas

Esto es solo un breve resumen, puede leer una descripción más detallada aquí enlace

La huella digital se compara con una base de datos de huellas digitales conocidas. En el caso de que escanee un sistema que tenga una huella digital única, obtendrá una buena coincidencia; de lo contrario, obtendrá una estimación basada en el mejor ajuste (lo que a veces es incorrecto). De todas formas, podría estar mal, a algunas personas les gusta jugar juegos (antiguos pero interesantes). Si no hay buenas coincidencias, nmap lo alentará a averiguar qué es el sistema y envíelo .

Puede encontrar las huellas digitales en /usr/share/nmap/nmap-os-db (probablemente), pero tendrá que leer la documentación para descifrar los detalles.

En la base de datos de nmap actual (6.47) hay 4485 huellas digitales para los 5009 CPE (plataforma) nombres, más de 800 de que coinciden con varias versiones de MS-Windows, y más de 1000 de ellos coinciden con varios sistemas Linux (incluidos los dispositivos).

Aquí hay una firma real para un sistema Linux, una tableta Asus Nexus 7:

# Linux 3.1.10-g52027f9 #1 SMP PREEMPT Thu Jun 28 16:19:26 PDT 2012 armv71 GNU/Linux, Asus Nexus 7 Android Tablet
Fingerprint Linux 3.1
Class Asus | Linux | 3.X | general purpose
CPE cpe:/o:asus:linux_kernel:3 auto
SEQ(SP=102-10C%GCD=1-6%ISR=108-112%TI=Z%CI=Z%II=I%TS=6|7)
OPS(O1=M566ST11NW6%O2=M566ST11NW6%O3=M566NNT11NW6%O4=M566ST11NW6%O5=M566ST11NW6%O6=M566ST11)
WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6=3890)
ECN(R=Y%DF=Y%T=3B-45%TG=40%W=3908%O=M566NNSNW6%CC=Y%Q=)
T1(R=Y%DF=Y%T=3B-45%TG=40%S=O%A=S+%F=AS%RD=0%Q=)
T2(R=N)
T3(R=Y%DF=Y%T=3B-45%TG=40%W=3890%S=O%A=S+%F=AS%O=M566ST11NW6%RD=0%Q=)
T4(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
T5(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
T6(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
T7(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
U1(DF=N%T=3B-45%TG=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)
IE(DFI=N%T=3B-45%TG=40%CD=S)

(Wow, eso no es bonito, ya que puedes encontrarlos en tu instalación de nmap en nmap-os-db , así que no voy a mostrar más).

Elegiré un campo simple IE() - Comportamiento de eco de ICMP (hacer ping es simple, ¿no?)

IE(DFI=N%T=3B-45%TG=40%CD=S) 

Si verifica, verá que se comparte con más de 1250 otros sistemas (de los cuales aproximadamente dos tercios son sistemas Linux).

De la documentación:

  

La prueba de IE implica el envío de dos paquetes de solicitud de eco ICMP al destino. El primero tiene establecido el bit IP DF, un byte de tipo de servicio (TOS) de cero, un código de nueve (aunque debería ser cero), el número de secuencia 295, un identificador de IP aleatorio y un identificador de solicitud ICMP y 120 bytes de 0x00 para la carga útil de datos.

     

La segunda consulta de ping es similar, excepto que se usa un TOS de cuatro (IP_TOS_RELIABILITY), el código es cero, se envían 150 bytes de datos y el ID de solicitud ICMP y los números de secuencia se incrementan en uno desde los valores de consulta anteriores .

Esto se decodifica como:

  • DFI=N ninguna respuesta de ICMP tendrá un conjunto de DF (no fragmentar)
  • T=3B-45 TTL estará entre 0x3B y 0x45
  • TG=40 conjetura TTL inicial de IP
  • CD=S Códigos de respuesta ICMP (igual que la sonda de solicitud ICMP)

Puede encontrar todos estos códigos y detalles aquí . Los otros campos contienen datos detallados de manera similar para ECN, secuencia de TCP (SEQ, OPS, WIN, T1) y opciones de TCP (T2-T7).

    
respondido por el mr.spuratic 16.10.2014 - 11:58
fuente
6

En la documentación de mmap en enlace se proporciona una lista de las diferentes pruebas utilizadas. . Para detalles más específicos, tendrás que leer el código fuente.

Esencialmente, se envían varios paquetes de sondas diferentes y se analizan los resultados. Las pequeñas diferencias entre el software TCP / IP significan que a veces hay pequeñas diferencias en la respuesta a ciertos paquetes de sondas. Con suficientes pruebas, puede reunir una huella digital que identifique el sistema operativo con mucha precisión.

Un ejemplo podría ayudar. Si recibe un paquete TCP de un host, contiene varias opciones de encabezado. La definición del protocolo TCP en RFC793 no especifica en qué orden deben ponerse estas opciones. Si la persona que escribió el código de red para BeOS pone esas opciones en un orden particular, y usted recibe un paquete con las opciones en ese orden, entonces puede deducir que el paquete puede provenir de un host BeOS. Puede que no sea suficiente por sí solo para estar seguro de que es BeOs; Quizás la pila TCP en Haiku pone las opciones en el mismo orden. Entonces, tiene que encontrar alguna otra prueba que dé resultados diferentes para un paquete de BeOS que el de Haiku.

    
respondido por el Graham Hill 16.10.2014 - 11:28
fuente

Lea otras preguntas en las etiquetas