Rootkit和Bootkit:现代恶意软件逆向分析和下一代威胁
上QQ阅读APP看书,第一时间看更新

第5章
操作系统启动过程要点

本章介绍了Microsoft Windows引导过程中与Bootkit相关的最重要的内容。因为Bootkit的目标是将其隐藏在非常低的级别的目标系统上,所以它需要篡改操作系统的引导组件。因此,在我们深入了解Bootkit是如何构建的以及它们的行为之前,需要了解操作系统的引导过程是如何工作的。

注意 本章所载资料适用于微软Windows Vista及更新的版本,早期版本的Windows的引导过程有所不同,这在5.3.4节中有解释。

引导过程是操作系统操作中最重要但最不为人所了解的阶段之一。尽管通用的概念大家都很熟悉,但很少有程序员(包括系统程序员)详细地了解它,而且大多数人都缺乏了解它们的工具。这使得引导过程成为攻击者利用逆向工程和实验中获得的知识的沃土,而程序员只能依赖不完整或过时的文档。

从安全的角度来看,引导进程负责启动系统并将其带到可信任的状态。在此过程中还会创建防御性逻辑的代码用来检查系统状态,因此,攻击者越早设法破坏系统,就越容易在检查中隐藏起来。

在本章中,我们将回顾Windows系统在使用旧版固件的机器上运行的引导过程的基础知识。由于Windows 7 x64 SP1中引入的UEFI固件的机器的引导过程与基于旧版固件的计算机有很大不同,因此我们将在第14章中单独讨论这个过程。

在本章中,我们从攻击者的角度来探讨引导过程。尽管没有什么能阻止攻击者将目标锁定在特定的芯片组或外设上(确实有一些),但这类攻击扩展性不好,而且不稳定。因此,攻击者最感兴趣的是相对通用的接口,但又不是通用到防御程序员可以容易地理解和分析攻击的程度。

与往常一样,随着进攻性研究不断推进,操作系统内部的实现方式变得更加公开透明。本章的组织结构着重说明了这一点:我们将从总体概述入手,随后逐步深入未注册(在撰写本文时)的数据结构和逻辑流程,这些数据结构和逻辑流程只能从对系统的分析中得到—这也正是Bootkit研究人员和恶意软件创建者所做的。