简介

Xprobe2 允许您确定计算机上运行的操作系统远程主机。它向主机发送多个数据包并分析返回答案。

Xprobe2 的功能与操作系统指纹识别功能相当在 nmap 中(由另一个 Fyodor 编写):

  • 输出对远程主机上操作系统的置信度。
  • 即使中间系统(路由器、防火墙)使对数据包进行轻微修改。
  • 可以列出中间设备的类型(例如“Linux IP 伪装”)。
  • 模块化架构允许新的指纹测试和新的操作系统待添加签名。 

Xprobe2 是一个远程主动操作系统指纹识别工具。Xprobe2 使用先进的技术,例如模糊逻辑的使用将指纹识别结果与工具的签名数据库进行匹配,独特的指纹识别方法等,提供准确的结果。

Xprobe2 是从最初的Xprobe工具演变而来的,但它已经用 C++ 从头开始​​完全重写。

安装

源码安装

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

git clone https://github.com/binarytrails/xprobe2.git

进入目录

cd xprobe2/
ls

配置

./configure

制作

make

安装

make install

之后输入以下命令,如果出现这样的界面的话,就说明安装成功了。

xprobe2 -h

APT包管理器安装

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

sudo apt install xprobe

使用

1. -h

打印此帮助。

xprobe2 -h

2. 常规使用

本地网络测试

xprobe2 192.168.174.132

外网测试

xprobe2 39.156.66.10

3. -v

详细

xprobe2 -v 192.168.174.132

4. -r

显示到目标的路由(类似跟踪路由的输出)。

xprobe2 -r 192.168.174.132

5. -p <proto:portnum:state>

指定端口号、协议和状态。示例:tcp:23:open, UDP:53:CLOSED

指定端口号 (portnum)、协议 (proto) 及其状态,供 xprobe2 在远程主机的可访问性/指纹识别测试期间使用。 proto 的可能值为 tcp 或 udp,portnum 只能采用 1 到 65535 之间的值,state 可以为 closed(对于 tcp,这意味着远程主机使用 RST 数据包回复,对于 udp,这意味着远程主机使用 ICMP Port Unreachable 数据包回复)或 open(对于 tcp,这意味着远程主机使用 SYN ACK 数据包回复,对于 udp,这意味着远程主机不发回任何数据包)。

xprobe2 -p tcp:23:open 192.168.174.132

6. -c <configfile>

指定要使用的配置文件。

使用 configfile 从非默认位置读取配置文件 xprobe2.conf。

xprobe2 -c /bin/xprobe2 192.168.174.132

7. -o <fname>

使用日志文件记录所有内容。

使用 logfile 记录所有内容(默认输出为 stderr)。

xprobe2 -o logfile.txt 192.168.174.132

8. -t <time_sec>

设置初始接收超时或往返时间。

将接收超时设置为 accept_timeout(以秒为单位)(默认设置为 10 秒)。

xprobe2 -t 5 192.168.174.132

9. -s <send_delay>

设置数据包发送延迟(毫秒)。

xprobe2 -s 3000 192.168.174.132

10. -d <debuglv>

指定调试级别。

xprobe2 -d 3 192.168.174.132

11. -D <modnum>

禁用模块号 <modnum>。

xprobe2 -D 1 192.168.174.132

12. -M <modnum>

启用模块号 <modnum>。

xprobe2 -M 2 192.168.174.132

13. -L

显示模块。

xprobe2 -L

14. -m <numofmatches>

指定要打印的匹配项数。

xprobe2 -m 2 192.168.174.132

15. -T <portspec>

为指定端口启用 TCP 端口扫描。示例:-T21-23,53,110

启用内置端口扫描模块,它将尝试扫描端口规范中指定的 TCP 端口

xprobe2 -T 21-23,53,110 192.168.174.132

 

16. -U <portspec>

为指定端口启用 UDP 端口扫描。

启用内置端口扫描模块,它将尝试扫描端口规范中指定的 UDP 端口

xprobe2 -U 53 192.168.174.132

17. -f

强制固定往返时间 (-t opt)。

xprobe2 -f 10 192.168.174.132

18. -F

生成签名(使用 -o 保存到文件)。

为指定目标生成签名(使用 -o 将指纹保存到文件中)

xprobe2 -F -o output.txt 192.168.174.132

19. -X

生成 XML 输出并将其保存到用 -o 指定的日志文件。

xprobe2 -X -o output.txt 192.168.174.132

20. -B

选项强制 TCP 握手模块尝试猜测开放的 TCP 端口

导致 xprobe2 更加嘈杂,因为 -B 使 TCP 握手模块尝试盲目猜测目标上的开放 TCP 端口,方法是向以下已知端口发送顺序探测:80、443、23、21、25、22、139、445 和 6000,希望获得 SYN ACK 回复。如果 xprobe2 收到上面列表中某个端口的 RST|ACK 或 SYN|ACK 数据包,它将被保存在目标端口数据库中,以便稍后由其他模块(即 RST 模块)使用。

xprobe2 -B 192.168.174.132

21. -A

对端口扫描期间收集的样本数据包进行分析以检测可疑流量(即透明代理、防火墙/NIDS 重置连接)。与 -T 一起使用。

在端口扫描模块中启用对透明代理和防火墙/NIDS 欺骗 RST 数据包检测的实验性支持。该选项应与 -T 结合使用。端口扫描过程中收集的所有目标响应分为两类(SYN|ACK 和 RST)并保存以供分析。在分析过程中,模块将根据 TCP 和 IP 标头的某些字段在同一类中搜索不同的数据包,如果发现此类数据包,将显示消息,显示同一类中的不同数据包。

xprobe2 -A -T 21-23,53,110 192.168.174.132

综合使用

将启动针对 192.168.174.132 的 OS 指纹识别尝试。模块 1 和 2(可达性测试)将被禁用,因此即使目标已关闭,也会发送探测。输出将很详细。

xprobe2 -v -D 1 -D 2 192.168.174.132

将启动针对 192.168.174.132 的 OS 指纹识别尝试。UDP 目标端口设置为 53,输出将很详细。

xprobe2 -v -p udp:53:closed 192.168.174.132

将仅启用 TCP 握手模块(编号 11)来探测目标,当所有 ICMP 流量都被过滤时非常有用。

xprobe2 -M 11 -p tcp:80:open 192.168.174.132

将使 TCP 握手模块尝试盲目猜测目标上的开放端口,方法是依次将 TCP 数据包发送到最有可能开放的端口(80、443、23、21、25、22、139、445 和 6000)。

xprobe2 -B 192.168.174.132

将启用端口扫描模块,该模块将扫描 127.0.0.1 上从 1 到 1024 的 TCP 端口

xprobe2 -T 1-1024 127.0.0.1

如果远程目标打开了 TCP 端口 139,则上述命令行将启用应用程序级 SMB 模块(如果远程目标打开了 TCP 端口 445,则将命令行中的 139 替换为 445)。

xprobe2 -p tcp:139:open 192.168.174.132

将启用 SNMPv2c 应用程序级模块,该模块将尝试使用从 xprobe2.conf 文件中获取的社区字符串检索 sysDescr.0 OID。

xprobe2 -p udp:161:open 192.168.174.132

总结

Xprobe2 是一款轻量级但功能强大的主动操作系统指纹识别工具。它通过精准分析网络响应特性,帮助用户快速识别目标系统类型,是安全测试中的有力助手。

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

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐