本文目录导读:

Nmap是一款非常强大的网络扫描工具,但防火墙和入侵检测系统(IDS/IPS)通常会识别并阻断其默认的扫描行为,为了规避检测,需要综合利用分片、伪装、慢速扫描、协议混淆等技巧。
重要提示: 以下技术仅应用于你拥有授权的网络或系统(如自己的服务器、授权渗透测试),未经授权使用这些技术扫描他人网络是违法的。
以下是Nmap规避防火墙检测的核心策略和具体命令:
数据包分片
通过将TCP头分成多个小数据包,使防火墙难以重组检测其真实意图。
-
-f:将数据包分片为8字节或更小的片段。 -
--mtu <size>:手动指定MTU(最大传输单元)大小(必须是8的倍数,如24, 32)。# 使用分片扫描 nmap -f <target> # 使用自定义MTU nmap --mtu 32 <target>
源地址/端口伪装
-
诱饵扫描
-D:用伪造的IP地址(诱饵)与你的真实IP一起发送探测包,混淆防火墙的日志判断。# RND:随机生成 , ME:你自己真实IP nmap -D RND:10,ME,RND:5 <target> # 指定具体的诱饵IP nmap -D 192.168.1.100,10.0.0.1,172.16.0.5 <target>
-
源端口伪造
--source-port(或-g):某些防火墙信任特定端口(如53/DNS,67/DHCP)的流量,将扫描源端口设为这些端口可能绕过规则。nmap --source-port 53 <target>
扫描速度与延时
防火墙通常对有规律的快速扫描(如-T5)非常敏感。
-
使用慢速扫描
-T1或-T2:设定时间模板。-T0(偏执)极慢但最隐蔽;-T1(诡秘)较适合规避;-T3(普通)默认。# 最慢速,很像正常网络抖动 nmap -T1 <target> # 或手动增加间隔 nmap --scan-delay 5s <target>
-
随机化目标顺序
--randomize-hosts:防止连续扫描同一网段IP时被检测到模式。
协议与端口混淆
-
空闲扫描 (Idle Scan)
-sI:利用一台不活跃的“僵尸主机”来伪造扫描源,你的真实主机不直接接触目标防火墙(较复杂,需先找僵尸机)。nmap -sI <zombie_ip> <target>
-
绕过特定协议的包过滤:
- TCP FIN扫描
-sF:发送FIN包,一些防火墙不记录此行为。 - TCP ACK扫描
-sA:用于探测防火墙的过滤规则(统计型),而不是识别开放端口。 - NULL/Christmas扫描:发送未设置任何标志或FIN/PSH/URG标志,可能绕过某些非标准防火墙。
- TCP FIN扫描
-
指定非常见端口:某些防火墙只监控常用端口(80,443,22),扫描其他端口可能不触发警报。
# 扫描全端口(但极慢且易被检测) nmap -p- <target>
传输层封装与代理
-
HTTP/SOCKS代理
--proxies:将扫描流量通过代理服务器转发,同时隐藏真实IP并可能绕过基于IP的防火墙规则。# 用法(支持HTTP/SOCKS4/SOCKS5) nmap --proxies http://127.0.0.1:8080,http://proxy2:8080 <target>
注:Nmap的代理支持有限且仅适用于某些扫描类型。
-
使用TLS(HTTPS)封装:虽然Nmap本身不原生封装所有扫描,但可以结合
proxychains将Nmap流量通过Tor或SSH隧道传输,防火墙只看到加密的SSL流量。
降低探测特征
防火墙通过抓包知道Nmap的“指纹”(如数据包结构、标志位、时间戳顺序)。
-
自定义TTL
--ttl:改变默认TTL(64),使其更接近普通操作系统。 -
填充随机数据
--data-length:增加额外的随机字节,使探测包看起来更像正常数据流。# 追加20字节随机数据 nmap --data-length 20 <target>
-
禁用ICMP响应
-Pn:如果你知道机器在线但防火墙禁Ping,不要用ICMP探测,否则会直接暴露扫描意图。nmap -Pn <target>
组合使用范例
一个高度规避的组合扫描命令可能如下:
nmap -sS -T1 -Pn -f --data-length 50 --source-port 53 -D RND:10,ME,RND:5 --randomize-hosts --scan-delay 2s <target>
解释:
-sS:半开TCP SYN扫描(本身比全连接隐蔽)。-T1:极慢速。-Pn:不先发Ping。-f:分片。--data-length 50:随机填充数据。--source-port 53:伪装成DNS查询端口。-D RND:10,ME,RND:5:10个随机诱饵+你自己的IP+5个随机诱饵。--randomize-hosts:打乱扫描顺序。--scan-delay 2s:每个探测包间隔2秒。
核心逻辑
- 慢是核心:防火墙检测基于速率。
-T1和--scan-delay是最有效的单参数。 - 伪装身份:利用诱饵(
-D)和源端口(--source-port)。 - 破坏特征:分片(
-f)和随机长度(--data-length)。 - 避开探针:使用
-Pn、FIN/NULL扫描。 - 最后一招:通过代理(Tor/SSH)或空闲扫描完全隐藏自己。
最难的防火墙:下一代防火墙(NGFW,Next-Generation Firewall)具有深度包检测(DPI,Deep Packet Inspection)和应用层识别能力,对于此类设备,上述大部分传输层技巧会失效,绕过NGFW通常需要应用层伪装(如将扫描伪装成HTTP/2流量或WebSocket,需要使用专门工具如masscan结合simple proxy,或自定义发包脚本)。