p0f: Identificación Pasiva de Sistemas

 

 https://www.onlinetis.com/es/

p0f: Identificación Pasiva de Sistemas

p0f es una de esas herramientas "ninja" en Kali Linux. A diferencia de otros escaneadores que "tocan la puerta" (como Nmap), p0f es completamente pasivo.

Aquí tienes una guía rápida para entender qué es y cómo usarlo.


¿Qué es p0f?

Es una herramienta de fingerprinting (identificación) pasiva. No envía ni un solo paquete a la víctima; simplemente "escucha" el tráfico que pasa por tu red y, analizando la estructura de los paquetes TCP/IP, puede adivinar:

  • El Sistema Operativo (Windows, Linux, iOS, etc.).

  • La distancia de red (basándose en el TTL).

  • El tipo de conexión a internet (Ethernet, DSL).

  • Si el sistema está detrás de un firewall o un NAT.


Cómo usar p0f en Kali Linux

1. Instalación

Normalmente ya viene en Kali, pero si no lo tienes, instálalo con:

sudo apt update && sudo apt install p0f

2. Ejecución básica

Para poner a p0f a escuchar en una interfaz específica (por ejemplo, eth0 o wlan0), usa:

sudo p0f -i eth0

3. Escuchar un archivo capturado (.pcap)

Si ya hiciste una captura con Wireshark y quieres analizarla después:

p0f -s archivo_captura.pcap

4. Guardar los resultados

Si quieres que todo lo que p0f descubra se guarde en un archivo de texto para leerlo luego:

sudo p0f -i eth0 -o log_p0f.txt


¿Por qué usarlo en lugar de Nmap?

CaracterísticaNmap (Activo)p0f (Pasivo)
VisibilidadPuede ser detectado por un IDS/IPS.Es invisible; no genera tráfico.
VelocidadMuy rápido para escanear redes enteras.Lento (depende de que haya tráfico real).
Uso principalAuditorías y escaneo de puertos.Análisis forense y vigilancia silenciosa.

Nota importante: p0f es excelente para situaciones donde no quieres hacer ruido o cuando quieres identificar dispositivos que solo están navegando por la red sin tener puertos abiertos.


Entender la salida de p0f puede parecer confuso al principio porque lanza mucha información técnica de golpe. Básicamente, p0f descompone el "saludo" de una conexión TCP para sacar conclusiones.

Aquí tienes el desglose de una línea típica de salida cuando p0f detecta una conexión:


Anatomía de una alerta de p0f

Imagina que ves algo como esto en tu terminal:

.-[ 192.168.1.15/49152 -> 1.2.3.4/80 (syn) ]-

| client = 192.168.1.15/49152

| os = Windows 10

| dist = 10

| params = none

| raw_sig = 4:128+10:0:1460:mss*20,7:mss,sann:ack+jr

1. La cabecera (Flujo de red)

  • 192.168.1.15/49152 -> 1.2.3.4/80: Indica la IP de origen y su puerto, dirigiéndose a la IP de destino y su puerto (en este caso, alguien navegando por HTTP).

  • (syn): Es el tipo de paquete capturado. El paquete SYN es el primer paso del "Three-way handshake" de TCP, ideal para identificar el SO.

2. La identificación (OS & Dist)

  • os = Windows 10: p0f comparó la firma del paquete con su base de datos y determinó que es un Windows 10 (o similar).

  • dist = 10: Esta es la distancia de red en saltos (hops). No significa que esté a 10 metros, sino que el paquete pasó por 10 routers antes de llegar a ti.

3. La firma cruda (raw_sig)

Aquí es donde ocurre la "magia" técnica. p0f mira valores específicos que cada sistema operativo configura de forma distinta por defecto:

  • Window Size (WSize): El tamaño de la ventana de recepción.

  • TTL (Time to Live): Los sistemas Windows suelen empezar en 128, Linux en 64.

  • Opciones TCP: El orden en que aparecen opciones como MSS (Maximum Segment Size), SACK, o Window Scaling.


Otros mensajes comunes que verás

  • [mtu]: Indica el tamaño máximo de paquete. Si ves un valor como 1492, es muy probable que el usuario use una conexión ADSL/PPPoE.

  • [uptime]: p0f puede calcular cuánto tiempo lleva encendida la máquina analizando los "timestamps" de los paquetes TCP. ¡Es increíblemente preciso!

  • [user_agent]: Si el tráfico es HTTP, p0f extraerá el navegador (Chrome, Firefox) para confirmar sus sospechas sobre el sistema operativo.

Ejemplo de detección de NAT/Firewall

Si p0f ve que una IP se identifica a veces como Linux y otras como Windows, te lanzará una alerta indicando que hay un Firewall o NAT compartiendo esa conexión.


Vamos a hacerlo paso a paso. Para que tengamos algo interesante que analizar, sigue estos pasos en tu terminal de Kali:

1. Prepara la escucha

Primero, pon a p0f a escuchar en tu interfaz de red (normalmente eth0 si es cableada o wlan0 si es Wi-Fi). Usa este comando para que sea más detallado:

Bash
sudo p0f -i eth0 -p

(La opción -p pone la tarjeta en modo promiscuo para capturar todo lo que pase por el cable, no solo lo que va dirigido a ti).

2. Genera tráfico

Abre el navegador en tu Kali (o en otra máquina de la misma red) y entra en cualquier página web que no use HTTPS estricto si es posible, o simplemente haz un ping o un curl a una IP externa. Por ejemplo:

Bash
curl http://ident.me

3. Captura la línea

En la ventana donde corre p0f, verás que empiezan a aparecer bloques de texto. Busca uno que empiece con .-[ y termine en ]-.

Copia y pega aquí un bloque completo que te parezca interesante. Suele verse algo así:

.-[ 192.168.1.XX/XXXXX -> 93.184.216.34/80 (syn) ]-

| client = 192.168.1.XX/XXXXX

| os = Linux 3.11 y posteriores

| dist = 0

| params = none

| raw_sig = 4:64+0:0:1460:mss*20,10:mss,sann:ack+jr

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux