固件安全的评估策略(上)
2020-06-19 11:18:53 Author: www.4hou.com(查看原文) 阅读量:247 收藏

本文会将目前和过去的保护措施进行对比分析,这些保护措施都是基于防止已经实现root级访问的攻击者通过内核模式驱动程序或固件植入进行持久化访问。

受信的硬件root权限

为缓解这种威胁而发明的各种技术被归类在硬件信任的根目录下,它们试图为所有安全原语创建一个安全的基础,以保护放置在这种攻击环境中的设备的完整性和保密性。

固件配置分析在评估公司的设备时尤为重要,这些公司直接将定制硬件交付给客户,并在随后接收潜在的恶意硬件。

一个示例是Amazon Snowball,它用于通过发送物理设备进行大规模数据传输。如果无法证明该设备可以安全启动,而已知低级别固件未受攻击,则未来的客户数据或整个数据中心可能面临被攻击的风险。

rootkit

rootkit是允许攻击者在内核空间内执行代码的持久性机制,这可以通过LKM(可加载内核模块),现有内核模式驱动程序中的漏洞利用或内核暴露给用户登陆进程的接口漏洞来实现。

rootkit允许攻击者维护对系统的root级别访问,并通过允许直接修改内核空间内存结构来授予超出提供给root用户的权限。这些包括许多很少记录且敏感的系统配置结构,它们控制操作系统内的核心安全功能。

Bootkit

Bootkit与rootkit的不同之处在于,它会攻击主机的固件,而不只是攻击内核空间。Bootkit劫持了一部分启动过程,以便在启用安全保护之前更早地在系统启动过程中注入恶意代码。通过在启动过程中很早就攻击系统,它们可以确保有机会攻击未来验证系统完整性的所有尝试。

此问题激发了对硬件信任基础的需求,如果攻击者可以攻击启动过程的任何部分,则防御者需要一个安全的空间,可以在其中存储密钥,并且可以在强有力的完整性保证下执行加密操作。

需要提供经过物理安全性审核的专用硬件模块才能提供此空间,该硬件称为TPM(受信任的平台模块),是针对专用bootkit攻击的最强防御。

在深入了解如何正确配置系统以利用TPM之前,我们必须了解启动过程及其漏洞。

什么是BIOS,我们为什么要关心它?

随着Rootkit缓解技术变得越来越复杂,与编写复杂的Rootkit相关的工作水平也随之提高。这将使攻击者更深入地了解系统内部,以找到更易攻击的目标。如果防御者希望能够跟踪它们并保护系统免受攻击,则我们必须了解BIOS(基本输入输出系统)。

BIOS最初是一种为系统准备更高级别的操作系统抽象的机制,在没有附加安全保护的最基本级别上,BIOS遵循以下步骤。

1. BIOS初始化:硬件自检,如果热启动则跳过;

2. MBR(主引导记录)->在硬盘驱动器上查找操作系统;

3. VBR(卷启动记录)->在驱动器中查找活动分区->运行初始程序加载器(EFI可执行文件);

4. bootmgr(Windows引导程序)->读取BCD(包含内核代码签名策略的引导配置数据);

5. winload.exe->加载OS内核模块,deps和ELAM(早期启动防恶意软件)模块。

6. 内核映像启动->引导驱动程序;

7. 首先用户模式过程。

这些层中的每一层都取决于上一层,作为攻击者,如果你攻击了上一层,则就可以攻击依赖于该层的,在堆栈最下方出现的层。

存在哪些安全机制?

要获得测试用例的完整列表,请查看测试用例的CSV。除了在那里找到详尽的清单之外,本节还将提供一些有关完成这些测试以及每种保护机制要完成的内容的详细信息和上下文。

ELAM(早期启动反恶意软件)模块

这个保护模块是从Windows 8开始引入的,这种保护的目的是攻击rootkit,但它不能保护bootkit。

这种机制允许安全软件注册内核模式驱动程序,该驱动程序可以在启动过程中早于任何非ELAM驱动程序启动。将来加载任何驱动程序时,已加载ELAM的驱动程序都有机会对其进行检查;如果该驱动程序是恶意的,则阻止其被加载。

只有一部分信息对ELAM驱动程序可用。

· 图像名称;

· 将映像注册为启动驱动程序的注册表位置;

· 驱动程序的发布者和发行者;

· 图像的哈希和哈希算法;

· 证书指纹和指纹算法。

ELAM驱动程序不能访问驱动程序的内容,因此有各种各样的绕过,这些绕过可能基于在这里可以执行的表面水平的检查。

因为ELAM模块是在windows启动加载程序加载之后加载的,所以在启动过程早期发生的任何启动工具包的攻击都将使这种保护失效。

测试步骤:验证ELAM策略注册表

ELAM模块使用策略写入注册表值:

HKLM\System\CurrentControlSet\Control\EarlyLaunch\DriverLoadPolicy

可以使用标准注册表工具(例如regedit.exe)查看此注册表值,此策略值确定当ELAM模块发现无效驱动程序时发生的情况。

该策略决定ELAM模块是否只加载已知的好驱动程序、良性驱动程序和未知驱动程序,或者良好的驱动程序,不良的基本驱动程序和未知的驱动程序。此最后一个选项允许加载已知的错误的基本驱动程序以确保系统稳定性,并且在大多数系统上都是默认设置。

如果一个攻击者能够用一个恶意的驱动程序替换一个基本的驱动程序,那么检查默认的驱动程序是否被改变是值得的。

内核模式签名保护

此保护是从Windows Vista开始引入的,这种保护的目的是确保所有内核模块均由已知方签名,以增加与创建恶意内核模式驱动程序相关的成本。请务必注意,这与PnP设备安装签名策略不同。后一种签名策略在测试时需要单独检查,如下一节所述。

当内核模式驱动程序加载到系统中时,所有驱动程序都根据一个已知的良好列表进行验证。应该注意的是,在32位Windows中,只有启动启动驱动程序被验证,但是其他所有的驱动程序都不受保护。这意味着任何被标记为早期启动的驱动程序都不会在32位Windows系统上进行验证。

负责执行签名验证的逻辑存储在ci.dll文件中。在Windows Vista和Windows 7中,如果发生代码验证逻辑,则需控制内核映像中的一个变量(nt!g_CiEnabled)。

这是在内核模式内存结构中设置的,任何内核模块都可以更改。如果在已签名的第三方内核模块中找到代码执行,则可以利用它执行加载任意可加载内核模块rootkit!

测试步骤:验证Windows版本

这个安全问题在Windows 8中被修补,变量被弃用以支持安全启动。如果一个项目需要一个信任的硬件根目录,并且想要实现内核模式驱动程序签名来缓解rootkit和随后的bootkit攻击,则安全工程师应建议更新系统以使用Windows 8或更高版本。

此外,系统应使用Windows的64位版本。如果使用32位版本,则仅会验证启动驱动程序,从而使攻击者能够安装不会将自己指定为启动驱动程序的恶意驱动程序。

测试步骤:检查启动配置数据注册表

要检查是否启用了内核驱动程序签名验证,请在以下位置查看注册表数据:

HKEY_LOCAL_MACHINE\BCD000000

检查以下参数,因为它们直接影响BIOS启动过程的安全状态:

BcdLibraryBoolean_DisableIntegrityCheck, BcdOSLoaderBoolean_WinPEMode, BcdLibraryBoolean_AllowPrereleaseSignature

验证是否正确配置了这三个布尔值,并且没有禁用关键的安全机制。

PnP设备安装签名策略

即插即用设备安装签名策略为内核模式签名提供了一组单独的保护,PnP策略强制的要求只适用于即插即用设备驱动程序。

这个保护的目的是验证PnP驱动程序的发布者的身份和完整性。为了验证这些驱动程序,保护机制检查驱动程序是否由Windows硬件质量实验室(WHQL)或可信的第三方签名。

如果这些要求没有得到满足,将向必须手动接受才能继续启动过程的用户显示警告提示。此策略只在PnP驱动程序安装期间执行,在以后的运行期间不执行。这不是一个内在的漏洞,而是一套额外的验证,因为内核模式签名保护中描述的机制仍将适用于PnP驱动程序。

测试步骤:检查“禁用PnP签名注册表”

检查以下注册表项,以查看是否已禁用PnP签名以允许调试内核模块:

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlag

如果此注册表设置为0x00000001,则在加载签名错误的PnP驱动程序时将启动调试器,具有系统本地访问权的攻击者可以在调试器提示符下按“g”来加载恶意驱动程序。

确保将这个注册表值设置为0x00000010,这意味着应该忽略任何调试器,并且应该拒绝驱动程序。

安全启动

安全启动是对BIOS启动过程的全面改进,以纳入进一步的安全措施。这将更改早期启动的流程,如下所示:

1. BIOS初始化-硬件自检,如果热启动则跳过;

2. UEFI;

3. bootmgr-> winload.exe;

4. 内核映像启动->启动驱动程序;

5. ELAM驱动程序;

6. 内核模式启动驱动程序;

7. 首先用户模式过程。

理论上,启用安全启动后,所有UEFI驱动程序必须具有数字签名才能被系统加载。实际上,有许多配置可以大大削弱或禁用此保护。但是,在我们讨论这些内容之前,你需要了解UEFI的一些背景信息。

在下一篇文章中,我们将介绍UEFI规范和攻击者如何攻击UEFI固件?以及相对应的一些安全启动措施。

本文翻译自:https://maxfieldchen.com/posts/2020-05-31-Hardware-Root-Of-Trust-Bios-UEFI.html如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/OqEQ
如有侵权请联系:admin#unsafe.sh