RegRipper工具深度解析:Windows注册表取证与事务日志处理

本文深入探讨了RegRipper在Windows注册表取证中的应用,重点解析了工具为何故意不处理事务日志的技术原因,并介绍了插件开发、Yara集成等高级功能,为数字取证人员提供实用指导。

RegRipper

Cyber Triage的优秀团队最近发布了他们的《2025年注册表取证工具指南》,由于我对Windows注册表颇为关注,便饶有兴趣地阅读了这篇文章。该文章写得非常好,为刚接触DF/IR工作和Windows注册表的新手提供了极好的基础知识。

在博客文章的注册表取证工具部分有一个表格(见右侧图片)。在图片中,我们看到与所列工具相关的指标之一是该工具是否"处理事务日志",仅有一个简单的说明。

如果有人刚开始将Windows注册表纳入分析流程,不了解事务日志的目的和工作原理,他们可能会看着这个表格想:“好吧,我不会使用RegRipper!处理事务日志对Chris Ray很重要,虽然我不知道为什么,但我会遵循Chris的建议!”

“不处理事务日志"这一说法并未说明全部情况,因为我是故意将RegRipper设计为不处理事务日志的。从我的角度来看,将事务日志纳入分析应该是一个有目的、有意识的决定。在任何Windows系统的分析过程中,纳入事务日志当然有其用武之地,但它不应该在分析人员/检查员不知情的情况下自动发生,也不应该每次都自动发生。

此外,既然已经有其他许多工具允许您处理事务日志,我为什么还要编写处理事务日志的代码呢?为什么要重写这个功能?

您知道,这种事情以前也发生过。2012年,在一个相当大型的DF/IR安全会议上,一位谷歌工程师正在介绍企业级响应能力,其中一张幻灯片写道:“RegRipper无法扩展到企业级。“我当时坐在前排,因为…您知道的…DF/IR,对这个说法感到有些惊讶。这就像说最受欢迎的轻型皮卡车型F-150卡车无法切换到飞行模式一样。是的,不能,因为它从未打算这样做,也不是为此设计的。因此,演讲者没有联系工具作者并询问"嘿,您觉得把这个做成企业级工具怎么样?",而是简单地发表了他们的声明,就此了事。

那么,为什么我希望处理事务日志是一个有目的、有意识的决定呢?如果您曾经处理过事务日志,您会注意到,当您将事务日志应用到注册表配置单元时,配置单元文件本身的大小保持不变;键和值被更新或添加,但文件本身的大小保持不变,即使哈希值发生了变化。这意味着对于生成的配置单元文件,配置单元文件内的未分配空间被覆盖了…已删除的键和值,甚至可能是松弛空间,都被覆盖了。

这为什么重要呢?好吧,考虑一下最近关于DEVMAN勒索软件变种的文章(来自ANY.RUN)。左侧图片讨论了文件锁定规避(标题中包含"持久性"有点误导),并指出"这些条目中的每一个在写入后很快被删除…",这意味着这些条目成为未分配空间的一部分。现在,根据您的调查目标,这可能对您不重要…或者可能非常重要。

因此,明确地说,如果您对从注册表中删除的数据感兴趣,并且您理解注册表配置单元文件本身包含未分配空间,并且值可能包含松弛空间,您可能不希望只是自动应用事务日志。根据事件发生的时间和您的调查目标,您可能希望在应用事务日志之前先完全解析配置单元文件,然后在应用事务日志后再次应用相同的解析过程。有点像配置单元的"之前"和"之后"快照。

RegRipper v3.0和RegRipper v4.0都不处理事务日志;然而,两者都是开源的,您可以编写自己的插件,或以任何您选择的方式修改当前插件,例如更改输出格式。例如,两个版本都包含多个以5字段TLN格式输出的插件(用于直接包含到时间线事件文件中),而v4.0有几个以JSON格式输出的插件。不过,我理解…如果您不创建时间线,TLN输出就毫无意义。

此外,在RegRipper v4.0中,我让Yara在RegRipper中运行,这意味着您可以直接从RegRipper对注册表值运行Yara规则。

最后,两个版本都包含用于进行各种解析的插件,例如解析未分配空间、解析注册表值大小、在注册表值中定位EXE/PE文件等。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计