Amadey僵尸网络恶意样本详细分析
字数 1727 2025-08-19 12:40:45
Amadey僵尸网络恶意样本详细分析教学文档
1. 概述
Amadey是一种常见的恶意软件,主要功能包括:
- 信息窃取(Stealer):从被感染系统窃取敏感信息
- 僵尸网络(Botnet):连接受害者系统到僵尸网络,接受攻击者远程控制
- 后续攻击能力:安装其他恶意软件、发送垃圾邮件、发起DDoS攻击等
2. 样本基本信息
2.1 IOC (Indicator of Compromise)
| Hash类型 | 值 |
|---|---|
| SHA256 | 449d9e29d49dea9697c9a84bb7cc68b50343014d9e14667875a83cade9adbc60 |
| MD5 | 26b31e11da1e9fb60b64b91414884eb9 |
| SHA1 | 0358b52196af9125be76f335a57f2905f400999d |
2.2 文件分析
初始文件:
- 本质是一个ZIP压缩包,解压后得到
si684017.exe - 32位可执行文件
- 信息熵分析显示高而平坦的曲线,表明文件已加壳
3. 脱壳过程
3.1 使用x32dbg脱壳
- 使用x32dbg载入恶意程序
- 设置断点:
bp VirtualAlloc(该函数用于分配内存) - F9运行程序,断在VirtualAlloc处
- Ctrl+F9执行到函数结束,观察eax寄存器(包含分配内存的基地址)
- 跳转到该内存地址
- 创建硬件断点
- F9运行,Ctrl+F9执行到结束,观察内存填充情况
- 如果内存起始不是PE文件标识(如EB开头),则不是有效负载,删除硬件断点继续
- 重复上述步骤直到找到有效负载
3.2 Dump内存
- 右键内存基地址,查看内存布局
- 找到对应模块,右键选择"dump到文件"
- 重命名为dump.bin
3.3 脱壳后分析
- 32位程序
- 信息熵分析显示无隐藏有效负载
- 导入表中发现wininet.dll,表明有C2服务器操作
- 字符串中发现大量疑似Base64编码的字符串(实际可能经过额外混淆)
4. 静态与动态分析结合
4.1 Ghidra与x32dbg同步
- 在x32dbg中找到文件基址(如005B0000)
- 在Ghidra内存映射中设置相同基址
4.2 定位关键函数
- 在Ghidra中搜索字符串
- 双击跳转到地址处
- 右键选择"Reference -> Show References to Address"
- 对未定义的函数按F键定义函数(如FUN_005c4550)
4.3 动态调试解码函数
- 在x32dbg中对疑似解码函数下断点(如bp 005c4550)
- F9运行程序
- 命中字符串后,Ctrl+F9执行到返回
- 多次尝试后发现该函数只是Base64混淆的一部分
5. 反调试技术分析
5.1 反调试机制
- 入口点存在解码函数
- 函数FUN_005b7b70使用CreateMutexA创建互斥锁
- 检查错误码0xb7,不符合则退出程序
- 检查路径下是否存在oneetx.exe文件
5.2 绕过反调试
- 运行恶意软件让其生成副本oneetx.exe
- 重新同步地址(基址可能变化)
- 在x32dbg中对FUN_005b7b70下断点(bp 005b7b70)
- 单步执行(F8)并patch掉反调试检查
6. 恶意行为分析
6.1 持久化机制
- 创建计划任务实现持久化
6.2 数据窃取
- 查询和修改注册表
- 尝试窃取计算机上的敏感数据
6.3 安全检测
- 检查系统中安装的安全厂商软件
7. C2服务器信息
通过分析最终找到C2域名(报告中未显示具体域名)
8. 分析技巧总结
-
脱壳技巧:
- 关注VirtualAlloc等内存分配函数
- 通过硬件断点跟踪内存填充
- 确保内存完全填充后再dump
-
反调试绕过:
- 识别互斥锁检查
- 允许程序生成必要文件
- 动态patch关键检查点
-
解码分析:
- 结合静态和动态分析
- 通过交叉引用定位关键函数
- 多次尝试不同断点
-
行为分析:
- 关注持久化机制(计划任务等)
- 监控注册表和文件操作
- 识别数据收集行为
9. 后续分析方向
- 详细分析具体的恶意行为实现
- 深入分析C2通信协议
- 研究样本更新机制
- 分析与其他恶意软件的关联性