如何正确选择nmap扫描类型以避开防火墙检测?

渗透测试或红队演练中,nmap 的扫描方式往往是第一道“隐形盾”。如果防火墙把握住了扫描特征,日志立即暴露,后续的横向移动便会被阻断。选择恰当的扫描类型,就是在“不被看见”的前提下获取端口信息的关键。

防火墙的检测手段

典型的防火墙会结合状态检测(stateful inspection)和包过滤规则,对 SYN、ACK、FIN 等标志位进行匹配;入侵检测系统(IDS)则会捕获异常流量模式,例如短时间内的大批 SYN 包或异常的 TCP 标志组合。部分高阶设备还能基于流速(rate‑limit)或异常 ICMP 报文触发告警。

选择扫描类型的核心指标

决定使用何种扫描方式时,需要衡量以下维度:

  • 是否拥有 root 权限(原始报文构造需要)
  • 目标防火墙的规则倾向(阻断 SYN、允许 ACK 等)
  • 对检测时间窗口的容忍度(T0‑T5 速度调节)
  • 是否需要保持与目标的“合法”会话(如需要后续漏洞利用

在满足这些条件的前提下,常用的隐蔽扫描有:

  • -sS(半开 SYN):仅发送 SYN,收到 SYN/ACK 即判断端口开放,未收到返回则视为过滤或关闭。对大多数状态防火墙极具隐蔽性。
  • -sA(ACK 探测):利用防火墙对 ACK 包的宽容度,判断端口是 filtered 还是 unfiltered,常配合 -p 80 伪装为普通 Web 流量。
  • -sF-sX-sN(FIN / Xmas / Null):发送异常标志的 TCP 包,许多过滤器只在 SYN 包上有规则,因而能绕过。
  • -sU(UDP)配合 -f(碎片):将 UDP 报文切成碎片,部分防火墙在重组前直接丢弃,降低被捕获概率。

真实案例解读

一次内部渗透任务中,目标使用 Cisco ASA,默认阻断所有入站 SYN 包但允许来自内部的 ACK 流量。团队先用 nmap -sA -p 22,80,443 -T2 --source-port 53 10.20.30.0/24 进行 ACK 探测,成功标记出开放的 443 端口。随后对该端口执行 -sS -f -T1 的碎片 SYN 扫描,进一步确认服务版本,而不会触发 ASA 的速率阈值报警。整个过程的日志只留下了几条看似合法的 DNS 查询记录。

进阶技巧

除了选择合适的扫描类型,还可以通过以下手段进一步降低曝光:

  • 使用 -g 将源端口伪装成常见服务(53、80),让防火墙误判为合法流量。
  • 组合 -D 诱饵 IP,将真实扫描流量隐藏在多条噪声流中。
  • 调低 -T 等级(如 -T1)并配合 --scan-delay,让每个探测间隔数秒,避免速率检测。

把这些思路写进脚本,观察日志的变化。

参与讨论

0 条评论

    暂无评论,快来发表你的观点吧!