使用api hash技术的Amadey Bot样本分析
字数 1740 2025-09-01 11:26:17
Amadey Bot样本分析技术文档
1. 样本基本信息
- 样本HASH: 449d9e29d49dea9697c9a84bb7cc68b50343014d9e14667875a83cade9adbc60
- 文件类型: 32位exe程序
- DIE分析: 识别为cab文件(压缩的可执行文件)
2. 样本解压内容
解压后获得两个文件:
si684017.exe- 32位exe程序un007241.exe
3. si684017.exe分析
3.1 基础特征
.data节的rawsize和virtualsize大小不一致- 导入函数包含文件操作、内存分配等函数
- 推测为加载器
3.2 反分析技术
- 包含大量垃圾代码用于干扰分析
- 使用API Hashing技术隐藏真实调用的API
3.3 内存操作流程
- 首次内存分配使用
GlobalAlloc - 调用
VirtualProtect给予0x40权限(读写执行) - 使用函数
4032e0计算并填充分配的空间(每次填充8字节)
3.4 动态加载技术
- 调用
LoadLibrary加载msimg32.dll - 通过
call跳转到分配的内存空间执行解密代码
4. API Hashing实现
4.1 获取函数地址流程
- 获取PEB地址,通过PEB获取kernel32.dll基址
- 根据基址获取函数名称表
- 自定义hash算法(示例):
LoadLibraryA的hash: D5786GetProcAddress的hash: 348BFA
4.2 关键函数获取
通过上述方法获取以下函数地址:
GlobalAllocGetLastErrorSleepVirtualAllocCreateToolhelp32SnapshotModule32FirstCloseHandle
5. 多阶段加载技术
- 通过
VirtualAlloc分配新内存空间 - 将部分内容转存到新内存空间
- 再次获取
LoadLibrary函数地址 - 获取更多函数地址(未列出具体函数)
6. 环境检测
- 调用
GetVersion获取版本号 - 若版本低于Windows Vista则返回
7. 持久化技术
7.1 文件操作
- 分配新内存空间并写入可执行文件内容
- 将内容写入
si684017.exe - 释放内存
7.2 注册表操作
- 获取注册表句柄:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders - 设置启动目录(用户登入会检测)
7.3 计划任务
解密并执行以下命令:
schtasks /Create /SC MINUTE /MO 1 /TN si684017.exe /TR \"当前进程的绝对路径" /F
8. 信息收集
收集以下系统信息:
- 操作系统架构(返回值9表示PROCESSOR_ARCHITECTURE_AMD64)
- 主机名称
- 用户名称
- 主机SID
- 杀软程序名称
9. 数据外传
将收集的信息与解密内容拼接,通过特定URL发送,示例格式:
&id=667007790723&vs=3.70&sd=b50502&os=1&bi=1&ar=1&pc=DESKTOP-534ND1J&un=Malware_10&dm=&av=13&lv=0&og=1
10. 反调试技术
10.1 互斥量检测
- 互斥量值:"006700e5a2ab05704bbb0c589b88924d"
- 若已创建互斥量则终止运行
10.2 调试绕过点
- 需要手动修改bl值为1
- 在创建互斥量后修改eax值为b7以外的值
11. 解密函数分析
- 主解密函数:
4141f0结合4029b0 - 加密字符串类似base64但实际为自定义加密
- 解密出文件名称示例:
oneetx.exe
12. 执行流程
- 通过
ShellExecute创建文件oneetx.exe oneetx.exe是加载了新恶意内容的程序
13. 静态分析发现
- 包含多条疑似base64编码的数据(实际为自定义加密)
- 包含敏感导入函数:
- 网络连接
- 内存读写
- 文件编辑
- 命令执行
- 注册表修改
14. 技术总结
该样本展示了以下高级恶意软件技术:
- 多阶段加载机制
- API Hashing技术
- 反调试和反分析技术
- 环境感知能力
- 多种持久化技术
- 系统信息收集
- 数据外传能力
- 自定义加密算法
15. 分析建议
- 重点关注内存分配和权限修改操作
- 监控注册表启动项变更
- 拦截计划任务创建行为
- 分析网络通信模式
- 提取并分析解密后的字符串内容