AhmadAnasweh/RAMBreaker

GitHub: AhmadAnasweh/RAMBreaker

RAMBreaker 是基于 Volatility 2/3 的模块化内存取证框架,自动检测镜像操作系统并生成独立交互式 HTML 报告,重点解决 Linux 内核符号获取和引擎选择等痛点。

Stars: 0 | Forks: 0

# RAMBreaker (v6.2) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 一个基于 **Volatility 2 / 3** 的模块化内存取证框架:只需传入一个 RAM 镜像(`.raw`, `.mem`, `.lime`, `.dmp`, VMware `.vmem`),它就会自动检测 OS,驱动相应的 Volatility 引擎,并生成一个独立且交互式的 `report.html` —— 支持 **Windows、Linux 和 macOS**。 完整文档位于 [`docs/`](docs/) —— 推荐从 [`RAMBreaker_Guide.html`](docs/RAMBreaker_Guide.html) 开始阅读。更新日志请见 [`CHANGELOG.md`](CHANGELOG.md)。 ## 为什么选择 RAMBreaker 你是否曾经…… - ……在分析刚进行的头 30 分钟里,仅仅为了猜测镜像需要使用 Volatility 2 还是 3,以及该使用哪个 OS/profile —— 结果选错了,只能眼睁睁看着每个插件悄无声息地失败? - ……遇到一个 Linux 内存转储,其内核在任何地方都找不到匹配的符号文件,然后意识到手动构建一个意味着要折腾 debug 包、`dwarf2json`,白白浪费一下午的时间? - ……拿到一份返回为空的报告,却没有任何指示说明*为什么* —— 是符号错误?是 profile 选错了?还是某个插件直接放弃了? RAMBreaker 的诞生正是为了消除这些令人头疼的时刻:只需将它指向一个镜像,它就会自己弄清楚 OS 和所需的引擎,尽一切可能获取所需的 Linux 内核符号(包括利用内置在镜像中的数据重建它们,且无需联网),而且 —— 当遇到真正无法解决的问题时 —— 它会明确告诉你问题是什么以及为什么,而不是直接塞给你一份空白无用的报告。 ## 适用范围与诚实的局限性 Volatility 是实际读取内存的引擎;而 RAMBreaker 是驱动该引擎的表层工具,因此你无需在旁时刻看护。通俗来讲: - **弄清楚你在面对什么。** 在运行任何操作之前,RAMBreaker 必须确定镜像是哪种 OS,以及需要使用 Volatility 2 还是 3。这些都会自动完成,所以你只需将工具指向文件即可。 - **最困难的部分:Linux 内核符号。** 为了解析 Linux 内存镜像,Volatility 需要一份关于该确切内核版本内部数据结构的“地图”(称为 ISF)。如果该地图尚未在任何地方公开,分析通常将完全无法进行。RAMBreaker 会尝试多种方法来自动获取或构建它 —— 包括针对大约 2020 年以后的内核,直接从内核自身内存中携带的信息提取出该地图。这意味着对于许多现代 Linux 镜像,既不需要互联网连接,也不需要外部软件包。 - **当确实无法做到时。** 如果内核过于老旧而缺少内置信息,且任何地方都没有公开的地图和可用的 debug 包 —— 或者是 Volatility 自身的插件根本还无法理解它 —— 运行将会失败。但它会明确报错,确切地告诉你出了什么问题(是缺少符号,还是数据结构不匹配,抑或是超时),而不是悄悄生成一份看似正常、实则全空的报告。 - **macOS 是最薄弱的环节。** Apple 系统本身公开的符号资源就少得多,并且缺乏在 Linux 上能大显身手的“从镜像自身提取地图”这一技巧 —— 因此 macOS 支持更多地依赖于尽最大努力收集的社区数据。 RAMBreaker 在常见场景下表现最好:Windows 10/11,以及具有公开或可自行构建内核符号的 Linux 发行版。 ## 运行 ``` python3 crescent_toolkit.py # interactive menu python3 crescent_toolkit.py full -i image.raw -o ./results/ ``` `-i` 指定镜像(注意不是 `-f`)。有关模式、参数和 CLI 界面的更多信息,请参阅文档。 ## 输出 ![标注的输出目录:插件 JSON/TXT、comms/iocs 制品以及最终的 report.html](https://static.pigsec.cn/wp-content/uploads/repos/cas/76/76ee664cdd52c1b889e4f6d31a54288b11420ad3dc0e51a5ec4842dac6e826ad.png) 每次运行都会生成一个结果目录,其中包含原始插件输出(`json/`, `txt/`)、按类别划分的制品(`comms/`, `iocs/`)、自定义脚本报告 (`comms_report.txt`, `network_map.txt`, `timeline.csv` 等),以及最终的 `report.html` —— 这是你真正可以交付给别人的唯一独立文件。 ## 开发 在克隆仓库后,**请启用 git pre-commit hook** —— git 在克隆时不会同步 hook,因此 这是每次克隆后都需进行的一次性操作。它会在每次提交前运行两个零依赖的测试套件, 如果其中任何一个失败,就会阻止提交: ``` git config core.hooksPath .githooks ``` 随时都可以手动运行测试套件(两者耗时均约为 2 秒,且不需要内存镜像): ``` python3 tests/run_tests.py # Tier-A: pure logic — run_health, crash_report, IOC, XSS, download integrity python3 tests/run_canary.py # Tier-B: drives the real extraction pipeline against a fake Vol3 stub ``` 在真正的紧急情况下,可以使用 `git commit --no-verify` 绕过该 hook。 工具链的版本固定信息(Volatility、dwarf2json、Python)记录在 [`TOOLCHAIN.lock.md`](TOOLCHAIN.lock.md) 中。 ## 许可证 [MIT](LICENSE) —— 随意使用、分支并在此基础上进行开发。它驱动 Volatility 2/3 并 将 dwarf2json 作为外部工具打包,这些工具保留其各自的许可证。
标签:SecList, 内存取证, 多模态安全, 安全, 数字取证, 自动化脚本, 超时处理, 逆向工具