Mirai-Source-Code网络流量重放:复现恶意流量攻击的数据包序列
引言:恶意流量复现的价值与挑战
在网络安全研究中,复现恶意流量是分析攻击原理、开发防御机制的关键步骤。Mirai作为物联网(IoT)恶意代码的典型代表,其源代码中的恶意模块为研究人员提供了真实的攻击样本。本文将通过解析mirai/bot/attack.c中的核心逻辑,指导如何构建攻击数据包序列,实现对Mirai恶意攻击的流量重放。
攻击向量解析:从代码到流量构造
Mirai支持多种恶意流量生成方式,这些方式在attack_init函数中被注册:
add_attack(ATK_VEC_UDP, (ATTACK_FUNC)attack_udp_generic); // UDP泛洪
add_attack(ATK_VEC_SYN, (ATTACK_FUNC)attack_tcp_syn); // TCP SYN泛洪
add_attack(ATK_VEC_GREIP, (ATTACK_FUNC)attack_gre_ip); // GRE IP封装流量
add_attack(ATK_VEC_HTTP, (ATTACK_FUNC)attack_app_http); // HTTP应用层流量
每个攻击向量对应不同的数据包构造逻辑,例如UDP泛洪通过随机源端口和伪造IP地址生成海量数据包,而SYN攻击则利用TCP三次握手缺陷发送半连接请求。
数据包序列结构分析
攻击数据包的核心参数通过attack_parse函数解析,其结构如下表所示:
| 字段位置 | 数据类型 | 描述 | 示例值 |
|---|---|---|---|
| 0-3字节 | uint32_t | 攻击持续时间(秒) | 300(5分钟) |
| 4字节 | uint8_t | 攻击方式ID | 0x02(SYN攻击) |
| 5字节 | uint8_t | 目标数量 | 0x01(单个目标) |
| 6-9字节 | ipv4_t | 目标IP地址 | 0xC0A80101(192.168.1.1) |
| 10字节 | uint8_t | 子网掩码 | 0xFF(/24网段) |
环境搭建:编译与准备
交叉编译环境配置
Mirai支持多架构IoT设备攻击,需通过scripts/cross-compile.sh配置交叉编译环境:
#!/bin/bash
# 安装编译依赖
apt-get install -y gcc golang electric-fence
# 部署交叉编译器
mkdir /etc/xcompile
cp cross-compiler-*.tar.bz2 /etc/xcompile/
cd /etc/xcompile && tar -jxf *.tar.bz2
脚本会自动部署armv4l、mips、sh4等架构的编译器,为生成多平台攻击载荷做准备。
攻击流量捕获环境
建议使用以下工具组合捕获攻击流量:
- tcpdump:命令行抓包工具,捕获原始网络数据包
- tcpreplay:流量重放工具,可按原始速率或加速回放
- Wireshark:可视化分析工具,验证数据包序列正确性
流量重放步骤
1. 编译攻击载荷
通过交叉编译脚本生成目标设备的攻击程序:
cd /data/web/disk1/git_repo/gh_mirrors/mi/Mirai-Source-Code
bash scripts/cross-compile.sh # 完成后生成各架构攻击程序
编译产物位于dlr/release/目录,如dlr.mips(MIPS架构)和dlr.arm(ARM架构)。
2. 捕获攻击流量
在受控测试环境中执行攻击并捕获流量:
tcpdump -i eth0 host 192.168.1.1 -w mirai_attack.pcap # 捕获目标IP流量
执行攻击命令后,attack_start函数会创建攻击进程并生成流量:
pid1 = fork(); // 创建攻击进程
if (pid1 == 0) {
methods[i]->func(targs_len, targs, opts_len, opts); // 调用攻击函数
}
3. 流量重放与验证
使用tcpreplay重放捕获的流量:
tcpreplay -i eth0 --loop=10 mirai_attack.pcap # 循环重放10次
重放过程中通过Wireshark观察数据包序列,验证是否符合mirai/bot/attack.h中定义的攻击特征。
防御启示:从流量特征到检测规则
通过分析攻击流量,可提取以下Mirai攻击特征:
- UDP泛洪:源端口随机化(1024-65535), payload长度固定为512字节
- SYN攻击:源IP伪造且无规律,TCP窗口大小固定为65535
- HTTP攻击:User-Agent字段包含
MiraiBot标识,请求间隔<100ms
基于这些特征,可在入侵检测系统(IDS)中配置如下规则:
alert udp any any -> any any (msg:"Mirai UDP Flood"; dsize:512; threshold: type both, track by_src, count 1000, seconds 10; sid:10001;)
总结与展望
通过复现Mirai攻击的数据包序列,我们不仅能深入理解其攻击原理,更能为防御技术提供真实样本。建议研究人员结合scripts/db.sql中的恶意代码控制逻辑,构建更全面的检测与溯源体系。未来研究可聚焦于AI驱动的异常流量识别,以及基于区块链的IoT设备身份认证技术。
附录:关键文件索引
- mirai/cnc/attack.go:命令控制中心攻击管理代码
- loader/src/connection.c:恶意代码通信模块
- mirai/tools/scanListen.go:端口扫描工具源码
- scripts/images/BVc7qJs.png:Mirai攻击架构示意图
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



