nmap 如何进行僵尸和诱饵扫描?

信息安全 地图
2021-09-03 04:21:27

我们正在我的道德黑客课上学习 nmap。我们展示了如何使用 nmap 执行僵尸扫描:

nmap -PN -sI zombieIP targetIP

和诱饵扫描:

nmap -p 135 -D decoyIP targetIP

我理解他们的工作,但讲师没有详细说明它是如何工作的。我很想知道,nmap 究竟如何告诉zombieIP(或诱饵IP)对targetIP 执行扫描?

2个回答

Zombie 或 Idle 扫描的基本思想是将源欺骗数据包发送到目标,然后使用欺骗的源地址观察机器的 TCP/IP 堆栈中的一些状态变化。1998 年发现的原始方法使用IP ID 字段来观察状态。

Nmap 的-sIIdle Scan是一个很好的实现,它能够查询 Zombie/Idle 主机以确定其增加 IP ID 字段的算法;在某些情况下,它会增加 2 或 256。由用户选择合适的僵尸主机。-O通过使用(操作系统指纹)和(详细)标志执行扫描-v,用户可以找到具有递增 IP ID 序列的机器,然后使用Nping或其他数据包制作工具来定位它们以识别那些没有经历大量流量的机器. 扫描的“空闲”部分意味着僵尸必须大部分空闲(不与其他主机通信)才能进行扫描。最后,使用您发布的命令进行扫描:nmap -Pn -sI zombieIP targetIP

该技术是这样的:

  1. Nmap 探测 Zombie 以确定它的 IP ID 序列类别和它正在使用的当前值。
  2. Nmap 然后将 TCP SYN 数据包发送到目标上的各个端口,但将源地址伪装成 Zombie 的地址。
  3. 在扫描过程中,Nmap 不断地探测 Zombie 以找出它发送了多少数据包。期望每个探测一个数据包,如果它发现已经发送了两个数据包,它可以假设另一个是响应目标的 SYN/ACK 的 RST 数据包,表明一个开放的端口。

6.45 版本中,Nmap 添加了通过 IPv6 进行空闲扫描的能力。该技术类似,但使用 IPv6 Fragmentation ID 字段代替。该技术由Mathias Morbitzer发现,并将在 Nmap 的下一个版本中提供。


诱饵扫描是一种不那么有趣的技术。所有数据包都来自您的扫描机器,但有些数据包具有欺骗性源地址。对这些欺骗性来源的任何回复都不会到达您的扫描仪,因此它们不能用于确定端口状态。此技术仅用于混淆端口扫描检测,并且不提供常规扫描之外的任何信息。

扫描技术在 nmap 手册中有很好的解释:端口扫描技术

在运行端口扫描时运行 Wireshark 很有趣——你可以看到发送和接收的确切数据包,并了解它是如何工作的。