对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解压获得内部文件

解压后得到三个文件:

  1. cwlkewfbz.exe
  2. djdqvq.sra
  3. 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 时钟反调试

代码逻辑:

  1. 调用GetTickCount获取初始时间
  2. Sleep(702毫秒)
  3. 再次调用GetTickCount
  4. 如果两次时间差小于700毫秒则退出

原理:沙箱或调试器通常将sleep时间设为0,导致时间差过小

6. Shellcode提取与分析

6.1 提取过程

  1. 在VirtualAlloc处下断点
  2. 运行到分配内存后,在内存起始处设置硬件断点
  3. 跟踪内存填充过程
  4. 发现数据被异或加密
  5. 在解密完成后dump内存内容

6.2 Shellcode分析工具

使用Blobrunner工具加载shellcode:

  1. 命令行执行:blobrunner.exe dump.bin
  2. 使用x32dbg附加进程
  3. 设置断点:
    • 基地址断点
    • API哈希函数断点(基地址+0x73)

7. API哈希解析技术

7.1 哈希函数特点

  • 使用自定义哈希算法
  • 不同于常见的0xD哈希算法

7.2 自动化解析方法

  1. 在API哈希函数入口设置条件断点
  2. 记录传入的哈希值和解析结果
  3. 使用日志功能自动记录所有解析的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. 分析技巧总结

  1. NSIS样本处理

    • 使用适当版本的7-zip解压
    • 检查.nsi脚本了解执行流程
  2. 反调试对抗

    • 识别时钟检测
    • 绕过简单的反调试机制
  3. Shellcode分析

    • 使用Blobrunner工具
    • 硬件断点跟踪内存写入
  4. API哈希解析

    • 条件断点自动化
    • 哈希算法逆向
  5. 多阶段分析

    • 跟踪每个阶段的解密过程
    • 注意内存分配和文件操作
  6. 工具使用

    • DIE快速识别文件类型
    • x32dbg动态调试
    • Ghidra静态分析

11. 防御建议

  1. 检测方面

    • 监控NSIS安装程序行为
    • 检测多阶段加载过程
    • 关注Temp目录异常文件创建
  2. 防护方面

    • 阻止可疑的API调用序列
    • 限制VirtualAlloc等敏感API
    • 检测时钟反调试技术
  3. 响应方面

    • 收集相关IOC
    • 检查系统是否存在类似加载行为
    • 分析内存中的可疑shellcode
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