假设您是一家大公司,刚刚向一名员工运送了一台全新的替换笔记本电脑。假设它预先配置为使用所有最新的最佳安全实践,包括使用可信平台模块的全盘加密、受密码保护的 BIOS 设置、UEFI SecureBoot 以及几乎所有其他来自国家安全局和 NIST 的锁定建议关闭联邦计算机系统。假设攻击者设法拦截了机器。攻击者可以使用它来入侵您的网络吗?上周发表的研究表明,答案是响亮的“是”。不仅如此,做完功课的黑客还需要一个惊人的短时间单独使用机器来执行攻击。有了这个,黑客不仅可以写入被盗的笔记本电脑,还可以写入它被配置为连接的强化网络。受雇来测试一个客户网络安全性的安全咨询公司 Dolos Group 的研究人员收到了一台新的联想计算机,该计算机已预先配置为使用该组织的标准安全堆栈。他们没有收到测试凭据、配置详细信息或有关机器的其他信息。对 BIOS 设置、启动操作和硬件的分析很快表明,现有的安全措施将排除常见的黑客攻击,包括: 使用 LAN 龟和响应器等工具从 USB 以太网适配器中窃取数据继续,研究人员专注于可信平台模块或 TPM,这是一种安装在主板上的强化芯片,可直接与安装在机器上的其他硬件进行通信。研究人员注意到,作为使用 Microsoft 的 BitLocker 进行磁盘加密的默认设置,笔记本电脑直接启动到 Windows 屏幕,没有提示输入 PIN 或密码。这意味着 TPM 是存储用于解锁驱动器的唯一加密密钥的地方。 Microsoft 建议覆盖默认值并仅对威胁模型使用 PIN 或密码,这些模型预计攻击者有足够的技能和时间单独使用无人值守的目标机器打开机箱并焊接主板设备。研究人员在完成分析后表示,微软的建议是不充分的,因为它使设备受到攻击,虐待配偶、恶意内部人员或其他具有短暂私人访问权限的人可能会进行攻击。 Dolos Group 的研究人员在一篇文章中写道:“一个预先装备好的攻击者可以在不到 30 分钟的时间内执行整个攻击链,无需焊接、简单且相对便宜的硬件和公开可用的工具,”魔女领地。”
TPM 具有多层防御,可防止攻击者提取或篡改他们存储的数据。例如,逆向工程师 Christopher 10 多年前的一项分析表明,英飞凌制造的 TPM 芯片设计为在被物理穿透时自毁。例如,光学传感器检测来自光源的环境光。覆盖微控制器的金属丝网旨在在任何电路受到干扰时禁用芯片。由于破解联想笔记本电脑芯片的希望渺茫,Dolos 的研究人员寻求其他方法来提取解密硬盘的密钥。他们注意到 TPM 使用串行外设接口与 CPU 进行通信,这是一种嵌入式系统的通信协议。缩写为 SPI,固件本身不提供加密功能,因此任何加密都必须由 TPM 与之通信的设备处理。与此同时,微软的 BitLocker 不使用最新 TPM 标准的任何加密通信功能。如果研究人员能够利用 TPM 和 CPU 之间的连接,他们或许能够提取密钥。以这种方式绕过 TPM 类似于忽略诺克斯堡而专注于从它出来的不那么装甲的汽车。为了嗅探通过 SPI 总线移动的数据,我们必须将引线或探针连接到 TPM 上的引脚(上面标记为 MOSI、MISO、CS 和 CLK)。通常这很简单,但在这种情况下存在实际问题。此 TPM 采用 VQFN32 封装,非常小。 “销”实际上只有 0.25 毫米宽,间距为 0.5 毫米。这些“引脚”实际上并不是引脚,它们平贴在芯片壁上,因此在物理上不可能连接任何类型的夹子。您可以将“飞线”焊接到焊盘上,但这很麻烦,而且往往是一种物理上非常不稳定的连接。或者,一种常见的策略是找到串联电阻以进行焊接,但它们同样小,甚至更脆弱。这并不容易。但在我们开始之前,我们认为可能有另一种方式。很多时候,SPI 芯片与其他 SPI 芯片共享相同的“总线”。这是硬件设计人员用来简化连接、节省成本并使故障排除/编程更容易的技术。我们开始在整个电路板上寻找可能与 TPM 位于同一总线上的任何其他芯片。也许他们的别针会更大更容易使用。在对原理图进行了一些探索和查阅之后,发现 TPM 与另一个芯片共享一个 SPI 总线,CMOS 芯片肯定有更大的引脚。事实上,CMOS 芯片几乎是标准主板上最大的引脚尺寸,它是 SOP-8(又名 SOIC-8)。互补金属氧化物半导体的缩写,PC 上的 CMOS 芯片存储 BIOS 设置,包括系统时间和日期以及硬件设置。研究人员将 Saleae 逻辑分析仪连接到 CMOS。很快,他们就能够提取通过芯片移动的每个字节。然后,研究人员使用 Henri Numi 编写的 bitlocker-spi-toolkit 来隔离海量数据中的密钥。
硬盘解密后,研究人员梳理数据以寻找某些东西——加密或明文密码,可能是暴露的敏感文件或类似的东西——这可能会让他们更接近访问客户端网络的目标。他们很快发现了一些东西:Palo Alto Networks 的 Global Protect VPN 客户端已经预先安装和配置好了。 VPN 的一个功能是它可以在用户登录之前建立 VPN 连接。该功能旨在验证端点并使域脚本能够在机器开机后立即运行。这很有用,因为它允许管理员在不知道每台机器的密码的情况下管理大量机器。