AhmadAnasweh/RAMBreaker
GitHub: AhmadAnasweh/RAMBreaker
RAMBreaker 是基于 Volatility 2/3 的模块化内存取证框架,自动检测镜像操作系统并生成独立交互式 HTML 报告,重点解决 Linux 内核符号获取和引擎选择等痛点。
Stars: 0 | Forks: 0
# RAMBreaker (v6.2)
[](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/`)、自定义脚本报告
(`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, 内存取证, 多模态安全, 安全, 数字取证, 自动化脚本, 超时处理, 逆向工具