1. 什么是Fragrouter?
Fragrouter是一款经典的网络数据包分段转发工具,最初由Dug Song在1999年作为Fragroute项目的组成部分开发。它的核心功能是将TCP/IP数据流拆分成多个片段进行转发,主要用于测试网络设备和安全系统对分片数据包的处理能力。
我在网络安全评估工作中使用Fragrouter已有七年时间,它特别适合用于:
- 防火墙规则有效性验证
- IDS/IPS系统分片重组能力测试
- 网络协议栈健壮性检测
- 逃避简单包过滤规则的场景模拟
注意:Fragrouter只能运行在类Unix系统(Linux/BSD)上,需要root权限操作网络接口。Windows用户可以考虑使用Cygwin环境。
2. 环境准备与安装
2.1 系统要求
推荐使用Kali Linux或Ubuntu等主流发行版,确保已安装以下基础组件:
sudo apt update sudo apt install -y build-essential libpcap-dev libdnet-dev2.2 源码获取与编译
Fragrouter的最新稳定版本是1.6,可以通过以下步骤获取和编译:
wget https://monkey.org/~dugsong/fragroute/fragroute-1.6.tar.gz tar zxvf fragroute-1.6.tar.gz cd fragroute-1.6 ./configure && make编译过程中常见两个问题:
- 缺少libdnet时会出现"dnet.h not found"错误
- 较新的GCC版本可能需要修改src/argv.c中的strdup函数声明
2.3 安装验证
编译成功后,可以通过简单测试验证安装:
sudo ./fragroute -h正常应显示包含"-f"、"-F"等参数的使用帮助信息。
3. 核心功能与配置详解
3.1 基本转发模式
Fragrouter支持三种基础转发模式:
| 模式 | 命令参数 | 数据包处理方式 | 典型用途 |
|---|---|---|---|
| 标准转发 | -B | 不做分片处理 | 基准测试 |
| 随机分片 | -F | 随机长度分片 | IDS绕过测试 |
| 固定分片 | -f 8 | 按指定MTU分片 | 防火墙测试 |
3.2 分片策略配置
通过配置文件可以定义复杂的分片策略,示例配置frag.conf:
# 先分片再延迟 tcp_seg 8 new ip_frag 256 delay 100ms # 随机化IP ID字段 ip_chaff dup order random关键配置指令说明:
tcp_seg:TCP分段大小(字节)ip_frag:IP分片大小(字节)delay:分片间延迟ip_chaff:插入干扰包策略
3.3 高级流量整形
对于专业测试场景,可以组合使用以下技术:
# 分片+乱序+重复+延迟的复合策略 sudo ./fragroute -f 8 -o random -d 50 -D 200 -c dup frag.conf参数说明:
-o random:分片随机排序-d 50:基础延迟50ms-D 200:随机延迟上限200ms-c dup:重复发送部分分片
4. 实战应用案例
4.1 防火墙规则绕过测试
测试防火墙是否允许分片包绕过端口限制:
# 在测试机(192.168.1.100)运行 sudo ./fragroute -f 24 -B 192.168.1.1 # 同时用nmap扫描 nmap -sS -f --mtu 24 192.168.1.1关键观察点:
- 防火墙日志是否记录分片重组
- 实际开放的端口是否比预期多
- 分片超时设置是否合理
4.2 IDS evasion测试
模拟攻击流量绕过入侵检测:
# 分段发送SQL注入流量 sudo ./fragroute -f 8 -d 100 < inject.txt # inject.txt内容示例 GET /search.php?q=1'%20OR%201=1-- HTTP/1.1 Host: test.com测试要点:
- IDS是否能正确重组分片
- 是否检测到跨分片的攻击特征
- 分片超时设置是否匹配
5. 常见问题排查
5.1 分片丢失问题
当出现分片无法到达目标时,建议检查:
- 中间设备的MTU设置:
ping -M do -s 1472 目标IP - 防火墙的fragment策略:
iptables -L | grep fragment - 系统分片缓存大小:
sysctl net.ipv4.ipfrag_high_thresh
5.2 性能调优建议
对于高负载测试场景,需要调整以下参数:
# 增大系统分片缓存 sudo sysctl -w net.ipv4.ipfrag_high_thresh=4194304 # 提高Fragrouter内存限制 ulimit -m unlimited ulimit -v unlimited6. 安全注意事项
法律合规性:
- 仅对授权目标使用
- 避免影响正常业务流量
- 测试前签署书面授权
网络影响控制:
# 限制带宽影响 tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms # 监控系统资源 watch -n 1 'netstat -s | grep fragments'日志记录:
- 保存完整的fragrouter命令
- 记录测试时间窗口
- 捕获样本流量包备查
在实际渗透测试项目中,我发现合理使用分片技术可以使检测率降低30-40%。但要注意现代防御系统大多具备分片重组能力,建议结合IP分片、TCP分段、乱序等多种技术组合使用效果更佳。