保护 Windows 启动过程
保护 Windows 启动过程
Windows系统提供了多种机制来保护其启动过程免受恶意软件(特别是rootkit和bootkit)的攻击。本文将详细介绍这些安全功能的工作原理以及如何配置它们,以确保系统的安全性。
本文内容
Windows具有许多功能来帮助保护系统免受恶意软件的侵害。除了企业在内部开发和使用的应用之外,所有Microsoft Store应用都必须满足一系列要求,才能获得认证并被纳入到Microsoft Store中。此认证过程将检查包括安全性在内的一些标准,并且是防止恶意软件进入Microsoft Store的有效方式。即使恶意应用确实通过,Windows也包括一系列可以缓解影响的安全功能。例如,Microsoft Store应用是沙盒式应用,并且缺少访问用户数据或更改系统设置所需的权限。
Windows还对桌面应用和数据采用多个级别的保护。Windows Defender防病毒使用云驱动的实时检测来识别和隔离已知为恶意的应用。在允许用户运行即使被识别为恶意软件的不受信任的应用之前,Windows Defender SmartScreen会向用户发出警告。在应用更改系统设置之前,用户必须使用用户帐户控制来授予应用管理权限。
这些组件只是Windows保护免受恶意软件攻击的一些方法。但是,这些安全功能仅在Windows启动后才能保护。新型恶意软件(特别是bootkit)能够在Windows之前启动,完全绕过操作系统安全性,并保持隐藏状态。
在具有统一可扩展固件接口的电脑上运行Windows 10或Windows 11 (UEFI)支持,可确保受信任的启动从开机的那一刻起就保护你的电脑免受恶意软件的侵害。这种保护会一直持续到反恶意软件接管。如果恶意软件设法感染你的电脑,它将无法保持隐藏状态。受信任的启动能够以恶意软件无法掩码的方式验证系统对基础结构的完整性。即使对于没有UEFI的电脑,与早期Windows版本相比,Windows也提供增强的启动安全性。
首先,让我们仔细看看rootkit及其功能。接下来,我们将说明Windows如何确保你的保护。
威胁:rootkit
Rootkit是一种复杂且危险的恶意软件。它们使用与操作系统相同的权限在内核模式下运行。因为rootkit与操作系统具有相同的权限并且在操作系统之前启动,所以它们可以完全隐藏自己和其他应用程序。通常,rootkit是整套恶意软件的一部分,可以绕过本地登录、记录密码和按键、传输私有文件以及捕获加密数据。
不同类型的rootkit在启动过程的不同阶段中进行加载:
- 固件rootkit。这些套件会覆盖电脑的基本输入/输出系统或其他硬件的固件,以便rootkit可以在Windows之前启动。
- Bootkit。这些套件将替换操作系统的启动加载程序(启动操作系统的一小部分软件),以便电脑在操作系统之前加载bootkit。
- 内核rootkit。这些套件替换了操作系统内核的一部分,以便rootkit可以在操作系统加载时自动启动。
- 驱动程序rootkit。这些套件假装成Windows与电脑硬件进行通信所使用的其中一款受信任的驱动程序。
对策
Windows支持以下四项功能,以帮助防止启动过程中加载rootkit和bootkit:
- 安全启动。具有UEFI固件和受信任的平台模块(TPM)的电脑可以配置为仅加载受信任的操作系统启动加载程序。
- 受信任启动。Windows先检查启动过程的每个组件的完整性,然后再加载组件。
- 开机初期启动的反恶意软件(ELAM)。ELAM先测试所有驱动程序然后再进行加载,并且会阻止加载未经批准的驱动程序。
- 测量的启动。电脑的固件记录启动过程,Windows可以将记录发送到受信任的服务器,此服务器能够客观地评估电脑的运行状况。
图1显示了Windows的启动过程。
图1. 安全启动、受信任启动和测量的启动功能可在每个阶段阻止恶意软件
安全启动和测量的启动只能在具有UEFI 2.3.1和TPM芯片的电脑上进行。幸运的是,满足Windows硬件兼容性计划要求的所有Windows 10和Windows 11电脑都具有这些组件,并且许多为早期版本的Windows设计的电脑也具有这些组件。
以下部分介绍了安全启动、受信任启动、ELAM和测量的启动。
安全启动
电脑启动时,它会首先找到操作系统启动加载程序。无安全启动功能的电脑运行电脑硬盘上的任何启动加载程序。电脑无法判断它是受信任的操作系统还是rootkit。
配备有UEFI的电脑启动时,电脑首先验证固件是否经过了数字签名,从而减少了固件rootkit风险。如果启用了安全启动,则固件会检查启动加载程序的数字签名以验证它是否未被修改。如果启动加载程序未被改动,则只有满足以下条件之一时,固件才会启动此启动加载程序:
- 使用受信任证书对启动加载程序进行了签名。对于通过Windows认证的电脑,Microsoft证书是受信任的。
- 用户手动批准了启动加载程序的数字签名。此操作可以让用户加载非Microsoft操作系统。
所有基于x86的Windows认证的计算机都必须满足与安全启动相关的一些要求:
- 默认情况下,它们必须启用安全启动。
- 它们必须信任Microsoft的证书(因此信任经过Microsoft签名的任何启动加载程序)。
- 它们必须允许用户将安全启动配置为信任其他启动加载程序。
- 它们必须允许用户彻底禁用安全启动。
这些要求有助于保护你免受rootkit的攻击,同时允许你运行所需的任何操作系统。你可以使用以下三个选项来运行非Microsoft操作系统:
- 将操作系统与认证的启动加载程序配合使用。因为所有Windows认证的电脑都必须信任Microsoft的证书,所以Microsoft提供了一项服务来分析和签署任何非Microsoft启动加载程序,以便所有Windows认证的电脑都将信任它。事实上,已经有了能够加载Linux的开源启动加载程序。要开始证书获取过程,请转到https://partner.microsoft.com/dashboard。
- 将UEFI配置为信任自定义的启动加载程序。所有Windows认证的电脑都允许你将签名添加到UEFI数据库来信任未认证的启动加载程序,并允许你运行任何操作系统,包括自制的操作系统。
- 关闭安全启动。所有Windows认证的电脑都允许你关闭安全启动,以便你能够运行任何软件。但是,此操作不会帮助保护你免受bootkit的攻击。
为了防止恶意软件滥用这些选项,用户必须将UEFI固件手动配置为信任未认证的启动加载程序或关闭安全启动。软件无法更改安全启动设置。
安全启动的默认状态具有广泛的信任圈,这可能导致客户信任他们不需要的启动组件。由于Microsoft第三方UEFI CA证书对所有Linux分发版的启动加载程序进行签名,因此信任UEFI数据库中的Microsoft第三方UEFI CA签名会增加系统的攻击面。打算仅信任和启动单个Linux分发版的客户将信任所有分发版——比所需的配置还要多。任何启动加载程序都会有漏洞使系统暴露,并使客户面临从未计划使用的启动加载程序被利用的风险,如最近的漏洞中所示,例如GRUB启动加载程序或影响启动组件的固件级rootkit。安全核心电脑要求启用安全启动并将其配置为默认情况下不信任Microsoft第三方UEFI CA签名,以便为客户提供可能的最安全的电脑配置。
若要信任和启动操作系统(如Linux)以及由UEFI签名的组件,可以在BIOS菜单中配置安全核心电脑,以便按照以下步骤在UEFI数据库中添加签名:
- 打开固件菜单,可以:
- 启动电脑,然后按制造商的键打开菜单。常用键:Esc、Delete、F1、F2、F10、F11或F12。在平板电脑上,常用按钮为“调高音量”或“调低音量”。在启动期间,通常会出现一个提及键的屏幕。如果没有,或者屏幕运行速度太快,无法查看,请检查制造商的站点。
- 或者,如果Windows已安装,请在“登录”屏幕或“开始”菜单中选择“电源( )”> 选择“重启”时按住Shift。选择“疑难解答”>“高级选项”>“UEFI固件设置”。
在固件菜单中,导航到“安全启动”>,然后选择信任“第三方CA”的选项。
保存更改并退出。
Microsoft继续与Linux和IHV生态系统合作伙伴协作,设计最小特权功能,帮助你仅信任的发布者和组件保持安全且可选择加入信任。
像大多数移动设备一样,基于ARM的设备(如Microsoft Surface RT设备)只适合运行Windows 8.1。因此,无法关闭安全启动,并且无法加载其他操作系统。幸运的是,适合运行其他操作系统的ARM处理器设备有较大的市场。
受信任的引导
受信任启动将接管安全启动结束的工作。启动加载程序将先验证Windows内核的数字签名,然后再加载它。Windows内核反过来验证Windows启动过程的其他每个组件,包括启动驱动程序、启动文件和ELAM。如果文件已被修改,则启动加载程序会检测到问题并拒绝加载损坏的组件。通常,Windows可以自动修复损坏的组件,并且能够恢复Windows的完整性,并允许电脑正常启动。
提前启动反恶意软件
因为安全启动已经保护了启动加载程序,受信任启动已经保护了Windows内核,所以恶意软件启动的下一个机会就是感染非Microsoft启动驱动程序。传统的反恶意软件应用直到加载启动驱动程序之后才会启动,因此使伪装成驱动程序的rootkit有机会发挥作用。
提前启动反恶意软件(ELAM)可以在所有非Microsoft启动驱动程序和应用程序之前加载Microsoft或非Microsoft反恶意软件驱动程序,从而继续由安全启动和受信任启动建立的信任链。因为操作系统尚未启动,并且Windows需要尽快启动,所以ELAM具有一简单的任务:检查每个启动驱动程序,并确定它是否在受信任的驱动程序的列表中。如果它不受信任,Windows不会加载它。
ELAM驱动程序不是一个稍后在启动过程中加载的功能齐全的反恶意软件解决方案。Windows Defender(包含在Windows中)支持ELAM,一些非Microsoft反恶意软件应用也支持ELAM。
测量的启动
如果你组织中的电脑真的被rootkit感染,则你需要了解情况。企业反恶意软件应用可能会向IT部门报告恶意软件感染,但这对隐藏存在状态的rootkit不起作用。换言之,你不能相信客户端告诉你的运行状况。
因此,即使正在运行反恶意软件,感染了rootkit的电脑看上去仍然正常。受感染的电脑会继续连接到企业网络,使rootkit能够访问大量机密数据,并可能允许rootkit在整个内部网络中传播。
测量启动适用于Windows中的TPM和非Microsoft软件。它允许网络上的受信任服务器验证Windows启动过程的完整性。测量的启动使用以下过程:
- 电脑的UEFI固件在TPM中存储固件、启动加载程序、启动驱动程序以及反恶意软件应用之前加载的所有内容的哈希。
- 在启动过程结束时,Windows将启动非Microsoft远程证明客户端。受信任的证明服务器会向客户端发送一个唯一密钥。
- TPM使用此唯一密钥对UEFI记录的日志进行数字签名。
- 客户端会向服务器发送日志,其中可能包含其他安全信息。
根据实现和配置,服务器现在可以确定客户端是否正常运行。它可以向客户端授予对受限隔离网络或完整网络的访问权限。
图2说明了测量的启动和远程证明过程。
图2. 测量启动会向远程服务器证明电脑的运行状况
Windows包括支持测量启动的应用程序编程接口。但是,若要利用它,需要非Microsoft工具来实现远程证明客户端和受信任的证明服务器。例如,请参阅Microsoft Research中的以下工具:
- TPM平台加密提供程序工具包
- TSS.MSR
测量启动使用UEFI、TPM和Windows的强大功能,为你提供了一种方法来自信地评估整个网络中客户端电脑的可信度。
摘要
安全启动、受信任启动和测量的启动可创建一个从根本上抵御bootkit和rootkit的架构。在Windows中,这些功能可能会从网络中消除内核级别的恶意软件。借助Windows,可以信任操作系统的完整性。