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 规则, 内存镜像分析, 威胁情报, 安全报告生成, 库, 应急响应, 开发者工具, 恶意软件分析, 提权检测, 横向移动检测, 网络信息收集, 自动化分类, 进程注入检测, 逆向工具