是否有可能确定谁在进行 nmap -D 扫描?

信息安全 地图 用户跟踪
2021-08-21 22:33:28

Nmap的-D选项代表诱饵,这意味着攻击者可以模拟攻击来自多个IP,包括攻击者的IP。

从受害者的角度来看,是否有可能识别出真实IP,然后追溯攻击者?

2个回答

nmap -D扫描中,要扫描返回任何结果,必须在诱饵池中使用您的真实 IP 地址。如果没有使用您的真实 IP,您将无法从目标服务器收到任何响应,并且 nmap 扫描将无法工作。

-D选项通过引入诱饵 IP 地址造成混乱。因此,如果目标服务器正在记录传入连接,它将看到各种各样的欺骗 IP 地址以及您的真实 IP 地址。

如果您不小心确保诱饵已启动(在返回 SYN-ACK 的活动端口上的初始 SYN 后没有响应)或者如果您的 ISP 过滤器欺骗了 IP 地址(只有您的 IP 将出现在服务器日志中),它不会很难发现进行扫描的实际 IP 地址。

以下是手册页中的相关部分nmap

-D decoy1[,decoy2][,ME][,...] (用诱饵隐藏扫描)。
导致执行诱饵扫描,这使远程主机看起来您指定为诱饵的主机也在扫描目标网络。因此,他们的 IDS 可能会报告来自唯一 IP 地址的 5-10 个端口扫描,但他们不知道哪个 IP 正在扫描它们,哪些是无辜的诱饵。虽然这可以通过路由器路径跟踪、响应丢弃和其他主动机制来解决,但它通常是隐藏 IP 地址的有效技术......

请注意,您用作诱饵的主机应该已启动,否则您可能会意外地 SYN 淹没您的目标。此外,如果只有一个主机在网络上,那么确定哪个主机正在扫描也很容易......

诱饵用于初始 ping 扫描(使用 ICMP、SYN、ACK 或其他)和实际端口扫描阶段。诱饵也用于远程操作系统检测 (-O)。诱饵不适用于版本检测或 TCP 连接扫描......

...此外,一些 ISP 会过滤掉您的欺骗性数据包,但许多 ISP 根本不限制欺骗性 IP 数据包。

一种方法是分析数据包上的 TTL 字段。

生存时间是缓解路由循环的 IP 功能。每个数据包都以一定的 TTL 值开始,通常为 64,每个路由跳将 TTL 减一。如果 TTL 变为零,则丢弃数据包,并返回 ICMP“TTL 在传输中过期”消息。traceroute实用程序使用TTL 字段。它首先发送一个 TTL=1 然后 TTL=2 的数据包,依此类推。然后它跟踪 ICMP 响应以确定对目标 IP 地址的跟踪。

要评估特定数据包是否来自诱饵,您可以使用 traceroute 测量到该 IP 地址的路由距离。如果将其添加到收到的 TTL,您将获得数据包的初始 TTL。事实证明,网络堆栈通常会产生某些初始 TTL 值。如果您计算的 TTL 是其他值,则意味着数据包实际上经过了不同的路线,并且是诱饵。这种技术并不完美,因为路由可以改变,并且任何初始 TTL 在技术上都是合法的。但这是检测诱饵的合理粗略方法。

当然,只有在记录接收到的 TTL 时才能执行此操作,默认情况下不会发生这种情况。您可以配置 iptables 来执行此操作。