恶意代码逆向工程与僵尸网络流量分析实践
1. 恶意代码基础分析:以 RaDa 样本为例
对未知二进制文件进行分析的第一步是识别其架构与保护机制。通过 file 命令可以确定 RaDa.exe 为 Windows 平台下的 32 位 PE 文件。初步通过 strings 命令扫描发现字符分布杂乱,且包含 UPX 等加壳特征,表明该程序经过了混淆处理以对抗静态扫描。
脱壳与元数据提取
使用自动化脱壳工具(如超级巡警脱壳机)还原程序原始代码。脱壳后的文件 RaDa_unpacked.exe 暴露了大量函数调用和硬编码字符串。通过执行带有特定参数的程序:
RaDa.exe --authors
可以获取其开发者信息为 Raul Siles & David Perez。该样本被识别为远程控制后门(Backdoor),其核心行为包括:
- 环境探测:通过检索注册表键值
HKLM\Software\VMware, Inc.\VMware Tools探测是否运行在虚拟机环境。 - 持久化驻留:将自身复制到
C:\RaDa\bin并修改Run注册表项实现开机自启。 - 隐蔽通信:向控制端
10.10.10.10发起 HTTP 请求,模拟浏览器流量以规避防火墙监控。
2. 软件逆向工程:Crackme 程序破解
利用 IDA Pro 对 Crackme 程序进行静态分析,重点关注控制流图(CFG)与关键分支逻辑。
逻辑分析一:命令行参数校验
在 crackme1.exe 的 sub_401280 函数中,程序通过 cmp [ebp+arg_0], 2 检查参数个数。若参数正确(argc=2),则提取 argv[1] 与明文字符串 "I know the secret" 进行 strcmp 比对。若匹配则输出成功信息。
逻辑分析二:多重防御机制
crackme2.exe 引入了文件名校验逻辑。程序首先对比 argv[0] 是否为 "crackmeplease.exe",若文件名被修改则直接退出。在通过密码校验后,程序并未直接存储提示信息,而是采用异或加密算法动态解密:
# 提示信息解密逻辑模拟 (Python 实现)
def decrypt_msg(hex_data, key=0x42):
return "".join([chr(b ^ key) for b in hex_data])
cipher_text = [
0x15, 0x27, 0x62, 0x2A, 0x23, 0x34, 0x27, 0x62, 0x23, 0x62,
0x2E, 0x2B, 0x36, 0x36, 0x2E, 0x27, 0x62, 0x31, 0x27, 0x21,
0x30, 0x27, 0x36, 0x78, 0x62, 0x01, 0x2A, 0x2D, 0x21, 0x2D,
0x2E, 0x23, 0x36, 0x27
]
print(decrypt_msg(cipher_text)) # 输出: We have a little secret: Chocolate
3. 僵尸网络流量取证分析
通过对 Snort 收集的蜜罐数据(botnet_pcap_file.dat)进行多维分析,还原攻击路径。
IRC 协议交互特征
IRC(Internet Relay Chat)是早期僵尸网络常用的控制协议。客户端连接服务器(通常使用 TCP 6667 端口)后,会发送 NICK(声明昵称)和 USER(身份登记)指令,随后通过 JOIN 加入特定的 C&C 频道接收攻击者的广播指令。经分析,蜜罐主机 172.16.134.191 与包括 209.196.44.172 在内的 5 个 IRC 服务器存在通信。
攻击行为统计与漏洞识别
利用命令行工具组合对流量进行过滤统计:
# 提取攻击源 IP 并去重
tcpdump -n -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk '{print $3}' | sort -u
# 统计目标服务器承载的僵尸主机数量
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
grep -a "^:irc5.aol.com 353" 209.196.044.172.06667-172.016.134.191.01152 | wc -l
通过端口扫描分析,发现攻击者尝试探测了以下服务:
- TCP 135/139/445: 针对 Windows RPC 与 SMB 服务的探测。
- TCP 80: 试图利用 Web 漏洞分发红色代码(Code Red)蠕虫。
- TCP 4899: 探测 Radmin 远程控制软件。
攻击成功判定
在所有尝试中,针对 TCP 445 端口 的攻击最为有效。流量包 33280 显示了 PSEXESVC.EXE 的文件传输行为。PsExec 工具被恶意软件利用,通过 SMB 协议在远程主机上安装并执行系统服务,最终使攻击者获得了 ADMIN 权限。其他端口(如 135、4899)多为扫描行为或连接被重置(RST),未见实质性 Payload 执行。