CaelInceptus/Volatility_Report_Generator
GitHub: CaelInceptus/Volatility_Report_Generator
基于 Volatility3 的自动化内存取证分诊工具,批量运行插件、关联分析工件并对可疑进程评分,生成 HTML 报告和 IOC 导出。
Stars: 0 | Forks: 0
# VolaTriage
基于 **Volatility3 Python API** 构建的自动化内存取证分类工具。
针对内存转储运行全套插件,关联分析工件,对可疑进程进行评分,并生成独立的 HTML 报告及导出 IOC JSON。
## 功能
- 自动执行插件(20 个 Windows / 7 个 Linux / 4 个 macOS 插件)
- 工件关联引擎(DKOM、进程注入、可疑父进程、隐藏模块等)
- 基于启发式算法的进程可疑度评分(CLEAN → LOW → MEDIUM → HIGH → CRITICAL)
- 独立的深色主题 HTML 报告(无 CDN,内嵌 CSS + JS)
- 导出 IOC JSON(IP、文件路径、注入、隐藏进程)
## 环境要求
```
Python 3.9+
volatility3 >= 2.4.0
jinja2 >= 3.1.0
```
```
pip install volatility3 jinja2
```
## 支持的转储格式
| 格式 | 扩展名 |
|--------|-----------|
| 原始物理内存 | `.raw` `.dd` `.mem` `.img` `.bin` |
| Windows 崩溃转储 / WinPmem | `.dmp` |
| Windows 休眠文件 | `hiberfil.sys` |
| VMware 快照 / 挂起 | `.vmem` `.vmsn` `.vmss` |
| VirtualBox 保存的状态 | `.sav` |
| LiME (Linux Memory Extractor) | `.lime` |
| Expert Witness Format | `.E01` `.e01` *(需要 libewf)* |
## 用法
```
python main.py -d [options]
```
### 选项
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-d`, `--dump` | 内存转储路径 *(必填)* | — |
| `-o`, `--output` | 报告的输出目录 | `./reports/` |
| `--os` | 强制指定操作系统:`windows` / `linux` / `mac` | 自动检测 |
| `--plugins` | 以逗号分隔的插件列表,用于覆盖默认设置 | 全部 |
| `-v`, `--verbose` | 启用调试日志 | 关闭 |
| `--no-color` | 禁用 ANSI 颜色 | 关闭 |
### 示例
```
# 基础 Windows dump 分析
python main.py -d MemoryDump.mem
# 指定 OS 和自定义输出目录
python main.py -d memdump.dmp --os windows -o /tmp/forensics/
# Linux LiMe dump,仅特定 plugins
python main.py -d memory.lime --os linux --plugins linux.pslist,linux.netstat
# Verbose 模式(显示每个 plugin 的 debug 输出)
python main.py -d dump.vmem -v
```
## 输出
```
reports/
├── volatriage_report_YYYYMMDD_HHMMSS.html # Full HTML report
└── volatriage_iocs_YYYYMMDD_HHMMSS.json # IOC export
```
### HTML 报告部分
1. **执行摘要** — 进程数、注入、隐藏进程、网络连接
2. **首要嫌疑** — 按可疑评分排序的进程及关键指标
3. **严重与高危发现** — 按严重程度分组的关联发现
4. **网络活动** — 所有外部连接及其关联进程
5. **代码注入** — malfind 结果及十六进制预览
6. **所有进程** — 完整的可排序进程表
7. **原始插件数据** — 可折叠部分(pslist、psscan、modules、svcscan、netscan、cmdline)
### IOC JSON 结构
```
{
"metadata": { "generated_at": "...", "tool": "VolaTriage v1.0.0" },
"iocs": {
"ip_addresses": [...],
"file_paths": [...],
"process_names": [...]
},
"suspicious_processes": [...],
"network_connections": [...],
"injections": [...],
"hidden_processes": [...]
}
```
## 评分
每个进程初始分为 0,并根据关联的发现累积分数:
| 指标 | 分数 |
|-----------|-------|
| 隐藏进程(DKOM — 在 psscan 中,但不在 pslist 中) | +80 |
| 代码注入(malfind) | +70 |
| 已注入进程上的网络连接 | +40 *(附加)* |
| 可疑的父子进程关系 | +40 |
| 隐藏模块(ldrmodules InLoad/InInit/InMem = False) | +50 |
| 可疑的服务二进制文件路径 | +60 |
| 可疑的 DLL 路径(Temp、AppData…) | +25 *(最高 +60)* |
| 可疑的命令行(Base64、IEX、certutil…) | +35 |
| 已启用的危险权限(SeDebugPrivilege…) | +30 |
| 分数 | 等级 |
|-------|-------|
| 0 – 10 | CLEAN |
| 11 – 30 | LOW |
| 31 – 60 | MEDIUM |
| 61 – 100 | HIGH |
| > 100 | CRITICAL |
## 项目结构
```
├── main.py # CLI entry point
└── vola_triage/
├── runner.py # Volatility3 Python API — plugin execution
├── correlator.py # Artifact correlation (DKOM, injection, parents…)
├── scorer.py # Heuristic suspicion scoring
├── report.py # HTML report generation (Jinja2)
└── ioc_exporter.py # IOC JSON export
```
## 待办事项
- [ ] **进程白名单** — 在评分时排除已知的合法进程(FTK Imager、vmtoolsd、在虚拟机环境中运行的系统进程),以减少误报
- [ ] **针对误报的评分器优化** — 调整 ldrmodules 权重(目前在 81 个合法 DLL 的隐藏模块中出现过多代表性问题),添加单项指标置信度,并根据进程上下文(系统进程与用户态进程)调整阈值
标签:JARM, Python, Volatility3, 内存分析, 安全, 库, 应急响应, 数字取证, 无后门, 自动化脚本, 超时处理, 逆向工具