p0f:被动识别远程系统神器!全参数详细教程!Kali Linux教程!

简介

p0f 是一个多功能工具,用于被动式获取操作系统指纹以识别远程主机操作系统,并且可以穿透防火墙。

p0f可以检测远程主机的连接方式、距离、运行时间,并且可以用于检测企业环境中未授权的网络连接。p0f可以检测到某些类型的数据包过滤器和NAT设置,有时可以确定其他ISP的名称。 p0f使用被动式获取操作系统指纹,因此不增加网络负载。没有名称搜索、没有直接通信、不使用ARIN查询、没有Traceroute。 

p0f 使用基于分析 TCP/IP 数据包结构的指纹识别技术来确定远程主机的操作系统和其他配置属性。该过程完全是被动的,不会产生任何可疑的网络流量。另一台主机必须:

- 连接到您的网络 - 无论是自发的还是以诱导的方式,例如,当尝试建立 ftp 数据流、返回退回的邮件、执行身份验证查找、使用 IRC DCC、外部 html 邮件图像引用等时,

- 或者通过某种标准方式(例如 Web 浏览)被网络上的某个实体联系;它可以接受或拒绝连接。

该方法可以穿透数据包防火墙,并且没有主动指纹识别的限制。被动操作系统指纹识别的主要用途是攻击者分析(IDS 和蜜罐)、访问者分析(内容优化)、客户/用户分析(策略执行)、渗透测试等

手段(例如网页浏览);它可以接受或拒绝连接。

功能

p0f支持:

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

此外,p0f还支持检测:

  • 是否运行于防火墙之后
  • 是否运行于NAT模式
  • 是否运行于负载均衡模式
  • 远程系统距离及其运行时间
  • 远程系统的DSL和ISP信息

优点

p0f被动式检测的特点使其在检测过程中不增加任何直接或间接的网络负载。它通过捕获数据包进行分析的方法确定远程主机的操作系统,远程主机不能检测到自己的数据包被捕获。

原理

p0f捕获数据包并进行分析,包括IPv4和IPv6头、TCP头、TCP握手以及应用层的数据。 

安装

源码安装

通过以下命令进行克隆项目源码。建议请先提前挂好代理。

git clone https://github.com/p0f/p0f.git

进入目录并查看

cd p0f/
ls

构建并安装

./build.sh

输入以下命令,如果出现这个界面就说明安装成功了。

./p0f --help

APT包管理器安装

Kali Linux 默认已经安装好 p0f 工具了。也可以通过以下命令进行安装

sudo apt install p0f

使用

注意:请使用root权限运行,或者在命令前面加 sudo

1. -h

帮助信息

p0f -h

网络接口选项

2. -i iface

监听指定的网络接口

在此设备上监听;p0f 默认为 libpcap 认为最好的设备(通常不是)。在某些较新的系统上,您可能能够指定“any”来监听所有设备,但不要依赖于此。指定多个 -i 值不会导致 p0f 同时监听多个接口。

p0f -i eth0

 

3. -r file

从给定文件读取离线 pcap 数据

从 tcpdump 快照读取数据包;这是一种替代操作模式,其中 p0f 从 pcap 数据捕获文件而不是实时网络读取数据包。适用于取证(例如,这将解析 tcpdump -w 输出)。

如果需要,您可以使用 Ethereal 的 text2pcap 将人类可读的数据包跟踪转换为 pcap 文件。

p0f -r example.pcap

4. -p

将监听接口置于混杂模式

将切换到混杂模式;默认情况下,p0f 仅侦听通过它运行的机器寻址或路由的数据包。
此设置可能会降低性能,具体取决于您的网络设计和负载。 在交换网络上,这通常几乎没有影响。

p0f -i eth0 -p

5. -L

列出所有可用接口

列出所有可用接口,然后退出。在 Windows 上特别有用,因为系统生成的接口名称很难记住。

p0f -L

操作模式和输出设置

6. -f file

从 'file' (/etc/p0f/p0f.fp) 读取指纹数据库

从文件读取指纹;默认情况下,p0f 从 ./p0f.fp 或 /etc/p0f/p0f.fp(后者仅适用于 Unix 系统)读取签名。您可以使用它来加载自定义指纹数据。指定多个 -f 值不会将多个签名文件组合在一起。

p0f -f /etc/p0f/p0f.fp

7. -o file

将信息写入指定的日志文件

写入此日志文件。此选项是 -d 所必需的,并隐含 -t。

p0f -i eth0 -o p0f.log

8. -s name

在命名的 unix 套接字上回答 API 查询

在指定的本地流套接字(文件系统对象,例如 /var/run/p0f-sock)上监听查询。稍后可以使用 p0f-query.h 中的 p0f_query 结构将数据包发送到此套接字,并等待 p0f_response。这是将 p0f 与活动服务(Web 服务器或 Web 脚本等)集成的一种方法。 P0f 仍将继续以通常的方式报告签名 - 但您可以使用 -qKU 组合来抑制这种情况。另请参阅 -c 注释。

子目录中提供了一个示例查询工具 (p0f-client)。

注意:套接字将使用与您当前的 umask 相对应的权限创建。如果您想限制对此接口的访问,请谨慎使用。

p0f -i eth0 -s p0f_socket

 

9. -u user

切换到指定的非特权帐户并 chroot

此选项强制 p0f 在读取配置数据并绑定到套接字后 chroot 到此用户的主目录,然后切换到他的 UID、GID 和补充组。

这是偏执狂的安全功能 - 在守护进程模式下运行 p0f 时,您可能希望创建一个具有空主目录的新非特权用户,并限制 p0f 受到威胁时的暴露。也就是说,如果发生这样的妥协,攻击者仍然会有一个套接字可以用来嗅探一些网络流量(比 rm -rf / 更好)。

p0f -i eth0 -u nobody

10. -d

进入后台(需要 -o 或 -s)

进入守护进程模式(从当前终端分离并分叉到后台)。需要 -o 或 -s。

p0f -i eth0 -o p0f.log -d

与性能相关的选项

11. -S limit

限制并行 API 连接数(默认值:20)

p0f -i eth0 -S 20

 

12. -t c,h

设置连接/主机缓存年龄限制(默认值:30 秒,120 分钟)

p0f -i eth0 -t 30,7200

13. -m c,h

限制活动连接/主机的数量(1000,10000)

p0f -i eth0 -m 1000,10000

过滤式

14. 过滤表达式

允许用户指定过滤规则,防止 p0f 查看无关的网络流量。

p0f -i eth0 'tcp port 80'

综合使用

使用接口eth0( -i eth0)处于混杂模式( -p),将结果保存到文件( -o /tmp/p0f.log

p0f -i eth0 -p -o /tmp/p0f.log

p0f -i eth0 -d -u p0f -o /var/log/p0f.log

p0f -r Some_capture.cap

过滤器

最后一部分“过滤规则”是用于传入数据包的 bpf 样式过滤器表达式。它对于在日志文件中排除或包含某些网络、主机或特定数据包非常有用。有关更多信息,请参阅 man tcpdump,以下是几个示例:

´src port ftp-data´

´not dst net 10.0.0.0 mask 255.0.0.0´

´dst port 80 and ( src host 195.117.3.59 or src host 217.8.32.51 )´

文件

/etc/p0f/p0f.fp
默认指纹数据库文件

总结

p0f是一款强大的被动操作系统指纹识别工具,可用于网络取证和安全分析。通过监听网络流量,无需与目标交互即可识别系统信息,为渗透测试和流量分析提供重要支持,是网络安全人员的重要工具。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值