你真的在裸奔式黑客攻击吗?——MASSCAN扫描引发的网络路由困境

本文记录了渗透测试专家使用MASSCAN工具进行大规模扫描时遭遇的路由器性能瓶颈问题,详细分析了Linux内核连接状态跟踪机制对高速扫描的影响,并最终通过iptables的RAW表规则优化实现百万级数据包转发。

我最近遇到一个有趣案例,再次验证了"信任但需验证"的原则。作为渗透测试顾问,我的家庭实验室配有光纤专线和/28 IPv4地址块。当同事Sally请求搭建KALI Linux使用MASSCAN(GitHub链接:https://github.com/robertdavidgraham/masscan)进行客户扫描时,这个号称能在6分钟内扫遍全网的工具,却在400包/秒的低速下就导致ISP提供的Adtran 3140路由器疯狂丢包。

问题根源在于连接状态跟踪——当并行扫描数百个IP的65535个TCP端口时,路由器需要瞬时跟踪65万+连接状态。在获得ISP直连以太网端口后,我将扫描速率提升至1000包/秒,却导致Linux路由器的CPU飙升至100%。原来ISP将我的设备作为/28网段的末跳路由,这意味着需要手动配置IP转发规则:

1
2
3
4
5
6
7
8
# DMZ流量规则
-A FORWARD -i eth0 -o eth1 -d 255.2.2.0/28 -j ACCEPT
-A FORWARD -i eth1 -o eth0 -s 255.2.2.0/28 -j ACCEPT

# 内部网络出站规则
-A FORWARD -s 192.168.0.0/16 -p tcp -j ACCEPT
-A FORWARD -s 192.168.0.0/16 -p udp -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

通过conntrack -L命令发现状态表暴增至50万+条目后,最终解决方案是使用iptables的RAW表禁用DMZ网段的状态跟踪:

1
2
*raw
-A PREROUTING -i eth1 -s 255.2.2.0/28 ! -d 255.2.2.0/28 -j NOTRACK

该规则使得来自DMZ网段且目标为外网的流量跳过状态跟踪,成功解决了高速扫描时的系统过载问题。这次经历不仅实现了直连ISP、提升网络性能的目标,更验证了"保持冷静,继续裸奔式黑客"的哲理。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计