YaCnDehfuli/VolMemLyzer3-CLI_forensic_tool

GitHub: YaCnDehfuli/VolMemLyzer3-CLI_forensic_tool

一款模块化的 Volatility 3 内存取证工具包,支持并行插件执行、ML 就绪特征提取和渐进式 DFIR 分诊分析。

Stars: 0 | Forks: 0

# VolMemLyzer (易失性内存分析器) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-yellow.svg)](LICENSE) ![Python](https://img.shields.io/badge/Python-3.9+-blue) ![Volatility](https://img.shields.io/badge/Volatility-3.x-black) **技术焦点:** DFIR 自动化 · 易失性内存分析 · Volatility 3 · 并发提取 · IoC 关联 · 分析师分诊 **VolMemLyzer** 是一个模块化的内存取证工具包,它通过三个互补的工作流封装了 **Volatility 3**: 1. **Run 模式** – 便捷的“Volatility 即服务”:并行运行插件、缓存输出,并为下游代码保持工件命名/目录的可预测性。 2. **Extract 模式** – 基于注册表的**特征提取**,从插件输出中进行提取,经扁平化处理并保持稳定 (CSV/JSON),适用于 ML pipeline。 3. **Analyze 模式** – 渐进式的 **DFIR 分诊**工作流(基本环境 → 进程 → 注入 → 网络 → 持久化),具有清晰且由 Rich 渲染的表格。 VolMemLyzer 旨在为希望在自己的代码库中无摩擦运行的研究人员**和分析师**释放 Volatility 的全部潜力——而不仅仅是从 Volatility 的 CLI 中运行。 ## 目录 - [快速开始(兼容性垫片)](#quickstart-compatibility-shim) - [为什么选择 v3(一览)](#why-v3-at-a-glance) - [核心功能](#key-capabilities) - [工作原理](#how-it-fits-together) - [环境要求](#requirements) - [安装](#installation) - [CLI 用法 (volmemlyzer)](#cli-usage-volmemlyzer) - [全局选项](#global-options) - [analyze](#analyze) - [run](#run) - [extract](#extract) - [特征目录(索引)](#feature-catalog-index) - [list](#list) - [Python API](#python-api) - [工件、格式与缓存](#artifacts-formats--caching) - [性能提示](#performance-tips) - [故障排除](#troubleshooting) - [路线图](#roadmap) - [许可证](#license) - [团队成员](#team-members) - [鸣谢](#acknowledgement) ## 快速开始(兼容性垫片) 关于 `main.py`(兼容性垫片)的提醒:保留一个小型的 `main.py` **仅**是为了向后兼容旧文档/脚本。它接受传统的参数,并在每次运行时生成一个**单一的聚合特征文件**。 如果您不需要此遗留入口点,可以删除 `main.py`。保留它不会导致偏差,因为它会直接调用库。 **首选接口:** 使用打包的 CLI 命令 `volmemlyzer`(见下文)。 - CSV → `/features/output.csv`(每个镜像一行) - JSON → `/features/output.json` ### 使用 `main.py` 快速开始 **处理单个转储文件** ``` python main.py \ -f /path/to/images/IMAGE.mem \ -o ./out \ -V /path/to/volatility3/vol.py ``` **批量处理文件夹中的转储文件(递归)** ``` python main.py \ -f /path/to/images/ \ -o ./out \ -V /path/to/volatility3/vol.py ``` 该工具会写入 **`out/features/output.csv`**,其中**每个镜像一行**。 通过跳过繁重的插件来**加快分诊速度**(如果不使用 --drop 或 --plugins,将运行 plugins.py 中的所有插件)。示例: ``` python main.py -f ./mem -o ./out -V ./volatility3/vol.py \ -D "dumpfiles,filescan,mftscan,driverscan,mutantscan,modscan,netscan,poolscanner,symlinkscan,callbacks,deskscan,devicetree,driverirp,drivermodule,windowstations" ``` **遗留选项 (main.py)** ``` -f, --memdump Path to a memory image OR a folder of images (required) -o, --output Output directory for artifacts & features (required) -V, --volatility Path to Volatility3's vol.py (required) -D, --drop Comma-separated plugin list to skip (e.g., "filescan,modscan") -P, --plugins Comma-separated plugin list to include -F, --format csv|json (default: csv) -j, --jobs Parallel workers --no-cache Ignore cached plugin outputs ``` ## 为什么选择 v3(一览) - **模块化架构**(Runner → Registry → Pipeline → Analysis/TUI → CLI),您可以只导入需要的部分。 - **对研究人员友好的 UX**:并行插件执行、缓存和(在可能的情况下)输出格式转换以避免重新运行、稳定的工件命名,以及针对 ML 的每镜像一行 **FeatureRow**。 - **DFIR 分诊工作流**:主观但具备可解释性的步骤,带有清晰的表格(得益于 **Rich**)。 - **稳定、扁平的特征**:跨镜像的列名一致,稳健的 null 处理,清晰的 `plugin.metric` 命名。 ## 核心功能 - **运行 Volatility 3 插件**支持: - 并行执行 (`-j/--jobs`), - 每个插件单独设置超时, - 每次运行选择渲染器, - 缓存重用,并可选择转换为所需格式(见下方说明)。 - 完整的端到端 pipeline,能够自动解析 Volatility 路径(作为服务运行) - 通过提取器函数的**注册表**从选定插件中**提取特征**: - 每次运行扁平化为单个 **CSV/JSON** 文件(**每个镜像一行**), - 命名一致的 ML 就绪特征, - 具备依赖感知能力的插件调度。 - 以多步骤 DFIR 概览的形式**执行分析**(可输出为 JSON): - 0 基本环境 (`windows.info`) - 1 进程 (`pslist`+ `psscan`+ `psxview`+ `pstree` + 交叉检查) - 2 注入 (`malfind`) - 3 网络 (`netscan`) - 4 持久化 (注册表/任务 : `scheduled_tasks` + `userassist` +`hivelist/hivescan`) ## 工作原理 ``` CLI ──► Pipeline ──► VolRunner (vol.py) ──► artifacts/*.json|jsonl|csv|txt │ ├─► Extractors (registry) ──► FeatureRow rows → output.csv │ └─► OverviewAnalysis (steps) ──► Rich tables / JSON summary ``` - **VolRunner** 构建/执行 `vol.py` 命令,并以可预测的方式命名输出: `/_.`,出错时还会有 `<…>.stderr.txt`。 - **Pipeline** 负责编排并行运行、缓存,以及(在支持的情况下)格式转换,以避免仅仅为了更改格式而重新运行插件。 - **ExtractorRegistry** 将插件规范(`windows.pslist`、依赖项、默认渲染器/超时)绑定到 Python 提取器函数。默认情况下会添加所有可用的 Volatility 插件。 - **OverviewAnalysis** 实现了分诊步骤;**TerminalUI** (Rich) 打印具有学术风格的表格,并带有雅致的左侧装饰条。 ## 环境要求 - Python **3.9+** - 本地检出/安装的 **Volatility 3**;您需要使用 `--vol-path`(或 `VOL_PATH` 环境变量)为 VolMemLyzer 指定 `vol.py` 的路径。 VolMemLyzer **不会导入** Volatility;它将作为子进程**调用**它。 - Python 包(如果您使用 `pip install` 则会自动安装): - `pandas`, `numpy`, `python-dateutil`, `tqdm`, `rich` **零摩擦的 Volatility 路径(无需 --vol-path):** 在 v3 中,如果您不传递 --vol-path,VolMemLyzer 会按以下顺序自动解析 Volatility 3:(1) 您提供的任何明确提示(--vol-path 或 VOL_PATH 环境变量);(2) 当前环境中的可导入模块——它会启动 python -m volatility3;(3) 您 PATH 中的 vol 控制台脚本;(4) 一些常见的本地 vol.py 位置。这消除了路径寻找和虚拟环境带来的困扰,因此大多数用户都可以使用合理的默认值运行单行命令,而高级用户仍然可以通过提供 --vol-path 来指定特定的检出路径。最终的结果是一个更简洁、更快的 CLI,它减少了错误,并且完全不依赖硬编码的文件系统路径。 ## 安装 ### 从源码安装(推荐) ``` git clone https://github.com/YaCnDehfuli/VolMemLyzer3-CLI_forensic_tool.git cd VolMemLyzer3-CLI_forensic_tool pip install -e . # 或者,不进行打包: pip install -r requirements.txt python -m volmemlyzer.cli --help or volmemlyzer --help ```