BashiruDamoah/MEMORY-FORENSICS-INVESTIGATION-OF-AN-AGENT-TESLA-MALWARE-INFECTION-USING-VOLATILITY-3
GitHub: BashiruDamoah/MEMORY-FORENSICS-INVESTIGATION-OF-AN-AGENT-TESLA-MALWARE-INFECTION-USING-VOLATILITY-3
使用Volatility 3进行内存取证调查,分析AgentTesla恶意软件感染并提取威胁指标。
Stars: 0 | Forks: 0
# 使用 Volatility 3 对 AgentTesla 恶意软件感染进行内存取证调查
使用 Volatility 3 进行实战内存取证调查——从原始内存映像中进行进程分析、注入检测、注册表取证、SMTP 数据外传字符串提取以及 C2 IOC 恢复。
# 使用 Volatility 3 对 AgentTesla 恶意软件感染进行内存取证调查
对一台感染了 AgentTesla 信息窃取恶意软件(使用 PyInstaller 打包)的 Windows 10 虚拟机进行的实战内存取证调查。分析在 Ubuntu 主机上使用 Volatility 3 进行,涵盖了进程分析、注入检测、DLL 检查、网络取证、注册表持久化以及字符串级 IOC 恢复。
## 免责声明
本仓库仅用于**教育和研究目的**。本次调查中使用的恶意软件样本来源于 [MalwareBazaar](https://bazaar.abuse.ch/) (abuse.ch),一个公开的恶意软件存储库。所有分析均在隔离的、物理断网的虚拟环境中进行。
- 恶意软件样本按照标准信息安全实践,以密码保护的 zip 文件形式提供
- **文件名:** `AgentTesla.zip`
- **密码:** `infected`
- 必须将 zip 文件**下载到本地**才能解压——无法在 GitHub 上直接打开
- 只能在**隔离的、物理断网的虚拟环境**中打开
- 切勿在主机或生产系统上执行恶意软件
- 作者对本仓库中任何材料的误用不承担任何责任
## 项目概述
本调查展示了一套应用于实时受感染机器的完整内存取证工作流程:
1. **内存获取** — 在恶意软件活动运行时,使用 WinPmem 从受感染的 Windows 10 VM 捕获原始内存映像
2. **映像传输与验证** — 将 7.06 GB 的内存转储移至 Ubuntu 分析主机,并使用 `windows.info` 进行验证
3. **进程分析** — 使用 `pslist`、`pstree`、`psscan` 和 `cmdline` 识别恶意的 `internet_detector.exe` 进程及其自生成的子进程
4. **注入检测** — 运行 `malfind` 检查注入的内存区域,发现 `MsMpEng.exe` 中疑似 AV 干扰行为
5. **DLL 检查** — 识别出从 PyInstaller 的 `_MEI` 临时目录加载的 `python310.dll` 和 `ucrtbase.dll`,确认了打包方式
6. **网络取证** — 使用 `netscan` 检查内存中的连接记录
7. **注册表分析** — 枚举配置单元并读取 Run 键值,发现一个带有空字节的可疑 `ransomware.exe` 持久化条目
8. **字符串提取** — 对原始内存转储运行 GNU `strings`,并使用 grep 搜索 SMTP 地址、C2 URL 和键盘记录器标识符
## 展示的技能
- 使用 WinPmem 进行实时内存获取
- 内存映像传输与验证
- 使用 Volatility 3 进行进程分析和隐藏进程检测
- 使用 `malfind` 进行代码注入检测
- 针对非标准加载路径的 DLL 检查
- 从内存中分析注册表取证
- 通过原始字符串提取恢复 IOC
- 识别 PyInstaller 恶意软件打包方式
- 事件响应建议
## 主要发现
| 发现 | 详情 |
|------|------|
| 恶意进程 | `internet_detector.exe`,从 `C:\Tools\internet_detector\` 运行 |
| 自我复制 | PID 2824 在 25 秒内生成了子进程 PID 4740 |
| PyInstaller 打包 | `python310.dll` 从 `AppData\Local\Temp\_MEI28242` 加载 |
| C2 基础设施 | `185.234.72.230`,`gate.php` 端点,伪装为 Google 存储路径 |
| SMTP 数据外传 | 在内存字符串中发现 `admin@smtp.rambler.ru`、`admin@smtp.yandex.ru` |
| AV 干扰 | `MsMpEng.exe` 有 14 个标记为 `PAGE_EXECUTE_READWRITE` 的区域 |
| 注册表持久化 | HKCU Run 键中存在带空字节的 `ransomware.exe` 条目 |
| VirusTotal 检测 | 72 家供应商中有 59 家将该样本标记为恶意 |
## 仓库内容
| 文件 | 描述 |
|------|------|
| `report.pdf` | 完整的调查报告 |
| `AgentTesla.zip` | 受密码保护的恶意软件样本——必须**下载**才能访问。密码:`infected` |
| `iocs.txt` | 从调查中提取的所有威胁指标 (IOC) |
| `volatility_commands.txt` | 使用的所有 Volatility 3 命令及解释 |
| `memory_strings.txt` | 从原始内存转储中恢复的关键字符串 |
## 工具与环境
| 类别 | 工具 |
|------|------|
| 受感染 VM | Windows 10 x64, VMware Workstation 17.5 |
| 分析主机 | Ubuntu 24 |
| 内存获取 | WinPmem |
| 内存分析 | Volatility 3 (v2.28.0) |
| 字符串提取 | GNU strings |
| 进程监控 | Process Explorer (Sysinternals) |
| 威胁情报 | VirusTotal, MalwareBazaar |
## 调查步骤详解
### 步骤 1 — 环境设置
- 配置 Windows 10 VM 使用仅主机网络适配器,以防止真实的 C2 通信
- 在 Ubuntu 分析主机上安装并验证 Volatility 3
- 在引入恶意软件样本之前拍摄干净的 VM 快照
### 步骤 2 — 恶意软件执行与内存捕获
- 在隔离的 VM 内执行 AgentTesla 样本
- 通过 Process Explorer 观察到 `internet_detector.exe` 出现在 PID 2732 下
- 让恶意软件运行约 3 小时以完成完整的持久化设置
- 使用 WinPmem 捕获了 7.06 GB 的原始内存映像
- 通过 Python HTTP 服务器以约 193 MB/s 的速度将映像传输到 Ubuntu 主机
### 步骤 3 — 进程分析
- `pslist` 返回 133 个进程——其中两个名为 `internet_detec` 的条目很突出
- `pstree` 揭示了完整路径 `C:\Tools\internet_detector\internet_detector.exe`
- PID 2824 的父进程是 `svchost.exe` (PID 1268)——这对于用户运行的进程来说不寻常
- PID 4740 由 PID 2824 在约 25 秒后生成——证实了自我复制行为
- `psscan` 与 `pslist` 完全匹配——恶意软件未使用 rootkit 隐藏技术
### 步骤 4 — 注入检测
- 对 PID 2824 和 PID 4740 运行 `malfind` 未返回标记区域
- 全系统扫描标记了 `MsMpEng.exe`,发现 14 个 `PAGE_EXECUTE_READWRITE` 区域——这与 AgentTesla 已知的 AV 干扰行为一致
### 步骤 5 — DLL 检查
- PID 2824 的 DLL 列表干净——全部来自 `C:\Windows\System32\`
- PID 4740 从 `AppData\Local\Temp\_MEI28242\` 加载了 `python310.dll` 和 `ucrtbase.dll`
- `_MEI` 命名模式证实了 PyInstaller——恶意软件是一个编译成独立可执行文件的 Python 脚本
### 步骤 6 — 网络与注册表分析
- `netscan` 未发现到 C2 的活动连接——考虑到仅主机的网络隔离,这是预期的
- `hivelist` 提供了用于查询 Run 键的配置单元偏移量
- HKLM Run 键仅包含合法条目
- HKCU Run 键包含一个带有空字节的 `ransomware.exe` 条目——这是同一 VM 上先前会话的残留
### 步骤 7 — 字符串提取与 IOC 恢复
- `strings -n 8` 从 7 GB 的转储中提取了所有可打印序列
- SMTP grep 返回了 `admin@smtp.rambler.ru`、`admin@smtp.yandex.ru` 以及键盘记录器标识符字符串
- C2 grep 返回了 `185.234.72.230`、`gate.php` URL 以及一个伪装的 Google 存储路径
- 对两个 PID 运行 `dumpfiles` 均未返回输出——这符合 PyInstaller 临时提取执行模型的预期
*作者:Damoah Bashiru*
标签:AlienVault OTX, 逆向工具