6.1.2 计算机病毒结构

6.1.2 计算机病毒结构

传统计算机病毒(以下简称计算机病毒)一般由感染模块、触发模块、破坏模块(表现模块)和引导模块(主控模块)四大部分组成。根据是否被加载到内存,计算机病毒又分为静态和动态两种。处于静态的病毒存于存储介质中,一般不能执行感染和破坏功能,其传播只能借助第三方活动(如复制、下载和邮件传输等)实现。当病毒经过引导功能而进入内存后,便处于活动状态(动态),满足一定触发条件后就开始进行传染和破坏,从而构成对计算机系统和资源的威胁和毁坏。传统计算机病毒的工作流程如图6.1所示。计算机静态病毒通过第一次非授权加载,其引导模块被执行,转为动态。动态病毒通过某种触发手段不断检查是否满足条件,一旦满足则执行感染和破坏功能。病毒的破坏力取决于破坏模块,有些病毒只是干扰显示,占用系统资源或者发出怪音等,而另一些病毒不仅表现出上述外观特性,还会破坏数据甚至摧毁系统。

图6.1 传统计算机病毒的工作流程示意图

下面详细介绍传统计算机病毒的4个模块。

1.引导模块(主控模块)

传统计算机病毒实际上是一种特殊的程序。该程序必然要存储在某一种介质上,为了进行自身的主动传播,病毒程序必须寄生在可以获取执行权限的寄生对象上。就目前出现的各种计算机病毒来看,其寄生对象有两种:寄生在磁盘引导扇区和寄生在特定文件(EXE和COM等可执行文件,DOC和HTML等非执行文件)中。由于不论是磁盘引导扇区还是寄生文件,都有获取执行权限的可能,寄生在它们中的病毒程序就可以在一定条件下获得执行权限,从而得以进入计算机系统,并处于激活状态,然后进行动态传播和破坏活动。

计算机病毒的寄生方式有两种:采用替代法或采用链接法。所谓替代法,是指病毒程序用自己的部分或全部指令代码,替代磁盘引导扇区或文件中的全部或部分内容。链接法则是指病毒程序将自身代码作为正常程序的一部分与原有正常程序链接在一起,病毒链接的位置可能在正常程序的首部、尾部或中间,寄生在磁盘引导扇区的病毒一般采取替代法,而寄生在可执行文件中的病毒一般采用链接法。

计算机病毒寄生的目的就是找机会执行引导模块,从而使自己处于活动状态。计算机病毒的引导过程一般包括以下三方面。

(1)驻留内存。病毒若要发挥其破坏作用,一般要驻留内存。为此就必须开辟所用内存空间或覆盖系统占用的部分内存空间。其实,有相当多的病毒根本就不用驻留在内存中。

(2)窃取系统控制权。在病毒程序驻留内存后,必须使有关部分取代或扩充系统的原有功能,并窃取系统的控制权。此后病毒程序依据其设计思想,隐蔽自己,等待时机,在条件成熟时,再进行传染和破坏。

(3)恢复系统功能。病毒为隐蔽自己,驻留内存后还要恢复系统,使系统不会死机,只有这样才能等待时机成熟后进行感染和破坏。有的病毒在加载之前执行动态反跟踪和病毒体解密功能。

对于寄生在磁盘引导扇区中的病毒来说,病毒引导程序占有了原系统引导程序的位置,并把原系统引导程序搬移到一个特定的地方。这样系统一旦启动,病毒引导模块就会自动地装入内存并获得执行权,然后该引导程序负责将病毒程序的传染模块和发作模块装入内存的适当位置,并采取常驻内存技术以保证这两个模块不会被覆盖,接着对这两个模块设定某种激活方式,使之在适当的时候获得执行权。在完成这些工作后,病毒引导模块将系统引导模块装入内存,使系统在带毒状态下依然可以继续运行。

对于寄生在文件中的病毒来说,病毒程序一般通过修改原有文件,使对该文件的操作转入病毒程序引导模块,引导模块也完成把病毒程序的其他两个模块驻留内存及初始化的工作,然后把执行权交给源文件,使系统及文件在带毒的状态下继续运行。

2.感染模块

所谓感染,是指计算机病毒由一个载体传播到另一个载体,由一个系统进入另一个系统的过程。这种载体一般为磁盘或磁带,它是计算机病毒赖以生存和进行传染的媒介。但是,只有载体还不足以使病毒得到传播,促成病毒的传染还有一个先决条件,可以分为以下两种情况,或者叫作两种方式。

其中一种情况是用户在复制磁盘或文件时,把一个病毒由一个载体复制到另一个载体上。或者是通过网络上的信息传递,把一个病毒程序从一方传递到另一方。这种传染方式称为计算机病毒的被动传染。其传染过程是随着复制或网络传输工作的进行而进行的。

另外一种情况是以计算机系统的运行以及病毒程序处于激活状态为先决条件。在病毒处于激活的状态下,只要传染条件满足,病毒程序就能主动地把病毒自身传染给另一个载体或另一个系统。这种传染方式称为计算机病毒的主动传染。其传染过程是这样的:在系统运行时,病毒通过病毒载体即系统的外存储器进入系统的内存储器,然后,常驻内存并在系统内存中监视系统的运行,从而可以在一定条件下采用多种手段进行传染。

计算机病毒的传染方式基本可分为两大类:一是立即传染,即病毒在被执行的瞬间,抢在宿主程序开始执行前,立即感染磁盘上的其他程序,然后再执行宿主程序;二是驻留内存并伺机传染,内存中的病毒检查当前系统环境,在执行一个程序、浏览一个网页时传染磁盘上的程序。驻留在系统内存中的病毒程序在宿主程序运行结束后,仍可活动,直至关闭计算机。

当执行或使用被感染的文件时,病毒就会加载到内存。一旦被加载到内存,计算机病毒便开始监视系统的运行,当它发现被传染的目标时,进行如下操作。

(1)根据病毒自己的特定标识来判断文件是否已感染了该病毒。

(2)当条件满足时,将病毒链接到文件的特定部位,并存入磁盘中。

(3)完成感染后,继续监视系统的运行,试图寻找新的攻击目标。

文件型病毒通过与磁盘文件有关的操作进行传染,主要传染途径有以下几种。

(1)加载执行文件。加载传染方式每次传染一个文件,即用户准备使用的那个文件,传染不到用户没有使用的那些文件。

(2)浏览目录过程。在用户浏览目录的时候,病毒检查每一个文件的扩展名,如果是适合感染的文件,就调用病毒的感染模块进行传染。这样病毒可以一次传染硬盘一个目录下的全部目标。例如,DOS下通过DIR命令进行传染,Windows下利用Explorer.exe文件进行传染。

(3)创建文件过程。创建文件是操作系统的一项基本操作,功能是在磁盘上建立一个新文件。Word宏病毒就是典型的利用创建文件过程进行感染的恶意代码。这种传染方式更为隐蔽狡猾,因为新文件的大小用户无法预料。

3.破坏模块(表现模块)

破坏模块在设计原则、工作原理上与感染模块基本相同。在触发条件满足的情况下,病毒对系统或磁盘上的文件进行破坏活动,这种破坏活动不一定都是删除磁盘文件,有的可能是显示一串无用的提示信息。有的病毒在发作时会干扰系统或用户的正常工作,而有的病毒,一旦发作,则会造成系统死机或删除磁盘文件。新型的病毒发作还会造成网络的拥塞甚至瘫痪。

传统计算机病毒的破坏行为体现了病毒的杀伤力。病毒破坏的激烈程度取决于病毒作者的主观愿望和他所具有的技术能量。数以万计并不断发展扩张的病毒,其破坏行为千奇百怪,难以做全面的描述。病毒破坏目标和攻击部位主要有系统数据区、文件、内存、系统运行速度、磁盘、CMOS、主板和网络等。

但是,在利益的驱使下,2005年以后的恶意代码的破坏行为已经越来越隐秘。新型恶意代码的破坏不再是赤裸裸的破坏系统、删除文件、堵塞网络等,而是悄悄地窃取用户机器上的信息(账号、口令、重要数据、重要文件等),甚至,当信息窃取成功后会悄悄地自我销毁,消失得无影无踪。

4.触发模块

感染、潜伏、可触发和破坏是病毒的基本特性。感染使病毒得以传播,破坏性体现了病毒的杀伤能力。大范围的感染行为,频繁的破坏行为可能给用户以重创,但是,如果它们总是使系统或多或少地出现异常,则很容易暴露。而不破坏、不感染又会使病毒失去其特性。可触发性是病毒的攻击性和潜伏性之间的调整杠杆,可以控制病毒感染和破坏的频度,兼顾杀伤力和潜伏性。

过于苛刻的触发条件,可能使病毒有好潜伏性,但不易传播;而过于宽松的触发条件将导致病毒频繁感染与破坏,容易暴露,导致用户做反病毒处理,也不会有太大的杀伤力。

计算机病毒在传染和发作之前,往往要判断某些特定条件是否满足,满足则传染或发作,否则不传染或不发作,或只传染不发作,这个条件就是计算机病毒的触发条件。实际上病毒采用的触发条件花样繁多,从中可以看出病毒作者对系统的了解程度及其丰富的想象力和创造力。目前病毒采用的触发条件主要有以下几种。

(1)日期触发:许多病毒采用日期作为触发条件。日期触发大体包括特定日期触发、月份触发和前半年/后半年触发等。

(2)时间触发:时间触发包括特定的时间触发、染毒后累计工作时间触发和文件最后写入时间触发等。

(3)键盘触发:有些病毒监视用户的击键动作,当发现病毒预定的击键时,病毒被激活,进行某些特定操作。键盘触发包括击键次数触发、组合键触发和热启动触发等。

(4)感染触发:许多病毒的感染需要某些条件触发,而且相当数量的病毒以与感染有关的信息反过来作为破坏行为的触发条件,称为感染触发。它包括运行感染文件个数触发、感染序数触发、感染磁盘数触发和感染失败触发等。

(5)启动触发:病毒对计算机的启动次数计数,并将此值作为触发条件。

(6)访问磁盘次数触发:病毒对磁盘I/O访问的次数进行计数,以预定次数作为触发条件。

(7)CPU型号/主板型号触发:病毒能识别运行环境的CPU型号/主板型号,以预定CPU型号/主板型号作为触发条件,这种病毒的触发方式奇特罕见。

被计算机病毒使用的触发条件是多种多样的,而且往往不只是使用上面所述的某一个条件,而是使用由多个条件组合起来的触发条件。大多数病毒的组合触发条件是基于时间的,再辅以读/写盘操作、按键操作以及其他条件。例如,“侵略者”病毒的触发时间条件是开机后系统运行时间和病毒传染个数成某个比例时,当恰好按“Ctrl十Alt十Delete”组合键试图重新启动系统时,则病毒发作。

病毒中有关触发机制的编码是其敏感部分。剖析病毒时,如果搞清了病毒的触发机制,可以修改此部分代码,使病毒失效,这样就可以产生没有潜伏性的病毒样本,供反病毒研究者使用。