Agent Tesla内存邮箱取证
字数 1686 2025-08-06 08:35:32
Agent Tesla内存邮箱取证技术详解
一、Agent Tesla概述
Agent Tesla是一种历史悠久的远程访问木马(RAT),最早于2014年作为商业产品出现,后转入地下论坛售卖。其主要特点包括:
- 变种繁多:具有不计其数的家族历史和变种
- 远控手段多样:支持FTP、HTTP、电子邮件等多种方式传输窃取的数据
- 使用匿名邮箱:攻击团队偏好使用匿名邮箱和二级邮箱作为数据外传渠道
- 多层套壳技术:常使用多层包装进行免杀,但核心母体仍基于.NET编写
二、样本分析技术
1. 脱壳技术
-
OD调试方法:
- 将样本拖入OD后,在
VirtualAlloc下断点 - 运行跟踪两步后,样本会执行Shellcode
- Shellcode会动态获取API地址并释放第二阶段payload
- 将样本拖入OD后,在
-
反调试对抗:
- 样本包含多个反调试函数
- 当调试器中出现"VMVMVM"或"KVM-XEN-VMwer"等字符串时,需手动清除
- 建议不步入函数,直接根据逻辑判断
-
payload提取:
- 第二阶段payload通常会解密资源并释放.pdf文件作为诱饵
- 使用ShellExec执行后继续查找资源释放的payload
- 提取的PE通常带有UPX壳,需进一步脱壳
2. Tesla特征分析
-
入口点特征:
- 样本常先用De4去混淆
- 静态分析可见大量俄语字符串
- 会释放.NET组件
-
持久化技术:
- 从XML文件导入计划任务实现持久化
- 在
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent生成快捷方式 - 关注
ShellExecuteOnSTAThread和Start函数,它们会执行ShellExecuteFunction
三、邮箱取证技术
1. SMTP取证步骤
-
定位关键函数:
- 先找到SMTP相关函数
- 记录账号密码的资源编号
NetworkCredential credentials初始化时会使用这些资源编号
-
资源解密方法:
- 查找包含
GetString函数的资源解密部分 - 在函数头下断点
- 运行Agent Tesla,断点处会暂停执行
- 查找包含
-
账号密码提取:
- 目标不是完整运行样本,而是解密资源
- 找到资源解密ID后,将解密资源替换为账号密码的资源编号
- 在
return GetString函数下断运行
-
密码提取细节:
- 进入
GetString函数,在return处下断 - bytes变量包含解密后的账号信息
- 对于密码提取需要重新调试,因为内存中可能无法同时提取账号和密码
- 进入
2. 关键函数分析
-
GetString函数:- 负责解密资源
- 在return处下断可获取解密后的数据
- bytes变量包含账号或密码信息
-
资源编号:
- 如示例中的487680和487648
- 需要通过调试确定具体样本使用的编号
四、自动化取证方案
第一阶段:样本提取
-
套壳样本自动化提取:
- 不关注套壳本身的免杀技术
- 使用轻量级沙箱提取内存中加载的.NET PE
- 通过关键API HOOK和内存扫描准确DUMP母体
-
反调试和脱壳处理:
- 套壳的反调试是主要难点
- 不同攻击团队的套壳复杂度不同
- 加壳方式多为常规壳,无强壳,相对容易处理
第二阶段:.NET分析
-
HOOK分析:
- 识别邮箱、FTP等资源的ID
- 获取对应的解密函数统一解密
- 需要确定资源解密流程
-
工具开发建议:
- 基于ILSpy/dnSpy开发.NET反汇编Hook调试器
- 便于获取资源函数和控制流程
- 实现自动化资源解密
五、技术要点总结
-
关键调试技巧:
- VirtualAlloc断点是起始点
- 避免步入反调试函数
- 及时清除虚拟机检测字符串
-
资源解密核心:
- GetString函数是解密关键
- 资源编号需要动态确定
- 账号密码需分开提取
-
自动化方向:
- 内存PE提取是基础
- 反汇编Hook是高效手段
- 资源解密流程标准化
本技术文档详细介绍了Agent Tesla的邮箱取证全过程,从样本分析到自动化取证方案,涵盖了关键技术和操作细节,可作为安全研究人员分析此类恶意软件的实用指南。