1. 项目概述:SnakeBackdoor-5流量分析实战
最近在分析一个名为SnakeBackdoor-5的ELF后门样本时,发现其网络通信行为相当隐蔽。这种后门通常会通过加密流量与C2服务器通信,传统杀毒软件很难检测。本文将分享如何通过Wireshark抓包和IDA逆向分析,完整还原这个后门的通信协议和行为特征。
2. 分析环境搭建
2.1 必要工具准备
- Wireshark 3.6.10(最新稳定版)
- IDA Pro 7.7(带Hex-Rays反编译器)
- Ubuntu 20.04虚拟机(分析环境)
- Kali Linux(流量生成环境)
2.2 样本运行环境隔离
建议使用虚拟机构建封闭测试环境:
- 在VMware中创建NAT模式的Ubuntu虚拟机
- 禁用虚拟机的共享文件夹功能
- 配置防火墙规则只允许特定端口通信
重要提示:分析前务必断开虚拟机与物理网络的连接,防止后门意外连接真实C2服务器
3. 流量捕获与分析
3.1 Wireshark抓包配置
# 只捕获后门可能使用的端口范围 tcp.port >= 40000 && tcp.port <= 500003.2 关键流量特征
通过对比分析发现以下特征:
- 固定心跳包间隔:每317秒发送一个142字节的TCP包
- 数据包长度模式:指令传输时会出现78-142-78的独特长度序列
- TLS指纹:使用非常规的TLS1.3扩展字段
3.3 协议逆向技巧
- 先过滤出完整会话流:右键对话 → Follow → TCP Stream
- 注意观察字节分布:使用Statistics → Packet Lengths分析
- 关键字段通常出现在数据包第16-32字节位置
4. IDA静态分析配合
4.1 关键函数定位
通过字符串交叉引用找到:
- 网络初始化函数:sub_4012A0
- 加密函数:sub_403D10
- 命令分发器:sub_404880
4.2 加密算法识别
在0x403D10处发现:
- 使用Salsa20算法初始化
- 密钥通过SHA-256派生
- 每个会话使用不同的IV
4.3 反混淆技巧
遇到控制流混淆时:
- 使用IDAPython脚本批量修复
- 重点跟踪ECX寄存器的值变化
- 注意0xCC字节的出现位置(可能是故意插入的断点)
5. 行为特征总结
经过完整分析,该后门具有以下特点:
- 通信阶段:
- 第一阶段:TCP 443端口TLS握手(伪装HTTPS)
- 第二阶段:跳转到高端口(47832)进行真实通信
- 持久化方式:
- 创建/etc/.systemd/目录隐藏自身
- 修改rc.local实现自启动
- 数据渗漏特征:
- 每次传输前会先发送3个字节的"x00xFAxCE"
- 使用JPEG文件头作为数据包起始标记
6. 检测与防御建议
6.1 网络层检测规则
alert tcp any any -> any [40000:50000] (msg:"SnakeBackdoor5 Heartbeat"; content:"|00 FA CE|"; depth:3; sid:1000001; rev:1;)6.2 主机层检测指标
- 检查异常进程:
# 查找隐藏进程 ps -ef | grep -v "\["- 监控可疑目录:
# 监控系统目录变更 inotifywait -m /etc/systemd /etc/init.d7. 分析过程中的经验教训
- 流量分析时容易忽略的点:
- DNS隧道检测(注意长域名查询)
- ICMP载荷数据(可能是命令控制通道)
- IDA分析建议:
- 先运行字符串搜索(Shift+F12)
- 重点分析导入表中的网络相关API
- 注意.crt段中的证书数据
- 遇到反调试时的对策:
- 修改ELF头中的PT_NOTE段
- 使用qemu-user静态运行样本
- 动态调试时先patch掉ptrace调用