dfarid479/dfir-memdump
GitHub: dfarid479/dfir-memdump
基于Volatility3的Windows内存取证自动化分析工具,集成多源情报检测并生成带MITRE ATT&CK映射的结构化报告。
Stars: 0 | Forks: 0
# dfir-memdump
**由 Volatility3 驱动的 Windows 内存取证分析工具。**
针对内存镜像运行一套精心筛选的 Volatility3 插件,将结果通过九个情报模块进行处理,并生成结构化的 JSON、Markdown 和自包含 HTML 格式的分类报告 —— 可直接移交给领导层、存入案件文件夹或导入 SIEM。
## 功能概述
| 阶段 | 执行内容 |
|---|---|
| **Plugin execution** (插件执行) | 通过 Volatility3 运行 `windows.pslist`, `windows.netscan`, `windows.malfind`, `windows.cmdline`, `windows.dlllist`, `windows.handles`, `windows.privileges` |
| **Intelligence analysis** (情报分析) | 九个模块分析输出中的行为指标 |
| **Report generation** (报告生成) | 输出 JSON (机器可读), Markdown, 以及交互式 HTML |
### 情报模块
| 模块 | 检测内容 |
|---|---|
| `AnomalyDetector` | 父子进程伪造、名称/路径伪装、进程镂空指示符、异常会话 ID |
| `LolbasChecker` | 用于执行、绕过或横向移动的 Living-off-the-Land 二进制文件 |
| `C2Detector` | 连接到 Feodo tracker C2 IP、可疑出站端口、已知恶意软件回调 |
| `YaraEngine` | VAD 区域中的 Shellcode、凭据获取工具、C2 框架 (Cobalt Strike, Meterpreter, Sliver) 以及加壳工具 |
| `VTClient` | 对进程镜像进行 VirusTotal SHA-256 查询 (4 请求/分钟, SQLite 缓存) |
| `StringExtractor` | 从 malfind 十六进制转储中提取 URL、外部 IP、执行命令、可疑路径和 base64 代码段 |
| `LateralMovementDetector` | SMB/RDP/WinRM/DCOM 连接、18 种已知的横向移动工具特征、cmdline 模式 (net use, wmiexec, Invoke-Command 等) |
| `MutexChecker` | 20+ 种已知恶意软件互斥体 (Cobalt Strike, WannaCry, LockBit, NjRAT, Mimikatz…),敏感注册表键句柄,跨进程句柄滥用 |
| `PrivilegeChecker` | 非系统进程上的危险令牌权限:`SeDebugPrivilege`, `SeImpersonatePrivilege`, `SeTcbPrivilege`, `SeLoadDriverPrivilege` 及其他五种 |
### 报告功能
- **Executive Summary (执行摘要)** — 为领导层自动生成的优先级叙述
- **Process Risk Leaderboard (进程风险排行榜)** — 根据加权发现得分排名的顶级进程 (CRITICAL=10 / HIGH=5 / MEDIUM=2 / LOW=1)
- **Process Tree (进程树)** — 父→子层级结构,可疑 PID 标有 `[!]` 标志及 cmdline 提示
- **Event Timeline (事件时间线)** — 按时间顺序排列的进程创建 + 网络事件,标记条目优先显示
- **Attack Chain Reconstruction (攻击链重建)** — 按 MITRE ATT&CK 战术分组的发现,沿杀伤链 (Initial Access → Execution → … → Impact) 排序,每阶段包含简明英语叙述
- **Findings (发现)** — 按严重程度着色,链接到 MITRE ATT&CK,包含证据块、IOC 标签 (点击复制)
- **IOC Table (IOC 表)** — 去重后的 IP、哈希、互斥体、注册表键、文件路径,可用于导入 SIEM
- **MITRE ATT&CK Coverage (覆盖范围)** — 链接到技术页面的徽章网格
- **Print / Save PDF** — 从 HTML 报告一键操作
## 系统要求
- Python 3.10+
- [Volatility3](https://github.com/volatilityfoundation/volatility3) 2.7+ (`vol` 必须在 PATH 中,或在 `.env` 中设置 `VOL3_PATH`)
- Windows 内存镜像 (`.raw`, `.mem`, `.vmem`, `.dmp` 等)
- *(可选)* `yara-python` 用于 YARA 扫描
- *(可选)* VirusTotal API 密钥用于哈希查询
## 安装说明
```
git clone https://github.com/dfarid479/dfir-memdump.git
cd dfir-memdump
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .
# 必须安装 Volatility3 并将其添加到 PATH
pip install volatility3
# 可选:复制并填写 env 模板
cp .env.example .env
# 如果需要 VirusTotal 查询,请使用您的 VT_API_KEY 编辑 .env
```
## 快速入门
```
# 完整分析 — JSON + Markdown + HTML 报告位于 ./reports/
dfir-memdump analyze /path/to/memory.raw
# 仅 HTML,自定义输出文件夹
dfir-memdump analyze /path/to/memory.raw --format html --output ./case-001/
# 跳过 VirusTotal(离线 / 更快)
dfir-memdump analyze /path/to/memory.raw --no-vt
# 跳过 YARA(更快,无需 yara-python)
dfir-memdump analyze /path/to/memory.raw --no-yara
# 指定 Volatility3 OS profile
dfir-memdump analyze /path/to/memory.raw --profile Win10x64_19041
# 自定义报告文件名主干
dfir-memdump analyze /path/to/memory.raw --stem case-001-hostname
# 打印版本
dfir-memdump version
```
HTML 报告可在任何浏览器中打开 —— 点击 **Print / Save PDF** 导出适合打印的 PDF。
## 选项参考
```
dfir-memdump analyze IMAGE [OPTIONS]
Arguments:
IMAGE Path to the memory image file [required]
Options:
-p, --profile Volatility3 profile override (e.g. Win10x64_19041)
-o, --output Output directory [default: ./reports]
-f, --format Report format: json | markdown | html | all [default: all]
--no-vt Skip VirusTotal hash lookups
--no-yara Skip YARA scanning
--stem Report filename stem [default: .triage]
--debug Enable debug logging
```
## 环境变量
将 `.env.example` 复制为 `.env` 并根据需要设置:
| 变量 | 默认值 | 描述 |
|---|---|---|
| `VT_API_KEY` | *(空)* | VirusTotal API 密钥。免费层:4 请求/分钟。留空则跳过。 |
| `VOL3_PATH` | `vol` | 如果 Volatility3 二进制文件不在 `PATH` 中,则指定其路径 |
## 项目结构
```
dfir_memdump/
cli.py # Click CLI entrypoint
runner.py # Orchestrator: plugins → intel → report
models.py # Pydantic models (single source of truth)
config.py # Pydantic-settings (reads .env)
exceptions.py # Custom exceptions
plugins/
pslist.py # windows.pslist.PsList
netscan.py # windows.netscan.NetScan
malfind.py # windows.malfind.Malfind
cmdline.py # windows.cmdline.CmdLine
dlllist.py # windows.dlllist.DllList
handles.py # windows.handles.Handles
privileges.py # windows.privileges.Privs
intelligence/
anomaly_detector.py
lolbas_checker.py
c2_detector.py
yara_engine.py
vt_client.py
string_extractor.py
lateral_movement.py
mutex_checker.py
privilege_checker.py
chain_builder.py # Attack chain reconstruction
attck_mapper.py # MITRE ATT&CK technique registry
report/
builder.py # Format dispatcher
json_report.py
markdown_report.py
html_report.py # Self-contained HTML (all CSS/JS inline)
data/
yara/
shellcode.yar
credential_tools.yar
c2_frameworks.yar
packers.yar
templates/
report.md.j2 # Jinja2 Markdown report template
```
## MITRE ATT&CK 覆盖范围
| 技术 ID | 名称 | 模块 |
|---|---|---|
| T1055 / T1055.012 | Process Injection / Process Hollowing | AnomalyDetector |
| T1036 / T1036.003 | Masquerading / Rename System Utilities | AnomalyDetector |
| T1059.001 / T1059.003 | PowerShell / Windows Command Shell | LolbasChecker |
| T1218 | System Binary Proxy Execution (LOLBAS) | LolbasChecker |
| T1071 / T1571 | C2 Application Layer / Non-Standard Port | C2Detector |
| T1003 / T1003.001 | OS Credential Dumping / LSASS Memory | MutexChecker, PrivilegeChecker |
| T1027 | Obfuscated Files or Information | YaraEngine |
| T1021.001–T1021.006 | Remote Services (RDP, SMB, WinRM, DCOM) | LateralMovementDetector |
| T1550.002 | Pass the Hash | LateralMovementDetector |
| T1134 / T1134.001 | Access Token Manipulation / Token Theft | PrivilegeChecker |
| T1014 | Rootkit (SeLoadDriver abuse) | PrivilegeChecker |
| T1486 | Data Encrypted for Impact (ransomware) | MutexChecker |
## 扩展工具
**添加 YARA 规则:** 将 `.yar` 文件放入 `data/yara/` —— 它将被自动加载。
**添加情报模块:**
1. 创建 `dfir_memdump/intelligence/my_module.py`
2. 继承 `BaseIntelModule`,实现 `analyze(ctx) -> list[Finding]`
3. 将其添加到 `runner.py` 的模块列表中
**添加 MITRE 映射:** 在 `intelligence/attck_mapper.py` 中添加条目,并使用 `get_mitre("your_key")` 引用它。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
## 免责声明
本工具仅供**授权的取证调查和安全研究**使用。在获取或分析内存镜像之前,请务必确保您拥有合法授权。作者不对滥用行为承担任何责任。
标签:C2 通信检测, DAST, DNS 解析, IP 地址批量处理, LOLBAS, PE 加载器, Volatility3, Web报告查看器, Windows 内存取证, Yara 规则, 内存镜像分析, 威胁情报, 安全报告生成, 库, 应急响应, 开发者工具, 恶意软件分析, 提权检测, 横向移动检测, 网络信息收集, 自动化分类, 进程注入检测, 逆向工具