Nmap扫描如何规避防火墙检测

wen 网络安全 2

本文目录导读:

Nmap扫描如何规避防火墙检测

  1. 数据包分片
  2. 源地址/端口伪装
  3. 扫描速度与延时
  4. 协议与端口混淆
  5. 传输层封装与代理
  6. 降低探测特征
  7. 组合使用范例
  8. 核心逻辑

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标志,可能绕过某些非标准防火墙。
  • 指定非常见端口:某些防火墙只监控常用端口(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秒。

核心逻辑

  1. 慢是核心:防火墙检测基于速率。-T1--scan-delay 是最有效的单参数。
  2. 伪装身份:利用诱饵(-D)和源端口(--source-port)。
  3. 破坏特征:分片(-f)和随机长度(--data-length)。
  4. 避开探针:使用 -Pn、FIN/NULL扫描。
  5. 最后一招:通过代理(Tor/SSH)或空闲扫描完全隐藏自己。

最难的防火墙:下一代防火墙(NGFW,Next-Generation Firewall)具有深度包检测(DPI,Deep Packet Inspection)和应用层识别能力,对于此类设备,上述大部分传输层技巧会失效,绕过NGFW通常需要应用层伪装(如将扫描伪装成HTTP/2流量或WebSocket,需要使用专门工具如masscan结合simple proxy,或自定义发包脚本)。

上一篇Burp Suite如何拦截修改请求

下一篇当前分类已是最新一篇

抱歉,评论功能暂时关闭!