Arizonal8/Memory-Forensics
GitHub: Arizonal8/Memory-Forensics
一个使用 Volatility 框架对感染 Trickbot 木马的 Windows 系统进行完整内存取证分析的实战实验项目。
Stars: 0 | Forks: 0
# 第 10 周:内存取证
## 概述
本次实验对感染了 Trickbot 银行木马的 Windows 7 系统进行了全面的内存取证调查。使用 Volatility 框架,调查分析了 RAM dump,以识别运行中的进程、网络连接、code injection、恶意软件家族、持久化机制以及命令与控制(C2)基础设施。
## 为什么这是必要的
内存取证对于调查高级恶意软件至关重要,因为:
- 恶意软件通常完全在内存中运行,而不会将文件写入磁盘
- 文件中的加密和混淆被绕过 —— 内存显示了恶意代码的解密、运行状态
- 进程注入将恶意软件隐藏在合法的 Windows 进程中
- 内存包含未存储在磁盘上的网络 artefacts、凭据和密钥
- 易失性证据(运行中的进程、网络连接)仅存在于 RAM 中,并在系统关闭时丢失
## 使用的工具
- **Volatility 框架** (v2.6) —— 开源内存取证框架
- **VirusTotal** —— 在线恶意软件哈希分析
- **Imageinfo, Pslist, Pstree, Psscan, Netscan, Malfind** —— Volatility 插件
## 涵盖的关键概念
- 从内存 dump 中识别 OS profile (imageinfo)
- 使用 pslist、pstree 和 psscan 列出并比较进程
- 通过 malfind 插件检测进程注入
- 分析捕获内存时处于活动状态的网络连接
- 使用 VirusTotal 从注入的 PE 哈希中识别恶意软件家族
- 检查句柄和 DLL 以识别恶意文件路径
- 从内存中提取注册表 hive 以进行离线分析
## 识别出的恶意软件:Trickbot
Trickbot 是一种复杂的、模块化的银行木马,最早于 2016 年被发现。它以以下特点而闻名:
- 凭据窃取(浏览器、Windows 凭据存储)
- 网络传播和横向移动
- 模块化 payload 交付(sinj、pwgrab、networkdll 模块)
- 通过 HTTP/HTTPS 进行命令与控制通信
- 进程注入到合法的 Windows 进程中(explorer.exe、svchost.exe)
## 调查结果
### Imageinfo
- **OS Profile:** Win7SP1x64 —— Windows 7 Service Pack 1, 64-bit
- **内存 dump 日期:** 2018-07-24 19:46:32 UTC+0100
### Pslist —— 进程分析
- **PID 2928:** cmd.exe
- 启动时间:2018-07-24 18:46:32
- 父 PID:1632 (vmtoolsd.exe) —— **可疑**(cmd.exe 不应由 VMware Tools daemon 启动)
### Pstree —— 进程层次结构
- **PID 2292:** 有 **8 个子进程**
- 启动日期:2018-07-24 18:35:57
- 可能的感染日期:**2018-07-24**
### Psscan
- 除了 pslist 中可见的进程外,未检测到隐藏进程。
### Netscan —— 可疑网络连接
| 远程 IP | 端口 | 评估 |
|-----------|------|------------|
| 185.17.120.178 | 80 | Trickbot C2 (HTTP) |
| 188.124.167.132 | 8082 | Trickbot C2 (备用端口) |
| 158.58.131.54 | 443 | Trickbot C2 (HTTPS) |
### Malfind —— Code Injection
包含注入的 PE(MZ 标头)代码的进程:
- explorer.exe (PID 1220)
- svchost.exe (PID 576, 1896, 2292, 2464, 2484, 3468, 3560)
### VirusTotal 结果
- **检出率:** 16–50 家供应商将样本标记为恶意
- **恶意软件家族:** **Trickbot**
### 句柄 / DLL 分析
- **恶意文件夹:** `C:\Users\Win7x64\AppData\Roaming\nsgJob`
- **关联进程:** explorer.exe (PID 1220)
- **找到的文件前缀:** `8012d3` —— Trickbot 组件文件
### 注册表分析
- **NTUSER.DAT 偏移量:** 0xfffff8a0017ef010
- **SOFTWARE hive 偏移量:** 0xfffff80000321010
- **SOFTWARE 最后更新:** 2018-07-05 14:23:01 UTC
- **Software 下的子键:** 7
### 进程角色总结
| PID | 进程 | 角色 |
|-----|---------|------|
| 576 | svchost.exe | 系统数据收集 |
| 1220 | explorer.exe | 凭据窃取(密码窃取器) |
| 1896 | svchost.exe | 金融数据拦截(sinj 模块) |
| 2292 | svchost.exe | 8 个子进程的父进程 |
| 2464 | svchost.exe | 金融数据拦截(sinj 模块) |
| 2928 | cmd.exe | 网络发现 / 横向移动 |
## 截图
### Imageinfo

*Volatility imageinfo 输出确认内存 dump 来自 profile 为 Win7SP1x64 的 Windows 7 SP1 64 位系统。*

*完整的 imageinfo 输出,显示内存 dump 时间戳和系统标识符。*
### 进程分析 (Pslist)

*完整的 pslist 输出,显示捕获时所有正在运行的进程。*

*突出显示的 PID 2928 (cmd.exe) —— 由 vmtoolsd.exe (PID 1632) 启动,这很可疑,表明存在 Trickbot 横向移动活动。*

*父子进程关系分析,确认了异常的 cmd.exe 谱系。*
### 进程树 (Pstree)

*Pstree 输出,显示完整的进程层次结构,并识别出具有 8 个子进程的 PID 2292 —— 这与 Trickbot 模块生成一致。*

*PID 2292 的 8 个子进程及其启动时间戳的详细视图。*
### Psscan

*完整的 psscan 输出 —— 除了 pslist 中可见的进程外,未识别出其他隐藏进程。*

*确认 psscan 和 pslist 结果一致的摘要。*
### 网络连接 (Netscan)

*Netscan 输出,显示捕获时处于活动状态的所有网络连接。*

*识别出三个可疑的外部 IP 地址:185.17.120.178:80、188.124.167.132:8082 和 158.58.131.54:443 —— 它们都是 Trickbot C2 endpoint。*
### Code Injection (Malfind)

*Malfind 输出,显示注入内存区域中的 MZ (4D 5A) PE 标头 —— 确认了向合法进程中注入了 shellcode。*

*malfind 标记的所有进程列表:explorer.exe (PID 1220) 和多个 svchost.exe 实例。*
### VirusTotal

*VirusTotal 结果显示,提取的内存样本有 16–50 家供应商检出。*

*多家防病毒供应商确认恶意软件家族为 Trickbot。*
### 句柄和 DLL 分析

*句柄分析揭示了 Trickbot 数据目录:链接到 explorer.exe 的 C:\Users\Win7x64\AppData\Roaming\nsgJob。*

*explorer.exe (PID 1220) 的 DLL 列表,确认了注入的 Trickbot 模块。*

*识别出文件前缀 8012d3 —— 一种 Trickbot 组件文件命名模式。*
### 注册表分析

*Hivelist 输出,显示所有已加载注册表 hive 的内存地址。*

*Software hive 分析显示最后更新时间戳:2018-07-05 14:23:01。*

*枚举内存中 Software 注册表键下的 7 个子键。*
### 附加分析

*识别出 PID 576 (svchost.exe) 负责系统数据收集。*

*PID 1896 链接到 Trickbot 的 sinj(银行注入)模块,用于拦截金融交易。*

*PID 1220 (explorer.exe) 被确认为 Trickbot 的凭据收集组件,针对 Windows 凭据存储。*

*显示发往 C2 服务器的数据渗出流量的网络证据。*

*Trickbot 使用 PID 2928 (cmd.exe) 在受损环境中进行网络发现和横向移动。*
## 学习成果
- 使用 Volatility 获取和分析 Windows 内存 dump
- 识别运行中的进程并检测异常的父子关系
- 使用 malfind 检测进程注入并提取注入的 PE 文件
- 分析网络连接以识别 C2 通信
- 使用 VirusTotal 将恶意软件样本归因于已知的家族
- 检查句柄和 DLL 以识别内存中的恶意 artefacts
- 从内存 dump 中提取并分析注册表 hive
标签:DAST, IP 地址批量处理, SecList, Trickbot, 内存取证, 恶意软件分析, 数字取证, 自动化脚本, 逆向工具