在这里我发现一个有趣的现象,我使用不同的 Nmap 选项得到了不同的 MAC 地址。
使用我的 Kali OS,我输入nmap -sS 192.168.1.4
以启动“半开”扫描。
Starting Nmap 7.70( https://nmap.org ) at 2018-07-04 12:38 UTC
Nmap scan report for 192.168.1.4
Host shown: 999 closed ports
PORT STATE unknown
49159/tcp open unknown
MAC Address: 94:XX:XX:XX:XX:XX (Tp-link Technologies)
然后我输入nmap -O 192.168.1.4
来检测目标的操作系统。
Starting Nmap 7.70( https://nmap.org ) at 2018-07-04 12:39 UTC
Nmap scan report for 192.168.1.4
Host shown: 999 closed ports
PORT STATE SERVICE
49159/tcp open unknown
MAC Address: 18:XX:XX:XX:XX:XX( Apple )
如您所见,我得到了两个不同的 MAC 地址!
我想知道为什么会发生这种情况,以及 Nmap 使用什么技术来检测操作系统?
答案1
也许远程计算机192.168.1.4
有多个 NIC。这会导致问题,因为每个 NIC 都有不同的 MAC 地址,并且响应可能从不同的 NIC 发送。或者,由于每个网络适配器(如 Wi-Fi 和以太网)都有不同的 MAC 地址,因此远程设备可能正在使用 Wi-Fi 连接,然后更改为以太网连接(反之亦然)。
至于操作系统检测,nmap 会将 TCP 和 UDP 数据包发送到远程主机并分析响应数据包的每个部分,并根据数据包中的字段将其与已知值进行匹配。有关此内容的更多信息,请访问nmap 操作系统检测页面
答案2
Nmap 使用数据包嗅探来检测对其主机发现、端口扫描和操作系统发现的探测的响应。只要收到有效响应(即可能来自目标的响应)并且其中包含 MAC 地址,就会记录该地址。这意味着如果不同的探测器收到不同的响应,则可能会报告不同的 MAC 地址。不过,这是一种非常不寻常的情况,因为目标 MAC 在每个实例中都是相同的。由于操作系统检测阶段运行得晚于端口扫描阶段,因此这些探测器(主要发送到开放端口)似乎得到的响应与端口扫描阶段发送的最后探测器不同。
您可以使用选项强制一个或另一个结果--send-eth
。某些平台能够发送原始以太网和原始 IP 数据包,并且强制以太网帧构建--send-eth
可能会锁定一个 MAC 地址并确保不会注册另一个 MAC 地址的响应。不过,这有点推测,因为我还没有通过源代码跟踪这种特定的交互。