Fingerprinting: Cómo descubrir el sistema operativo de un host

Operating System (OS) fingerprinting es una técnica utilizada en étical hacking para determinar qué sistema operativo se está ejecutando en una computadora remota.

Esta información es importante para buscar qué vulnerabilidades pueden estar presentes en ese sistema destino y determinar cómo explotarlo.

En esta publicación, presentamos técnicas para encontrar esta información durante un proceso de reconocimiento. Puedes probar estas técnicas en el laboratorio de hacking que construimos anteriormente.

Passive OS Fingerprinting

Passive OS Fingerprinting inspecciona los paquetes provinientes de un host remoto para determinar el sistema operativo. Esto es posible porque los sistemas operativos suelen tener diferentes implementaciones del stack TCP/IP.

Para eso, se observan cuatro campos importantes en los paquetes recibidos:

  • TTL: el tiempo de vida que establece el sistema operativo en el paquete de salida.
  • Tamaño de la ventana de TCP: cuál es el tamaño de la ventana.
  • DF: el sistema operativo usa el bit No fragmentar?
  • TOS: el sistema operativo establece el campo Tipo de Servicio y, de ser así, en qué valor?

Al analizar estos factores de un paquete, es posible que pueda determinar el sistema operativo remoto.

Como resultado, esta estrategia no es 100% precisa y funciona mejor para algunos sistemas operativos que para otros.

p0f

p0f es una herramienta para OS fingerprinting que utiliza diferentes mecanismos para identificar la tecnología detrás de cualquier comunicación TCP/IP sin interferir de ninguna manera. Esta herramienta está disponible en Kali Linux.

sudo p0f -p -i eth0

Este comando especifica la siguiente información:

-p usa la interfaz de escucha en modo promiscuo

-i escucha en la interfaz especificada, en este ejemplo, eth0.

Nota: dado que es una técnica pasiva, es necesario que el host destino envie tráfico que será capturado y analizado. Para hacer un test de prueba puedes generar tráfico con netcat por ejemplo.

Active OS Fingerprinting

El active OS fingerprinting se logra mediante el envío de paquetes especialmente diseñados a una máquina de destino. Luego, se analiza su respuesta para recopilar información y determinar el sistema operativo.

Algunas herramientas para hacer esto son las siguientes.

NMAP

Esta herramienta tiene una función integrada llamada Remote OS Detection que se puede habilitar con la opción -O. Por ejemplo,

nmap -O [dirección_IP]

Este comando puede identificar el sistema operativo y todos los puertos abiertos asociados con el nombre de dominio o la dirección IP.

Para hacerlo, Nmap inspeccionará el tráfico recibido de la máquina de destino e intentará hacer coincidir la huella digital con una lista conocida.

Como resultado, es posible que las huellas dactilares obtenidas no sean 100 % precisas, pero es un intento de conjetura.

Enumeración de servicios o Banner Grabbing

Además de conocer el sistema operativo, es posible que deseemos conocer el software o la aplicación que se está ejecutando un sistema.

Para eso, podemos usar una enumeración de servicios o banner grabbing.

Esta técnica analiza las cadenas de texto obtenidas en una interacción con una aplicación para descubrir el software de origen.

Los encabezados específicos pueden permitir determinar con precisión la versión de la aplicación. Por ejemplo, Apache Tomcat devuelve un encabezado HTTP «Apache-Coyote/1.1».

Podemos usar nmap para identificar los servicios que se ejecutan en puertos específicos y ejecutar varios scripts de enumeración de servicios y sistemas operativos (con la opción –sV y –A).

nmap -sV -sT -A [dirección_IP]

¿Cómo protegerse de esta técnica?

Los administradores de un sistema pueden modificar los banners y encabezados de paquetes para protegerse de estas técnicas. Es decir, pueden configurarlos intencionalmente con nombres de servicios falsos para engañar a un posible atacante.