p0f 是一個多功能工具,用於被動式獲取 操作系統指紋 以識別遠程主機操作系統,並且可以穿透防火牆。

p0f
p0f
開發者Michal Zalewski
當前版本3.09b(2016-04-18)
編程語言C
操作系統Linux, Macintosh, Windows
類型OS fingerprinting
網站lcamtuf.coredump.cx/p0f.shtml

p0f可以檢測遠程主機的連接方式、距離、運行時間,並且可以用於檢測企業環境中未授權的網絡連接。p0f可以檢測到某些類型的數據包過濾器和NAT設置,有時可以確定其他ISP的名稱。 p0f使用被動式獲取操作系統指紋,因此不增加網絡負載。沒有名稱搜索、沒有直接通信、不使用ARIN查詢、沒有Traceroute

功能

p0f支持:

  • 反連SYN模式
  • 正連SYN+ACK模式
  • 空連RST+模式
  • 碎片ACK模式

此外,p0f還支持檢測:

  • 是否運行於防火牆之後
  • 是否運行於NAT模式
  • 是否運行於負載均衡模式
  • 遠程系統距離及其運行時間
  • 遠程系統的DSL和ISP信息

優點

p0f被動式檢測的特點使其在檢測過程中不增加任何直接或間接的網絡負載。它通過捕獲數據包進行分析的方法確定遠程主機的操作系統,遠程主機不能檢測到自己的數據包被捕獲。

原理

p0f捕獲數據包並進行分析,包括IPv4和IPv6頭、TCP頭、TCP握手以及應用層的數據。

用法

p0f沒有圖形界面,可以從命令行運行。

Usage: p0f [ ...options... ] [ 'filter rule' ]

Network interface options:

  -i iface  - listen on the specified network interface
  -r file   - read offline pcap data from a given file
  -p        - put the listening interface in promiscuous mode
  -L        - list all available interfaces

Operating mode and output settings:

  -f file   - read fingerprint database from 'file' (/etc/p0f/p0f.fp)
  -o file   - write information to the specified log file
  -s name   - answer to API queries at a named unix socket
  -u user   - switch to the specified unprivileged account and chroot
  -d        - fork into background (requires -o or -s)

Performance-related options:

  -S limit  - limit number of parallel API connections (20)
  -t c,h    - set connection / host cache age limits (30s,120m)
  -m c,h    - cap the number of active connections / hosts (1000,10000)

Optional filter expressions (man tcpdump) can be specified in the command
line to prevent p0f from looking at incidental network traffic.

參考

外部連結