p0f 是一个被动探测工具,用于被动式获取操作系统指纹以识别远程主机操作系统。从IPv4 和 IPv6 标头、TCP 标头、数据中提取内容。
对于 TCP/IP,该工具对源自客户端的 SYN 数据包和来自服务器的第一个 SYN+ACK 响应进行指纹识别,同时关注TCP 选项的顺序、最大分段大小和窗口大小之间的关系、 TCP 时间戳、以及十几个特殊的状态数据来确定远程连接的相关信息。
该工具可以在前台运行或作为守护进程运行,并提供简单的实时API。
安装(debian 11)
ShellSession
apt install git libpcap-dev -y
git clone https://github.com/ValdikSS/p0f-mtu.git
cd p0f-mtu
./build.sh
一些命令
1.列出所有接口
./p0f -L
2. p0f运行
./p0f -i eth0 -o /root/p0f-3.09b/p0f.log -s /root/p0f-3.09b/p0f-socket -d -S 100 "port 80 or port 443"
-f 读取指定位置的指纹配置文件 (默认是 p0f.fp)
-i 指定网络接口
-o 将日志写入指定文件
-s 侦听指定套字节上的API查询
-d 以守护模式运行, 此模式需要指定 -o 或 -s
-S 设置同时API连接的最大数量,默认为20,最大为100
此外,命令行最后允许语法为pcap-filter的单个参数进行过滤数据包
"port 80 or port 443" 仅识别80或443端口的数据包
3. 查找进程并退出
ps -ef | grep p0f
kill 14197
原作者 Michal Zalewski 官网及相关资料:
- https://lcamtuf.coredump.cx/p0f3/
- https://github.com/p0f/p0f/tree/master
- http://www.manpagez.com/man/7/pcap-filter/
来自 俄罗斯 ValdikSS 的演示代码实现
- https://medium.com/@ValdikSS/detecting-vpn-and-its-configuration-and-proxy-users-on-the-server-side-1bcc59742413
- https://github.com/ValdikSS/p0f-mtu-script/tree/master
- https://github.com/ValdikSS/p0f-mtu/tree/master