4.2 Bootkit病毒的演变
在本节中,我们将了解BSI的使用是如何随着操作系统的发展而被逐渐淘汰的。然后,我们将研究微软的内核模式代码签名策略如何使以前的方法失效,促使攻击者创建新的感染方法,以及名为Secure Boot的安全标准的兴起如何给新一代Bootkit恶意程序的发展设置新的障碍。
4.2.1 BSI时代的终结
随着操作系统变得越来越复杂,纯粹的BSI开始面临一些挑战。较新版本的操作系统替换了BIOS提供的用于与操作系统的驱动程序的磁盘进行通信的中断。因此,一旦操作系统启动,BSI就不能再访问BIOS中断,也不能感染系统中的其他磁盘。试图在这样的系统上执行BIOS中断可能会导致不可预料的行为。
随着越来越多的系统实现了可以从硬盘而非软盘启动的BIOS,受感染的软盘变得越来越无效,并且BSI感染率开始下降。微软Windows操作系统的引入和日益普及,以及软盘的使用量迅速减少,给老式BSI带来了致命的打击。
4.2.2 内核模式代码签名策略
随着Windows Vista和更高的Windows 64位版本中Microsoft内核模式代码签名策略的引入,Bootkit技术必须进行重大修改,以满足对内核模式驱动程序的新要求,扭转当前攻击者的局面。从Vista开始,每个系统都需要有效的数字签名才能执行,未经签名的恶意内核模式驱动程序将无法加载。一旦操作系统加载完成,攻击者就无法将他们的代码注入内核中,他们不得不寻找绕过现代计算机系统完整性检查的方法。
我们可以将绕过微软的数字签名检查的所有已知技巧分为4组,如图4-1所示。
图4-1 绕过内核模式代码签名策略的技术
第一组完全在用户模式下运行,并依靠内置的微软Windows方法来合法地禁用签名策略,以便调试和测试驱动程序。操作系统提供了一个接口,通过使用自定义证书来验证驱动程序的数字签名,从而暂时禁用驱动程序映像身份验证或启用测试签名。
第二组试图利用系统内核的漏洞或合法的第三方驱动程序的有效数字签名,从而使恶意软件渗透到内核模式。
第三组针对操作系统的引导程序,通过修改操作系统内核来禁用内核模式代码签名策略,这种方法在较新的Bootkit恶意软件中被使用。它们先于操作系统的组件进行加载,因此可以篡改操作系统内核以禁用安全检查,这种方法我们将在下一章中详细讨论。
第四组的目标是损害系统固件。与第三组一样,其目标是在操作系统内核执行之前在目标系统上执行以禁用安全检查。唯一的主要区别是这些攻击针对的是固件而不是引导加载程序组件。
实际上,第三种方法(破坏引导程序)是最常见的,因为它的攻击更持久。结果,攻击者又回到了他们以前的BSI技巧中去创建新一代的Bootkit恶意软件。在现代计算机系统中,绕过完整性检查的需求严重影响了Bootkit的开发。
4.2.3 Secure Boot的兴起
如今,越来越多的计算机配备了Secure Boot保护功能。Secure Boot是一种旨在确保启动过程中涉及的组件完整性的安全标准。我们将在第17章中对其进行更仔细的研究。面对Secure Boot,恶意软件的格局不得不再次改变。较新的恶意软件已经不再针对引导程序,而是试图以系统固件为目标。
就像微软的内核模式代码签名策略根除了内核模式Rootkit并开创了一个Bootkit的新时代一样,Secure Boot当前也为新一代的Bootkit恶意软件设置了障碍。我们看到新一代的恶意软件针对BIOS的攻击更为频繁。这一类型的威胁我们将在第15章中讨论。