转自:二进制空间安全
摘要
许多企业笔记本电脑使用 BitLocker 提供全磁盘加密(FDE),以保护敏感数据免遭笔记本电脑被盗后的暴露。但默认的 BitLocker 实现能在这种情况下多大程度上保护静态数据?所有加密的安全性都依赖于密钥材料的保护。一个普遍的假设是,由于 BitLocker 密钥存储在可信平台模块(TPM)中,解密过程是安全的。然而,这只是部分正确。
什么是TPM?
TPM 是嵌入设备中的硬件安全组件,提供加密功能,常用于加密、数字签名和安全密钥存储等任务。然而,TPM 的一个主要用途是验证系统完整性。为此,TPM 将诸如 BIOS 或 UEFI 固件、引导加载程序和/或硬件配置的哈希值存储在平台配置寄存器(PCRs)中,以识别可能表明系统被破坏的更改。BitLocker 利用 TPM 验证系统完整性,通过验证引导组件,在解锁加密卷之前确保系统未被篡改。
TPM 通常可以通过以下三种方式配置:
-
仅 TPM:无需用户输入,仅验证完整性检查。
-
TPM + PIN:用户需要提供一个 PIN。
-
TPM + PIN + 双重认证(2FA):用户需要提供 PIN 和第二种认证因素(例如 USB 密钥或一次性密码)。
在“仅 TPM”模式下,BitLocker 不需要用户输入,从用户的角度看流程无缝,但与使用 PIN 或 USB 密钥的配置相比安全性较低。TPM 检查系统完整性,防止在系统遭篡改时访问加密卷,并在系统恢复到已知安全状态前锁定加密卷。
BitLocker 使用多种密钥保护数据。驱动器上的数据通过全卷加密密钥(FVEK)加密。FVEK 又通过卷主密钥(VMK)加密,并存储在磁盘元数据中。VMK 存储在 TPM 中,当满足适当条件(例如成功通过完整性检查或提供正确的恢复密钥)时,由 TPM 解密(解封)。这种机制允许系统重新设置密钥,例如当恢复密钥被泄露且需要替换时,无需用新 FVEK 重新加密整个卷。
VMK 和 FVEK 解密以及加密卷解锁的流程如下图:
弱点在哪里?
问题在于,如果没有额外的认证因素,只要系统通过完整性检查,TPM 就会提供未加密的 VMK,该密钥随后用于解密 FVEK,进而解锁加密数据卷。设计上,VMK 被明文传输。如果能访问 TPM 的通信,就可以在 VMK 解封后读取该密钥,并使用它解密数据。
TPM 标准难道不应该避免这种情况吗?答案是:理论上应该,而且可以避免。TPM 2.0 库规范的第 1 部分第 19 和 21 节描述了一种称为会话参数加密的功能。使用该功能,系统生成一个随机值,使用密钥派生函数派生会话密钥,用 TPM 主密钥的公钥加密,并将其传输到 TPM 以启动加密会话。然而,微软并未实现这一功能。
在了解了 TPM 的工作原理后,先看看截取 TPM 总线、提取 VMK 并解密磁盘的可行性。在本实践演示中,使用了一台运行 Windows 11 专业版的 Dell Latitude E5470 商务笔记本电脑。尽管这款笔记本稍显老旧,但研究表明其技术代表了大多数企业笔记本的配置,使用实现 TPM 2.0 规范的独立 TPM 芯片,与当前的 Dell Latitude/Precision 系列及流行的 HP Elitebooks 技术原理相同。这些 TPM 使用 SPI 总线通信,但 LPC 总线的原理大致相同。
截取TPM总线通信工具
执行此攻击所需的设备可以在一个设备齐全的硬件黑客实验室中找到。截取 TPM 总线通信的主要工具是逻辑分析仪。本次演示选择了 DSLogic U3 Pro16 逻辑分析仪。这款由中国 Dream Source Labs 生产的设备符合测试笔记本 SPI 总线截取的规格,其价格合理,约为 2300元。这一价格点使得即使资源有限的攻击者也可以执行此类攻击。
其次,需要软件来创建和分析流量捕获。在本次演示中,选择了 Dream Source Labs 的 DSView 软件,这是流行的 Sigrok/PulseView 软件的分支,专为 DSLogic 设计。
除了逻辑分析仪本身,如果笔记本没有提供易于访问的 PCB 接头或焊盘,还需要一些逻辑探针。本次演示中使用了 PCBite 工具,但如果闪存芯片位于同一总线上并且易于访问,也可以使用基本的 SOIC8 夹具。
最后,只需一把小螺丝刀和撬棒即可打开笔记本外壳。
连接总线
第一步是找到 TPM 及其可能用于连接总线的地方。在某些情况下,可以通过目视检查和/或互联网搜索识别芯片。在大多数情况下,示意图或电路板视图文件会有帮助,这些文件可以在互联网上找到,但通常需要加入论坛或支付费用。这些文件的供应商可能不合法,因为此类文件的分发通常受知识产权法约束。
在示例笔记本电脑中,TPM 的位置(1)已广泛记录,卸下笔记本电脑外壳的底部面板后即可访问。由于 TPM 的形态受到一定限制,大多数逻辑分析仪的连接通常可以通过与其共享同一总线的闪存芯片(2)完成。为了更方便地接触闪存芯片,这里去除了塑料外壳的一小部分。
SPI 总线的基础知识对于不熟悉该协议的人来说,了解一些关于 SPI 总线的背景信息会有所帮助。SPI(串行外设接口)是一种同步串行通信协议,通常用于短距离通信,尤其是在嵌入式系统中。它以全双工模式运行,允许数据同时传输和接收。SPI 总线由四个主要信号组成:
-
主输出从输入 (MOSI)
-
主输入从输出 (MISO)
-
时钟信号 (CLK)
-
片选信号 (CS)
时钟信号由主设备生成,同时通过将 CS 线拉低选择从设备。在时钟脉冲的同步下,主设备和从设备分别通过 MOSI 和 MISO 线进行数据交换。
以下是闪存芯片的引脚分布图,显示了连接逻辑分析仪的相关线:
一旦识别出连接点,就会连接探针并在启动笔记本电脑时进行捕获。
分析数据
在确认连接点后,将探针连接至这些点,并在笔记本电脑启动时进行捕获。
TPM 包含多个寄存器,其中 FIFO 寄存器作为主机与 TPM 之间交换命令或响应数据的缓冲区。可以聚焦于 TPM_DATA_FIFO_0 寄存器,其地址为 0xD40024(截图中的深绿色线条)。
下图展示了 MOSI 读取请求(深绿色)与 MISO 响应(浅绿色/粉色)的例子,其中响应值为 2C:
通过分析 TPM_DATA_FIFO_0 的响应流,可以通过定位数据流中的 VMK 头部识别 VMK。头部与以下正则表达式匹配:
2C000[0-6]000[1-9]000[0-1]000[0-5]200000
定位头部后,接下来的 32 个字节将是 VMK 的十六进制表示形式。
解密BitLocker卷
利用 VMK 和 dislocker
工具,可以完全访问未加密的文件系统。如果 BIOS 配置允许从 USB 启动,则可使用通过安全启动认证的操作系统执行这一步。在演示中,将 SSD 从笔记本中移除,并通过 USB 适配器连接到运行 Linux 的主机。以下命令将密钥写入文件,并解密 BitLocker 卷后挂载到 /tmp/disk
(将 /dev/sdXn
替换为实际设备路径):
$ echo VMK_HEX_STRING | xxd -r -p > ./bitlocker.vmk
$ mkdir /tmp/fuse /tmp/disk
$ sudo dislocker-fuse -K ./bitlocker.vmk /dev/sdXn – /tmp/fuse
$ sudo ntfs-3g /tmp/fuse/dislocker-file /tmp/disk
运行这些命令后,即可完全访问解密后的 BitLocker 卷内容,如下图所示:
可行性和风险
从此演示中可见,使用简单的工具和少量时间投资,访问通过 BitLocker 加密的驱动器是可行的。对于攻击者来说,乐趣不仅限于获取设备存储的数据。具有读取和写入系统驱动器的权限后,还可能进行其他操作,例如获得 SYSTEM Shell,并利用系统权限通过转储系统凭据或证书扩展至网络传播,从而通过 VPN 或其他远程访问工具进入企业网络。
从攻击者的成本收益比来看:
-
成本:攻击的主要成本是逻辑分析仪,可在任何设备完善的硬件破解实验室中找到,也可以花费约 2300元购买;时间投入通常不超过几小时,某些情况下甚至更少。
-
收益:取决于本地存储的数据以及利用该笔记本电脑作为企业网络入口点的潜力。
解决方法 此类攻击可通过实施预引导认证的第二因素(如用户 PIN 和/或 USB 启动密钥)来避免。没有此额外因素,TPM 将不会解封 VMK。
参考链接:
https://www.dell.com/support/kbdoc/en-us/000222428/dell-response-to-tpm-interposer-bitlocker-research
https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/countermeasures
https://github.com/Aorimn/dislocker
https://trustedcomputinggroup.org/resource/tpm-library-specification/
https://trustedcomputinggroup.org/wp-content/uploads/TPM-2.0-1.83-Part-1-Architecture.pdf
原文始发于微信公众号(电子物证):【解密】还原被BitLocker加密的数据
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论