4.1 第一个Bootkit恶意程序
Bootkit恶意软件的历史可以追溯到IBM PC上市之前,通常我们把在1971年左右发现的一个能够自我复制的程序Creeper称为“第一个Bootkit恶意软件”。Creeper是一款在VAX PDP-10上的TENEX网络操作系统下运行的恶意软件,现在已知的第一个杀毒软件Reaper就是专门为删除Creeper而设计的。在本节中,我们将以Creeper为示例介绍早期的Bootkit恶意软件。
4.1.1 引导扇区感染者
引导扇区感染者(BSI)是最早的Bootkit恶意软件之一。它们第一次被发现是在MS-DOS(Windows之前的非图形操作系统)时代,当时个人计算机中BIOS的默认行为是尝试从软盘驱动器中找到的任何磁盘进行引导。顾名思义,这些恶意程序会感染磁盘的引导扇区(第一个物理扇区)。
在启动时,BIOS将在驱动器A中查找可启动软盘,并执行在引导扇区中找到的任何代码。如果受感染的软盘留在驱动器中,即使磁盘不可引导,系统也会被BSI感染。
尽管有些BSI感染了软盘和操作系统文件,但是大多数BSI都是无害的,这意味着它们只针对硬件,与操作系统无关。BSI仅依靠BIOS提供的中断来与硬件通信并感染磁盘驱动器,而被感染的软盘将试图感染与IBM相关的计算机,与运行什么操作系统无关。
4.1.2 Elk Cloner和Load Runner病毒
BSI病毒软件首先针对的是Apple Ⅱ微型计算机,其操作系统通常全部包含在软盘中。第一个感染Apple Ⅱ的病毒要归功于Rich Skrenta,其Elk Cloner病毒(1982~1983年)[1]使用了BSI所采用的感染方法,尽管它比PC引导扇区病毒早了几年。
Elk Cloner实质上是将自己注入已加载的Apple操作系统中,以便对其进行修改。然后,该病毒驻留在内存中,通过拦截磁盘访问和使用其代码覆盖系统引导扇区来感染其他磁盘。每启动50次时,它都会显示以下信息(有时也被描述为一首诗):
下一个影响Apple Ⅱ的恶意软件是Load Runner,它于1989年首次出现。Load Runner将监听由组合键Control-Command-Reset触发的Apple reset命令,当监听到该命令时,将其写入当前磁盘中保存,从而使它可以在系统重启时被保存下来。这是早期实现恶意软件持久化的方法之一,它预示着恶意软件将进行更复杂的尝试,使其无法被发现。
4.1.3 Brain病毒
1986年,出现了第一个PC病毒Brain。最初版本的Brain只影响360KB的软盘。这是一个相当大的BSI,Brain使用加载程序感染了软盘的第一个引导扇区,然后将其主体和原始引导扇区存储在软盘的可用扇区中。Brain将这些扇区(即带有原始引导代码和主体的扇区)标记为bad,使这些空间不会被操作系统覆盖。
Brain的某些方法也已在新出现的Bootkit恶意软件中采用。第一,Brain将其代码存储在一个隐藏的区域中,而新一代的Bootkit恶意软件通常也会这样做。第二,它会将受感染的扇区标记为bad,以保护代码不受操作系统的管理。第三,它使用隐身功能,如果病毒在访问受感染扇区时处于活动状态,它将挂载磁盘中断处理程序以确保系统显示的是合法的引导代码扇区。在接下来的几章中,我们将更详细地探讨这些Bootkit的功能。
[1]David Harley, Robert Slade, and Urs E. Gattikerd, Viruses Revealed (New York: McGraw-Hill/Osborne, 2001).