使用api hash技术的Amadey Bot样本分析
字数 1740 2025-09-01 11:26:17

Amadey Bot样本分析技术文档

1. 样本基本信息

  • 样本HASH: 449d9e29d49dea9697c9a84bb7cc68b50343014d9e14667875a83cade9adbc60
  • 文件类型: 32位exe程序
  • DIE分析: 识别为cab文件(压缩的可执行文件)

2. 样本解压内容

解压后获得两个文件:

  1. si684017.exe - 32位exe程序
  2. un007241.exe

3. si684017.exe分析

3.1 基础特征

  • .data节的rawsize和virtualsize大小不一致
  • 导入函数包含文件操作、内存分配等函数
  • 推测为加载器

3.2 反分析技术

  • 包含大量垃圾代码用于干扰分析
  • 使用API Hashing技术隐藏真实调用的API

3.3 内存操作流程

  1. 首次内存分配使用GlobalAlloc
  2. 调用VirtualProtect给予0x40权限(读写执行)
  3. 使用函数4032e0计算并填充分配的空间(每次填充8字节)

3.4 动态加载技术

  1. 调用LoadLibrary加载msimg32.dll
  2. 通过call跳转到分配的内存空间执行解密代码

4. API Hashing实现

4.1 获取函数地址流程

  1. 获取PEB地址,通过PEB获取kernel32.dll基址
  2. 根据基址获取函数名称表
  3. 自定义hash算法(示例):
    • LoadLibraryA的hash: D5786
    • GetProcAddress的hash: 348BFA

4.2 关键函数获取

通过上述方法获取以下函数地址:

  • GlobalAlloc
  • GetLastError
  • Sleep
  • VirtualAlloc
  • CreateToolhelp32Snapshot
  • Module32First
  • CloseHandle

5. 多阶段加载技术

  1. 通过VirtualAlloc分配新内存空间
  2. 将部分内容转存到新内存空间
  3. 再次获取LoadLibrary函数地址
  4. 获取更多函数地址(未列出具体函数)

6. 环境检测

  1. 调用GetVersion获取版本号
  2. 若版本低于Windows Vista则返回

7. 持久化技术

7.1 文件操作

  1. 分配新内存空间并写入可执行文件内容
  2. 将内容写入si684017.exe
  3. 释放内存

7.2 注册表操作

  1. 获取注册表句柄:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
  2. 设置启动目录(用户登入会检测)

7.3 计划任务

解密并执行以下命令:

schtasks /Create /SC MINUTE /MO 1 /TN si684017.exe /TR \"当前进程的绝对路径" /F

8. 信息收集

收集以下系统信息:

  1. 操作系统架构(返回值9表示PROCESSOR_ARCHITECTURE_AMD64)
  2. 主机名称
  3. 用户名称
  4. 主机SID
  5. 杀软程序名称

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 调试绕过点

  1. 需要手动修改bl值为1
  2. 在创建互斥量后修改eax值为b7以外的值

11. 解密函数分析

  • 主解密函数:4141f0结合4029b0
  • 加密字符串类似base64但实际为自定义加密
  • 解密出文件名称示例:oneetx.exe

12. 执行流程

  1. 通过ShellExecute创建文件oneetx.exe
  2. oneetx.exe是加载了新恶意内容的程序

13. 静态分析发现

  1. 包含多条疑似base64编码的数据(实际为自定义加密)
  2. 包含敏感导入函数:
    • 网络连接
    • 内存读写
    • 文件编辑
    • 命令执行
    • 注册表修改

14. 技术总结

该样本展示了以下高级恶意软件技术:

  1. 多阶段加载机制
  2. API Hashing技术
  3. 反调试和反分析技术
  4. 环境感知能力
  5. 多种持久化技术
  6. 系统信息收集
  7. 数据外传能力
  8. 自定义加密算法

15. 分析建议

  1. 重点关注内存分配和权限修改操作
  2. 监控注册表启动项变更
  3. 拦截计划任务创建行为
  4. 分析网络通信模式
  5. 提取并分析解密后的字符串内容
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: D5786 GetProcAddress 的hash: 348BFA 4.2 关键函数获取 通过上述方法获取以下函数地址: GlobalAlloc GetLastError Sleep VirtualAlloc CreateToolhelp32Snapshot Module32First CloseHandle 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 计划任务 解密并执行以下命令: 8. 信息收集 收集以下系统信息: 操作系统架构(返回值9表示PROCESSOR_ ARCHITECTURE_ AMD64) 主机名称 用户名称 主机SID 杀软程序名称 9. 数据外传 将收集的信息与解密内容拼接,通过特定URL发送,示例格式: 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. 分析建议 重点关注内存分配和权限修改操作 监控注册表启动项变更 拦截计划任务创建行为 分析网络通信模式 提取并分析解密后的字符串内容