Nmap 高级扫描技巧与绕过防火墙 - 安全技术
Nmap 高级扫描技巧与绕过防火墙 - 安全技术

Nmap 高级扫描技巧与绕过防火墙:从实战到防御

引言

当你面对一个配置了iptables、pfSense或企业级防火墙的目标网络时,普通的nmap扫描往往只返回“所有端口都被过滤”的冰冷结果。防火墙的默认策略通常是拒绝一切,只放行特定流量,这意味着传统的TCP Connect扫描(-sT)和SYN扫描(-sS)在大多数情况下都会被直接丢弃。

Nmap 高级扫描技巧与绕过防火墙 - 安全技术

作为安全工程师,我们需要理解防火墙的检测机制:状态检测防火墙会追踪TCP三次握手的状态,无状态防火墙则基于ACL规则过滤。绕过防火墙的核心思路是让扫描流量看起来像是正常的业务流量,或者利用防火墙规则中的漏洞(如允许ICMP、允许特定端口、允许分片包等)。本文将深入讲解五种经过实战验证的高级扫描技巧,并提供具体的操作步骤和防御建议。

核心内容:五种高级扫描技巧

1. 利用分片绕过无状态防火墙

许多老旧的无状态防火墙或IDS设备在处理IP分片包时存在缺陷。它们通常只检查第一个分片的头部,而后续分片直接放行。我们可以利用nmap的-f选项将TCP头部拆分成多个IP分片。

操作步骤:

# 基础分片扫描(每个分片8字节)
nmap -sS -f 192.168.1.100

# 自定义分片大小(16字节),更难以检测
nmap -sS --mtu 16 192.168.1.100

# 结合诱饵扫描和分片
nmap -sS -f -D 192.168.1.50,192.168.1.60 192.168.1.100

原理分析: 假设目标防火墙规则为“丢弃所有来自外部且SYN标志位为1的包”。在分片情况下,第一个分片可能只包含部分TCP头部,SYN标志位被隐藏在后续分片中。防火墙检查第一个分片时发现不是完整的SYN包,误判为正常流量而放行。

真实场景案例: 在一次渗透测试中,目标使用Checkpoint R77防火墙,默认规则拒绝所有入站SYN包。使用nmap -sS -f后,成功扫描出开放的22、80、443端口。注意:现代状态防火墙(如iptables的conntrack模块)会重组分片包,此方法对它们无效。

2. 空闲扫描(Idle Scan)实现绝对匿名

空闲扫描利用网络中一台“僵尸主机”的IPID递增特性来间接探测目标端口状态。扫描器本身不直接与目标通信,所有流量都伪装成僵尸主机发出的。

前提条件: 找到一台网络可达、IPID递增且空闲的僵尸主机(通常是Windows XP或老旧打印机)。

操作步骤:

# 第一步:探测僵尸主机的IPID模式
nmap -p 80 --script ipidseq 192.168.1.50
# 输出示例:IP ID Sequence Generation: Incremental

# 第二步:执行空闲扫描
nmap -sI 192.168.1.50:80 192.168.1.100

工作原理: 扫描器向僵尸主机发送SYN/ACK包(伪造源IP为目标IP),如果目标端口开放,僵尸主机会收到目标的RST包,导致IPID增加1;如果端口关闭,目标发送RST给僵尸主机,IPID增加2。扫描器通过对比扫描前后僵尸主机的IPID变化来判断端口状态。

防御建议: 在防火墙上配置SYN cookies或随机化IPID生成(Linux内核参数net.ipv4.tcp_timestamps=0net.ipv4.icmp_echo_ignore_all=1可缓解)。

3. 利用TCP窗口扫描绕过状态检测

某些防火墙对TCP窗口大小字段的检查不严格。TCP窗口扫描(-sW)通过分析目标返回的RST包中的窗口字段来判断端口状态:开放端口返回的RST包窗口非零,关闭端口返回零窗口。

操作步骤:

# 标准窗口扫描
nmap -sW 192.168.1.100

# 配合源端口欺骗(绕过防火墙的端口白名单)
nmap -sW --source-port 53 192.168.1.100

实战技巧: 许多防火墙会放行源端口为53(DNS)或80(HTTP)的流量。使用--source-port参数将扫描流量伪装成DNS查询,能有效绕过基于端口的ACL规则。

案例: 某银行内网防火墙规则允许DNS流量(UDP 53)从DMZ到核心区。通过nmap -sW --source-port 53 10.0.0.1,成功探测到核心数据库服务器的3306端口状态。

4. ACK扫描与隐蔽探测

ACK扫描(-sA)不用于检测端口开放,而是用于探测防火墙规则类型。它发送ACK包(通常用于确认已建立的连接),防火墙无法区分这是真实的确认包还是扫描探测包。

操作步骤:

# 执行ACK扫描
nmap -sA 192.168.1.100

# 过滤结果,只显示未过滤的端口
nmap -sA 192.168.1.100 | grep "unfiltered"

结果解读: 如果目标返回RST包,表示端口未被过滤(即防火墙允许该端口的ACK包);如果无响应或返回ICMP不可达,表示端口被过滤。结合SYN扫描结果,可以绘制出防火墙规则矩阵。

高级组合: 先使用ACK扫描找出未过滤的端口,再对这些端口执行SYN扫描,大幅降低被检测的概率。

# 两步组合扫描
nmap -sA 192.168.1.100 -oG ack.txt
grep "unfiltered" ack.txt | awk '{print $2}' > open_ports.txt
nmap -sS -iL open_ports.txt 192.168.1.100

5. FTP代理扫描与协议隧道

当目标网络只允许FTP数据连接(如端口20/21)时,可以利用FTP协议的特性进行端口扫描。FTP代理扫描(-b)通过FTP服务器的PORT命令让服务器向目标发起连接。

操作步骤:

# 基本FTP代理扫描
nmap -b anonymous:password@ftp.example.com 192.168.1.100

# 指定扫描端口范围
nmap -b user:pass@192.168.1.200:21 192.168.1.100 -p 1-1000

注意事项: 现代FTP服务器大多禁用了代理功能(PORT命令的滥用),但一些遗留系统(如IIS 6.0、老旧嵌入式设备)仍然支持。

绕过效果: 扫描流量完全来自FTP服务器,目标防火墙看到的是合法的FTP数据连接。即使目标有严格的IP白名单,只要FTP服务器在白名单内,扫描就能成功。

真实场景案例:渗透测试中的组合攻击

场景描述: 某企业对外提供Web服务(80/443端口),防火墙规则为:允许外部访问80/443,允许内部DNS查询(UDP 53),拒绝其他所有入站流量。

攻击步骤:

  1. 信息收集: 使用nmap -sS -p 80,443 target.com确认基础服务开放。

  2. 防火墙探测: 执行ACK扫描nmap -sA target.com,发现所有端口都返回RST,说明防火墙允许ACK包通过(无状态规则)。

  3. 利用源端口欺骗: 由于防火墙放行UDP 53,我们使用nmap -sS --source-port 53 -p 1-10000 target.com,成功发现3306(MySQL)和8080(Tomcat)端口开放。

  4. 深入扫描: 对发现的开放端口执行服务版本探测nmap -sV -p 3306,8080 --source-port 53 target.com,确认MySQL 5.7存在CVE-2021-35604漏洞。

  5. 利用结果: 通过漏洞利用获得数据库访问权限,完成渗透测试目标。

防御复盘: 该企业防火墙配置存在两个致命问题:未限制源端口53的流量只能用于DNS查询,未对ACK包进行状态检测。正确的做法是使用状态防火墙,只允许已经建立连接的数据包通过。

总结:注意事项与最佳实践

安全使用原则

  • 合法性: 所有扫描操作必须获得目标系统所有者的书面授权。未经授权的扫描可能触犯《网络安全法》和《刑法》285条。
  • 隐蔽性: 组合使用诱饵扫描(-D)、空闲扫描(-sI)和随机化扫描顺序(–randomize-hosts)降低检测概率。
  • 流量控制: 使用-T paranoid-T sneaky参数控制扫描速度,避免触发IDS/IPS的流量阈值告警。

防御最佳实践

  1. 状态检测防火墙: 确保防火墙启用连接跟踪(iptables的conntrack模块),拒绝所有非SYN包除非属于已建立的连接。
  2. 随机化IPID: 在Linux服务器上设置net.ipv4.conf.all.accept_source_route=0net.ipv4.tcp_timestamps=0,阻止空闲扫描。
  3. 限制源端口: 在防火墙上配置,仅允许特定服务使用其标准源端口(如只允许DNS流量源端口为53)。
  4. 分片重组: 启用IP分片重组功能,在防火墙上丢弃异常分片包(iptables的-f匹配规则)。
  5. 日志监控: 配置防火墙记录所有被丢弃的包,使用SIEM工具分析异常扫描模式(如同源IP的ACK风暴)。

总结

Nmap的高级扫描技巧是渗透测试中不可或缺的工具,但技术本身是中性的。理解这些技巧不仅能帮助安全工程师在授权测试中完成任务,更重要的是能指导网络管理员加固防火墙配置。记住:最好的绕过方式,是让目标系统本身就不存在可绕过的漏洞。建议定期使用上述技巧对自己的网络进行自检,发现并修复配置缺陷。

延伸阅读: 《Nmap Network Scanning》官方指南、OWASP防火墙绕过测试指南、CVE漏洞库中与防火墙绕过相关的漏洞案例。

📚 推荐资源

– 部分链接含推广返佣 –

🪐 加入「渗透实战安全圈」

每天分享渗透测试实战、挖洞技巧、漏洞分析、工具推荐

知识星球

https://t.zsxq.com/40MyD

💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注