开源工具mquire:开源Linux内存取证工具

Linux内存取证长期以来一直依赖于与特定内核版本相关的调试符号。默认情况下,这些符号不会安装在生产系统上,从外部存储库中获取它们会产生一个反复出现的问题:存储库过时,内核构建发散,工作事件响应的分析师通常没有发现他们需要检查的确切内核的已发布符号。

Trail of Bits发布了mquire来解决这一限制。开源工具分析Linux内存转储,不需要任何外部调试信息。

mquire Linux内存取证

工具从内存中读取的内容

mquire利用Linux内核中嵌入的两个数据源。第一个是BPF类型格式(BTF),这是一种描述内核数据结构布局的紧凑格式。BTF是为eBPF的编译一次、无处不在的架构而设计的,并携带类型定义、字段偏移和类型关系。第二个来源是Kallsyms,与实时系统上/proc/kallsyms出现的符号地址数据相同。mquire扫描内存转储以定位Kallsyms数据,然后将其与BTF类型信息相结合,以查找和解析内核数据结构。

BTF支持需要内核4.18或更新版本,并启用了BTF,这是主要Linux发行版默认提供的配置一段时间。由于格式更改inscripts/kallsyms.c,Kallsyms支持需要内核6.4或更新版本。

用于查询内存的SQL接口

加载转储后,mquire会显示一个交互式SQL接口。该设计直接借鉴了osquery,osquery是允许分析师使用SQL查询操作系统状态的系统仪器工具。该工具的主要作者亚历山德罗·加里奥(Alessandro Gario)写道:“自从我第一次参加Querycon以来,我一直想构建这个,在那里我与其他osquery维护者讨论了取证能力。多年来,我一直想将osquery的直观、基于SQL的探索模型引入内存取证的想法,而mquire就是实现这一愿景。”

分析师可以从命令行运行一次性查询或交互式工作。SQL接口支持跨不同数据源的关系查询。单个查询可以将进程信息与打开的文件句柄连接起来,从内核凹处理对象中重建完整的文件路径,或与拥有它们的进程交叉引用网络连接。

该工具提供了一组可查询的表,涵盖带有PID、命令行和二进制路径的运行进程;按进程组织的打开文件;每个进程的内存映射;活动网络连接;网络接口信息;加载的内核模块;内核环缓冲消息;从内核文件缓存读取的系统日志;以及内核符号地址。

从页面缓存中提取文件

超越标准进程和网络枚举的一项功能是从内核的页面缓存中恢复文件。.dump命令迭代任务及其打开的文件描述符,从页面缓存中提取文件内容并将其写入输出目录。从磁盘中删除的文件只要仍缓存在内存中,仍然可以恢复。该工具还包括a.carve命令,用于从特定的虚拟地址范围中提取原始内存内容。

通过流程枚举进行Rootkit检测

mquire支持多个任务枚举策略,这为检测隐藏的进程创造了一条途径。一种策略在内核的任务列表中行走;另一种策略通过PID命名空间进行枚举。Rootkit有时会通过将进程与任务列表取消链接来隐藏进程,同时让它们保持运行。比较两个枚举源的输出可以显示一个列表中而不是另一个列表中的进程。

内核级范围和已知约束

mquire仅访问内核级信息。BTF不提供有關使用者空間資料結構的資訊,因此使用者空間記憶體的分析不在範圍之內。Kallsyms扫描仪还依赖于scripts/kallsyms.c的数据格式,这意味着未来的内核格式更改可能需要更新扫描仪启发式。

Trail of Bits指出了扩展表支持、改进性能缓存以及基于DMA的外部内存采集计划,用于分析物理系统而不拍摄快照。

mquire在GitHub上免费提供。

原文链接地址:https://www.helpnetsecurity.com/2026/03/04/mquire-open-source-linux-memory-forensics-tool/

© 版权声明
THE END
你的支持是我们在网空安全路上的驱动力!
点赞10 分享