对AgentTesla恶意软件多阶段加载器的一次手动分析
字数 2152 2025-08-19 12:41:39
AgentTesla恶意软件多阶段加载器手动分析教学文档
1. 样本概述
Agent Tesla是一款自2014年存在的密码窃取间谍软件,主要功能包括:
- 记录按键和用户交互
- 窃取Web浏览器、邮件客户端和FTP服务器信息
- 捕获屏幕截图和视频
- 记录剪贴板信息和表单值
- 具备持久性和规避技术
传播方式:主要通过垃圾邮件活动,通过恶意文档或恶意链接传播
2. 样本基本信息
2.1 IOC信息
- SHA256: 7512be2746137d9694e3ec3a83e8ab4c6e4d826798a04381de53d4c6973d519f
- SHA1: 0ccbe92478dca12afc4256bbfa0cefa95eed98d0
- MD5: 3a8596945040461302d54f41d5fa9fb9
- 样本下载地址: Abuse.ch沙箱链接
2.2 初始样本分析
使用DIE(Detect It Easy)分析初始样本:
- 文件类型:Nullsoft Scriptable Install System (NSIS)打包的exe安装程序
- 可使用7-zip解压获得内部文件
解压后得到三个文件:
- cwlkewfbz.exe
- djdqvq.sra
- pgkayd.aq
3. 文件分析
3.1 cwlkewfbz.exe分析
- 32位程序,非.NET框架构建
- 无混淆保护
- 信息熵分析显示无高熵区域,表明无加壳
- 导入表分析发现VirtualAlloc函数,常用于内存分配和嵌入有效负载
3.2 其他文件分析
- djdqvq.sra: 二进制文件,高熵值表明被加密
- pgkayd.aq: 二进制文件,熵值较低,可能采用低强度加密
4. 动态分析准备
4.1 提取NSIS脚本
- 使用7-zip 15.05或更低版本解压可获取.nsi脚本
- 脚本内容显示cwlkewfbz.exe会以pgkayd.aq作为参数执行
4.2 x32dbg调试设置
- 使用x32dbg的"File Command Line"功能设置参数
- 关键断点设置:
- CreateFileA
- VirtualAlloc
5. 反调试技术分析
5.1 时钟反调试
代码逻辑:
- 调用GetTickCount获取初始时间
- Sleep(702毫秒)
- 再次调用GetTickCount
- 如果两次时间差小于700毫秒则退出
原理:沙箱或调试器通常将sleep时间设为0,导致时间差过小
6. Shellcode提取与分析
6.1 提取过程
- 在VirtualAlloc处下断点
- 运行到分配内存后,在内存起始处设置硬件断点
- 跟踪内存填充过程
- 发现数据被异或加密
- 在解密完成后dump内存内容
6.2 Shellcode分析工具
使用Blobrunner工具加载shellcode:
- 命令行执行:
blobrunner.exe dump.bin - 使用x32dbg附加进程
- 设置断点:
- 基地址断点
- API哈希函数断点(基地址+0x73)
7. API哈希解析技术
7.1 哈希函数特点
- 使用自定义哈希算法
- 不同于常见的0xD哈希算法
7.2 自动化解析方法
- 在API哈希函数入口设置条件断点
- 记录传入的哈希值和解析结果
- 使用日志功能自动记录所有解析的API
解析出的部分API:
- ExitProcess
- lstrcatW
- CreateFileW
8. 多阶段加载过程分析
8.1 第一阶段(cwlkewfbz.exe)
- 主要功能:解密并加载下一阶段payload
- 行为:
- 创建文件
- 分配内存
- 解密数据
- 执行下一阶段代码
8.2 第二阶段(djdqvq.sra)
- 被加密的二进制文件
- 由第一阶段解密后加载
- 功能:准备执行环境并加载最终payload
8.3 第三阶段
- 使用DIE分析发现.NET库
- 包含资源段,可dump出最终payload
- 为Agent Tesla主体功能模块
8.4 第四阶段
- 重命名为dump3.bin
- 包含简单混淆的代码
- 实现窃密等恶意功能
9. 恶意行为分析
9.1 文件操作
- 在Temp目录创建文件
- 读取加密的payload文件
9.2 持久性技术
- 通过多阶段加载实现
- 可能修改注册表或创建计划任务
9.3 数据窃取
- 最终payload包含窃取功能:
- 浏览器凭据
- 邮件客户端数据
- FTP信息
- 屏幕截图
- 剪贴板内容
10. 分析技巧总结
-
NSIS样本处理:
- 使用适当版本的7-zip解压
- 检查.nsi脚本了解执行流程
-
反调试对抗:
- 识别时钟检测
- 绕过简单的反调试机制
-
Shellcode分析:
- 使用Blobrunner工具
- 硬件断点跟踪内存写入
-
API哈希解析:
- 条件断点自动化
- 哈希算法逆向
-
多阶段分析:
- 跟踪每个阶段的解密过程
- 注意内存分配和文件操作
-
工具使用:
- DIE快速识别文件类型
- x32dbg动态调试
- Ghidra静态分析
11. 防御建议
-
检测方面:
- 监控NSIS安装程序行为
- 检测多阶段加载过程
- 关注Temp目录异常文件创建
-
防护方面:
- 阻止可疑的API调用序列
- 限制VirtualAlloc等敏感API
- 检测时钟反调试技术
-
响应方面:
- 收集相关IOC
- 检查系统是否存在类似加载行为
- 分析内存中的可疑shellcode