逆向工程 UEFI CAP 文件

逆向工程 固件 静态分析
2021-06-26 09:00:06

我正在寻找为我的主板识别最新 UEFI 版本中的代码更改,以验证这些更改是否包括针对行锤漏洞的缓解措施我特别关注 Asus Maximus VII Hero 主板的最后 3 个版本(2401、2304、2201),可在此处下载

UEFI 二进制文件作为 CAP 文件提供,我不习惯看到它。显然,这些是“UEFI Capsules”,英特尔有一个规范,但我已经尝试了自动分析(使用uefi-firmware-parser)和一些手动挖掘都无济于事。在它们之间运行 binwalk 会导致通常的 LZMA blob 噪音,但即使我 grep 过去,我也会遇到一些对加密数据的误报检测。

内部的实际数据在重复、结构化和高熵(加密/压缩)块之间交替,但我找不到任何明显的东西。在不同的修订版中运行 bindiff 向我展示了一些主要更改的块,以及一些奇怪的字节。

IDA 似乎没有将其中的任何内容识别为 EFI 代码,所以我现在很难过。

如何开始使用这些 CAP 文件?有没有我应该阅读的研究?是否有任何工具链可以使用它们?

2个回答

有人向我指出了UEFITool,它完全符合我的要求。还有一个提取器版本,它将所有单独的嵌套二进制组件转储到目录中。由此我能够浏览和分析 IDA 中的各个模块(它们是 x86 PE 文件,所以很容易)。

我还没有完全确定 rowhammer 缓解措施是否到位,但我正在编写一些脚本来对每个更改的组件进行绑定,这有望让我对我正在寻找的内容有所了解。

固件不包含在由普通 EFI_CAPSULE_GUID 表示的区域中,如您的链接描述的规范。我在公共规范的 CAP 文件中找不到对 GUID 的引用。

您可以使用此 python 脚本剥离封装,然后可以使用 uefi-firmware-parser 解析生成的固件文件。

或者,如果您使用 IDA,看起来可能非常有用 - 它似乎知道奇怪的 GUID。