dfirvault/VolMenu

GitHub: dfirvault/VolMenu

VolMenu 是一个基于 Windows 控制台菜单的 Volatility 3 封装工具,为内存取证分析提供引导式配置、扫描队列和进度追踪功能。

Stars: 1 | Forks: 0

# VolMenu 一个轻量级的、基于菜单的 [Volatility 3](https://github.com/volatilityfoundation/volatility3) Windows Python 封装工具。VolMenu 将引导您完成配置 `vol.exe`、选择内存镜像和输出文件夹、选择目标操作系统、选择插件以及将多个扫描排队以便连续运行的所有操作——所有这些都通过一个简单的控制台菜单完成。 image ## 功能 - **持久化配置** — 将 `vol.exe` 的路径和您的性能偏好设置存储在 `HKCU\Software\DFIRVault\VolMenu` 中,因此您只需设置一次。 - **引导式 `vol.exe` 设置** — 在首次运行时(或配置的路径不再有效时),会打开一个文件选择器供您定位 `vol.exe`。如果您在没有选择文件的情况下关闭选择器,VolMenu 会打开 [Volatility 3 GitHub 页面](https://github.com/volatilityfoundation/volatility3) 以便您下载/构建它。 - **自动检测符号表** — 根据您选择的目标操作系统,在 `vol.exe` 旁边查找 `symbols\windows`、`symbols\linux` 或 `symbols\mac` 文件夹,并自动通过 `-s` 将其传递给 Volatility。 - **性能配置菜单** — 切换并行处理、设置 worker 数量、启用详细输出以及控制符号缓存行为。 - **引导式扫描设置** — 选择内存镜像、选择输出文件夹、选取目标操作系统(Windows、Linux 或 Mac),并选择一个或多个插件(或运行适用于该操作系统的所有可用插件)。 - **扫描队列** — 在执行开始前配置多个扫描;VolMenu 会按顺序运行它们,并报告每个插件和每次扫描的进度。 - **进度反馈** — 实时状态更新(`RUNNING...`、`DONE [OK]` 等)以及插件计数器(`[N/total]`)和整体扫描计数器(`Scan X/Y`),让您随时了解当前状况。 - **独立的插件输出文件** — 每个插件的结果都会作为一个单独的 `.txt` 文件保存在您选择的输出目录中。 ## 环境要求 - **Windows**(该工具在其他平台上会立即退出——它依赖于 Windows 注册表和原生文件对话框) - **Python 3.9+** 以及 `tkinter`(已包含在标准的 Windows CPython 安装中) - **Volatility 3**,包括以下任一形式: - 独立的 `vol.exe` 构建版本(例如通过 PyInstaller 构建),或 - 通过等效的 `.exe` 包装器调用的 `vol.py`/`vol` 入口点 无需任何第三方 Python 包——VolMenu 仅使用标准库(`winreg`、`tkinter`、`subprocess`、`pathlib` 等)。 ## 安装说明 1. 确保已安装或构建了 Volatility 3(`vol.exe`)。有关安装说明,请参阅 [Volatility 3 代码库](https://github.com/volatilityfoundation/volatility3)。 2. 从此代码库下载 `VolMenu.py`。 3. 使用 Python 运行它: ``` python VolMenu.py ``` ## 首次运行 首次启动时,VolMenu 会检查注册表中是否保存了 `vol.exe` 路径。如果不存在(或保存的路径不再有效): 1. 系统会提示您按 **Enter** 键打开文件选择器。 2. 浏览并选择您的 `vol.exe` 文件。 3. 该路径将被保存到 `HKCU\Software\DFIRVault\VolMenu` 以便将来使用。 如果您**在没有选择文件的情况下关闭文件选择器**,VolMenu 会在您的默认浏览器中打开 Volatility 3 的 GitHub 页面并退出,以便您下载或构建它。 ## 主菜单 ``` ================================================== VolMenu - Volatility 3 Wrapper ================================================== vol.exe: C:\Tools\volatility3\vol.exe -------------------------------------------------- 1. New scan 2. Configure performance settings 3. Change vol.exe location 0. Exit ================================================== ``` ### 1. 新建扫描 启动引导式扫描工作流: 1. **选择内存镜像** — 打开一个文件选择器,过滤常见的内存镜像扩展名(`.raw`、`.mem`、`.dmp`、`.vmem`、`.bin`、`.img`、`.lime`),并带有“所有文件”选项。 2. **选择输出目录** — 打开一个文件夹选择器,用于选择插件结果的保存位置。 3. **选择目标操作系统** — 选择 Windows、Linux 或 Mac。这决定了使用哪个符号目录以及哪些插件可用。 4. **选择插件** — 打开一个交互式复选框风格的菜单: - **上/下方向键**(或 `W`/`S`)移动高亮显示 - **空格键** 切换高亮显示的插件的开/关状态 - **A** 全选/取消全选所有插件 - **Enter** 确认您的选择(如果没有勾选任何内容,则仅运行高亮显示的插件) - **"Run ALL plugins"** 行会运行所选操作系统的所有插件 - **Esc** 或 **C** 取消并返回主菜单 配置完扫描后,系统会询问您是否要**排队进行另一次扫描**。您可以根据需要重复此操作多次——每次扫描都会与其对应的镜像、输出文件夹、操作系统和插件选择一起添加到队列中。一旦您拒绝添加更多扫描,VolMenu 将按顺序运行队列中的所有扫描。 ### 在任意步骤取消 “新建扫描”工作流的每一个步骤都可以取消并返回主菜单: - **内存镜像 / 输出目录提示** — 输入 `c` 而不是按 Enter 键。 - **目标操作系统菜单** — 输入 `C`。 - **插件复选框菜单** — 按 `Esc` 或 `C`。 如果您在扫描已经排队时取消,系统会询问您是放弃队列还是运行已经配置好的扫描。 #### 符号目录检测 对于每次扫描,VolMenu 都会在 `vol.exe` 旁边查找与所选操作系统匹配的子目录: ``` \symbols\windows \symbols\linux \symbols\mac ``` 如果找到,它会通过 `-s ` 传递给 Volatility。如果未找到,扫描将在没有它的情况下继续进行(Volatility 的默认符号解析仍然适用)。 #### 输出 每个插件都会生成一个以插件本身命名的独立输出文件,例如: ``` windows_pslist_PsList.txt windows_netscan_NetScan.txt ``` 该文件会保存到您为该扫描选择的输出目录中。 #### 进度输出 在扫描运行期间,VolMenu 会为每个插件和每次扫描打印实时进度。除了每个插件的状态行之外,VolMenu 还会将 `vol.exe` 作为后台进程启动,并每隔半秒轮询一次其输出文件。每当 Volatility 写入如下行时: ``` Progress: 45.32 Reading Symbol layer ``` VolMenu 就会将最新的百分比和状态消息打印到控制台,以便您准确了解当前插件的执行进度: ``` ############################################################ # 扫描 1/2: memdump.raw [Windows] # 使用 symbols directory: C:\Tools\volatility3\symbols\windows # 要运行的 plugins: 3 ############################################################ [1/3] (Scan 1/2) Running: windows.pslist.PsList Command: C:\Tools\volatility3\vol.exe -f memdump.raw windows.pslist.PsList Output -> C:\Output\windows_pslist_PsList.txt Status: RUNNING... (this may take a while, please wait) Progress: 0.00% - Scanning primary layer [plugin 1/3, scan 1/2] Progress: 45.32% - Reading Symbol layer [plugin 1/3, scan 1/2] Progress: 99.99% - Reading Symbol layer [plugin 1/3, scan 1/2] Status: DONE [OK] (1/3 complete) ``` #### 输出文件清理 一旦插件完成运行,VolMenu 会自动清理其输出文件: - 删除每一行以 `Progress` 开头的内容(这些只是临时的进度更新,会使保存的报告显得杂乱)。 - 将多个连续的空行合并为一个单行空白。 这可以保持保存的 `.txt` 报告整洁,并专注于实际的插件输出。 ### 2. 配置性能设置 ``` ================================================== Performance Configuration ================================================== 1. Parallelism (-p): OFF 2. Worker count: 8 (CPUs detected: 8) 3. Verbose output (-vvv): OFF 4. Smart layer caching: ON 0. Back to main menu ================================================== ``` - **并行处理** — 启用后,将 `-p ` 传递给 `vol.exe`,以启用 Volatility 3 的并行处理功能并使用配置的 worker 数量。 - **Worker 数量** — 启用并行处理时使用的 worker 数量。 - **详细输出** — 在每次插件运行时添加 `-vvv`,以便在输出文件中获得更详细的日志记录。 - **智能层缓存** — 禁用后,会添加 `--no-symbol-cache` 以跳过 Volatility 的符号缓存。 所有设置都会保存到注册表中,并应用于每次插件运行。 ### 3. 更改 vol.exe 路径 重新打开文件选择器,以便您可以将 VolMenu 指向不同的 `vol.exe`(例如,在升级 Volatility 3 或移动您的工具目录之后)。 ## 配置存储 所有设置都存储在以下位置: ``` HKCU\Software\DFIRVault\VolMenu ``` | 值 | 类型 | 说明 | |---|---|---| | `VolExePath` | `REG_SZ` | `vol.exe` 的完整路径 | | `ParallelismEnabled` | `REG_DWORD` | 如果启用了并行处理则为 `1` | | `WorkerCount` | `REG_DWORD` | 用于并行处理的 worker 数量 | | `VerboseOutput` | `REG_DWORD` | 如果应添加 `-vvv` 则为 `1` | | `SmartCacheEnabled` | `REG_DWORD` | 为 `0` 时会添加 `--no-symbol-cache` | 您可以放心地删除此注册表项,以将 VolMenu 重置为其初始状态。 ## 支持的插件 VolMenu 内置了针对不同操作系统的精选常用 Volatility 3 插件列表,包括进程列表/树/扫描、网络连接、与恶意软件相关的工件(`malfind`)、注册表分析、文件扫描/转储、已加载的模块/驱动程序等。完整列表在每个操作系统的插件选择菜单中均可见,并且“Run ALL”会执行该列表中的所有插件。 ## 免责声明 VolMenu 是一个为了提供便利而打造的封装工具,它不会修改、替换或捆绑 Volatility 3 本身。您有责任获取 Volatility 3 以及您使用的任何符号表,并遵守其许可协议。本工具旨在用于合法的数字取证、应急响应和教育用途。 ## 许可证 在此指定您首选的许可证(例如 MIT)。
标签:SecList, 内存取证, 数字取证, 自动化脚本, 逆向工具