P0f3

  • Posted on: 6 January 2014
  • By: ReYDeS

P0f es una herramienta que utiliza una serie de sofisticados mecanismos netamente pasivos de huellas de tráfico, para identificar a los actores detrás de cualquier comunicación incidental TCP/IP, sin interferir de manera alguna. La versión 3 es una completa reescritura del código base original, incorporando un número significativo de mejoras para las huellas a nivel de red, e introduciendo la habilidad de razonar sobre las cargas a nivel de la aplicación (Por ejemplo HTT).

Algunas de las capacidades de p0f son:

  • Identificación altamente escalable y extremadamente rápida del sistema operativo y software sobre ambos lados de una conexión TCP, especialmente en configuraciones donde las pruebas con nmap son bloqueadas, muy lentas, poco confiables, o simplemente activa las alarmas.
  • Medida del tiempo de funcionamiento del sistema y conexión de red, distancia (incluyendo topología detrás de NAT o filtrado de paquetes), preferencia del lenguaje de usuario, etc.
  • Detección automática de conexiones compartidas / NAT, balanceo de carga, y configuraciones de proxy a nivel de aplicación.
  • Detección de clientes y servidores que falsifican sentencias declarativas como X-Mailer o User-Agent.

Esta herramienta puede funcionar en segundo plano o como un demonio, y proporcionar un API sencillo en tiempo real para otros componentes que deseen obtener información adicional sobre los actores en comunicación.

Los usos comunes p0f incluyen, el reconocimiento durante las pruebas de penetración, vigilancia de rutina de la red, detección de interconexión de redes no autorizadas en entornos corporativos, proporcionar señales para herramientas de prevención de abuso, y usos forenses.

En una forma u otra p0f es utilizado en varios proyectos, incluyendo pfsense, ettercap, prads, amavisd, milter, postgrey, fwknop, satore, etc.

La opción "-L" permite listar todas las interfaces de red disponibles. Esto es útil especialmente en Windows, donde es complicado memorizar las interfaces generadas por el sistema.

Identificada la interfaz de red se procede a ejecutar p0f3 con las siguientes opciones.

# ./p0f -i eth0 -o /tmp/reg_p0f3.log -d -p

La opción “-i” le indica a p0f atender en una interfaz de red definida, para este caso “eth0”. La opción “-o” añade los datos de registros a un archivo definido, para este caso el archivo de nombre /tmp/reg_p03.log. La opción “-d” ejecuta pf0 en modo demonio, es decir seguirá en funcionamiento hasta que el proceso sea terminado, la interfaz sea desactivada o que se genere un error fatal. La opción “-p” pone la interfaz especificada con la opción “-i” en modo promiscuo, es decir la tarjeta de red procesará las tramas que no están dirigidas a ella.

Para el presente ejemplo, se procede a realizar una conexión al puerto 80 utilizando netcat combinado con el comando echo.

# echo -e "GET / HTTP/1.0\r\n" | nc -n 192.168.0.17 80

Al visualizar los resultados capturados en el archivo “/tmp/reg_p0f3.log”, se puede obtener información muy útil revelada por p0f3, por ejemplo que el Sistema Operativo detectado para Kali Linux es Linux 3.x, y que el Sistema Operativo de nuestro objetivo de evaluación (Metasploitable2) es Linux 2.6.x.

Fuentes:

http://lcamtuf.coredump.cx/p0f3/
http://lcamtuf.coredump.cx/p0f3/README

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1