p0f
p0f is a passive OS fingerprinting tool that identifies remote systems based on SYN packets without sending any data. It determines OS, distance to hosts, and network structure while supporting tcpdump-style filtering.
Description
p0f performs passive OS detection by analyzing SYN packets, distinguishing it from active tools like nmap and queso that send probe data. It can determine the distance to remote hosts and reveal the structure of foreign or local networks. When deployed on a network gateway, p0f gathers extensive data for useful statistics.
On user-end computers, it serves as a powerful IDS add-on. The tool supports full tcpdump-style filtering expressions and uses an extensible fingerprinting database loaded from '/etc/p0f/p0f.fp'. It logs detailed information including client IP, OS predictions, distance, parameters, and raw signatures.
p0f is ideal for passive reconnaissance, network monitoring, and intrusion detection without generating suspicious traffic.
How It Works
p0f passively analyzes TCP SYN packets to match signatures from its fingerprint database (/etc/p0f/p0f.fp), identifying OS, dist, params, and raw_sig without transmitting data. It intercepts traffic on specified interfaces in promiscuous mode, applies VLAN-aware packet filtering, and logs matches with details like client/port, OS (e.g., Linux 3.11+), and signature components (mss, sok, ts, etc.). API support via unix sockets and caching optimize performance for high-volume analysis.
Installation
sudo apt install p0fFlags
Examples
p0f -i eth0 -p -o /tmp/p0f.logp0f -i eth0p0f -pp0f -o /tmp/p0f.logp0f -r file.pcapp0f -Lp0f -s api.sockp0f -d -o /tmp/p0f.log