如何读取Windows休眠文件(hiberfil.sys)以提取数据?


8

我需要通过解析查找所有数据存储在休眠文件中。但是,到目前为止,我只能通过在Hex编辑器中将其打开然后在其中搜索文本来手动完成此操作。我发现了有关SandMan库的信息,但是没有任何资源。知道如何读取文件吗?还是有任何工具/库或其他方法可以这样做?


3
hiberfil文件是系统ram处于休眠状态时的映像。因此,是的,十六进制编辑器可能是最好的。本质上,此任务与尝试读取RAM的内容没有什么不同。
Frank Thomas


1
@FrankThomas您知道休眠文件的格式是什么吗?
编码器

@OliverSalzburg我想知道一些数据结构来读取文件?
编码器

1
@WernerHenze为我的任务
编码员

Answers:


7

您可以Hiberfil.sysForensicWiki页面上找到有关的很多信息。

尽管解析文件格式所需的大多数数据结构都可以在Microsoft Windows调试符号中找到,但是直到Matthieu Suiche对它进行逆向工程之前,所使用的压缩(Xpress)都没有记录。他与Nicolas Ruff共同创建了一个名为Sandman的项目,这是唯一可以读取和写入Windows休眠文件的开源工具。

项目Sandman的pdf可在此处找到。

Sandman项目的创建者还创建了一个转储内存和Hiberfil.sys-file(并将其从XPress压缩格式中提取)的工具。MoonSols Windows内存工具包

ForensicWiki页面上的其他一些链接不再起作用,但是我发现这是一个链接:(如果您想直接进入格式结构,则可以使用此资源。对于标题,标头的前8192个字节文件,则无需解压缩文件)

休眠文件格式.pdf

最后的PDF和ForensicWiki页上的最后一个链接应为您提供有关的结构的足够信息Hiberfil.sys

休眠文件由一个标准头(PO_MEMORY_IMAGE),一组内核上下文和寄存器(例如CR3(_KPROCESSOR_STATE))和几个压缩/编码的Xpress数据块数组(_IMAGE_XPRESS_HEADER和_PO_MEMORY_RANGE_ARRAY)组成。

标准标头位于文件的偏移量0处,如下所示。通常,Signature成员必须为“ hibr”或“ wake”才被视为有效,但是在极少数情况下,整个PO_MEMORY_IMAGE标头已被清零,这可以防止大多数工具分析休眠文件。在这些情况下,波动率将使用蛮力算法来定位所需的数据。

这些文档中的参考文献也应为您提供许多其他资料来探索。


3

我强烈建议您看看来自security.stackexchange.com的答案。它显示了一种很好的方法,即如何提取数据以及有关算法本身的信息。

我已经强调了重要的部分。

是的,它确实将其未加密存储在磁盘上。它是位于的隐藏文件 C:\hiberfil.sys,它将始终在启用了休眠功能的任何系统上创建。使用Xpress算法压缩内容,该文档的文档可以从MicrosoftWord文档的形式获得。Matthieu Suiche在2008年将其作为BlackHat演示文稿进行了全面的分析,您可以将其转换为PDF。还有一个名为MoonSols Windows Memory Toolkit的工具,可让您转储文件的内容。不过,我不知道它是否能让您转换回来。您可能需要自己做一些工作。

取出数据后,就可以提取或修改数据,包括说明。在缓解方面,最好的解决方案是使用全盘加密,例如BitLocker或TrueCrypt。

资源


3

使用http://code.google.com/p/volatility/downloads/list将hiberfil.sys文件转换为原始图像。到目前为止,最新版本是2.3.1。具体来说,您可以使用以下命令行首先创建原始图像:-f imagecopy -O hiberfil_sys.raw。这将为您创建一个原始映像,然后运行其波动性,这将有助于您提取诸如进程,连接,套接字和注册表配置单元(仅举几例)之类的信息。您可以在以下位置找到插件的完整列表:https : //code.google.com/p/volatility/wiki/Plugins。当然,mandiant redline是另一个提供该功能的工具。希望这会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.