Nmap decoy选项工作原理及适用网络范围问询
Nmap decoy 选项工作原理解答
首先先纠正一个普遍的认知偏差:Nmap的-D(decoy,诱饵)选项从来不会用伪造IP替换你真实的扫描源IP,它的核心逻辑是:在扫描时同时发出两类探测包,一类是源IP为你真实主机地址的正常探测包,另一类是源IP为你指定的诱饵地址的伪造探测包,两类包几乎同时发往目标,让目标侧的防火墙、入侵检测系统的日志里同时出现多个IP的扫描行为,无法快速定位哪个才是真正的扫描发起方。
为什么目标的响应能回到真实扫描端
这个问题的答案非常直接:
- 你真实发出的那部分探测包,源IP填的就是你主机实际使用的IP地址,目标收到这部分包之后,会按照正常的路由规则把响应报文发回你的真实地址,你可以正常收到端口开放状态、服务指纹等所有扫描结果,完全不受诱饵包影响。
- 那些源IP伪造为诱饵地址的探测包,目标收到之后确实会把响应报文路由到对应的诱饵主机所在的地址——这些响应你本来就收不到,也不需要收到,这些诱饵包的唯一作用就是制造日志噪音,干扰目标的安全审计判断。
需要注意的是,指定诱饵IP时尽量选择当前处于在线状态的真实主机,如果选了一堆未分配、未开机的IP当诱饵,目标排查时只要扫一遍这些IP的存活状态,就能立刻把你唯一在线的真实IP筛出来,诱饵效果直接失效。另外诱饵数量不要加太多,不然会额外占用大量带宽,甚至触发目标的流量清洗机制,把你的真实IP也一并拦截。
decoy 选项的生效范围
这个功能的生效范围和你用的扫描模式、所在网络的访问控制规则直接相关,和是不是在同一个广播域没有必然联系:
- 如果你用的是默认的SYN半开扫描(
-sS,需要root/管理员权限运行)这类基于原始套接字自行构造报文的扫描模式:只要你的网络出口没有配置严格的源地址校验(也就是常见的BCP38入口过滤规则,禁止内网主机发送源IP不属于本地内网地址段的包出网),完全可以在跨互联网的场景下正常使用decoy,不需要和诱饵主机处于同一个二层广播域。目前不少家用宽带、小型商用专线都没有配置严格的源地址过滤,公网场景下诱饵功能可以正常生效。如果你的网络出口做了严格的源地址校验,伪造源IP的包根本出不了本地网关,不管是同广播域还是跨网,decoy都没法正常工作。 - 如果你用的是非特权模式下默认的TCP全连接扫描(
-sT)这类依赖操作系统原生TCP协议栈完成连接的扫描模式:因为TCP三次握手是操作系统内核自动完成的,内核不允许应用程序随意使用不属于本机的IP建立TCP连接,这种场景下decoy选项完全无效,不管网络环境如何都起不到诱饵作用。
特别提醒:decoy选项不具备真正的匿名隐藏效果,它只能增加目标审计溯源的成本,无法完全掩盖你的真实IP。如果目标侧做了逐包的流量特征分析、TTL值校验,或者上游路由设备有完整的流量日志,依然可以定位到你的真实扫描地址。
内容的提问来源于stack exchange,提问作者Salar
相关产品推荐
相关产品推荐

