第11章传统计算机病毒22病毒有广义和狭义上的概念,广义上的病毒包含蠕虫、木马、后门程序等恶意代码,而狭义上的病毒需要依附于宿主程序,本章将就狭义的病毒进行讨论。33课程目标通过本章的学习,读者应能够:掌握病毒的定义;描述计算机病毒的种类和特征;了解系统可能被病毒感染所表现出的常见的症状或行为;解释不同类型的病毒是如何进入系统和传播的。4411.1概述病毒这个词来源于生命科学。生理学上的病毒是一种不能够进行自我复制的寄生性实体,因此,它们通过将DNA注入另一个生物体的细胞来抢夺其中的资源,创造更多的复制品。有时,病毒繁殖产生的副产品会破坏主体细胞,这个生物体就会生病。其他病毒DNA仍留在主体细胞中,不造成破坏,当细胞分裂时会被传递。同生物体中的病毒一样,计算机病毒也是一种自己不能执行的寄生代码。计算机病毒附着在宿主程序的可执行文件中,以便在宿主程序被执行时也随之执行。在大多数情况下,当病毒代码完成了执行后会跳转到原来的宿主程序上,因此用户的印象是,被感染的文件似乎没有什么异常。5计算机病毒可以对它们自己进行复制并在计算机系统中传播,从而造成破坏。自从病毒在20世纪80年代中期首次出现以后,我们已经辨别出成千上万种病毒。大多数病毒不是有意具有破坏性的,有些创建病毒的人只是出于证明自己的能力,其他病毒创建者是为了引起人们对己知应用和系统的安全性的关注。然而,一个编写不佳的“有害”病毒可能会破坏系统,因为病毒编程中的错误。最初病毒主要是通过被感染的软盘来进行传播的,现在,这些软盘己经不再是传播病毒的主要途径了。根据国际计算机安全协会(ICSA)的统计,目前87%的病毒是通过电子邮件进入系统的。6所有病毒都具有以下一般特征。它们能够:感染有可执行代码的程序或文件;通过网络传播;消耗内存,减缓系统运行速度;造成引导失败或破坏扇区;引发硬盘被重新格式化;影响程序的运行方式;感染防毒程序。7影响程序的运行方式;感染防毒程序。病毒不能感染只含有数据的文件,但病毒仍可以破坏或删除这些文件。病毒大致可以被归为以下三类:a.引导扇区病毒将自己附着在软盘和硬盘的引导扇区上。b.文件感染病毒或寄生性病毒感染其他程序或文件。c.复合性病毒能够感染硬盘的MBR,软盘的引导扇区,以及DOS中的exe和com文件。无论是哪种类型,病毒的基本机制都是相同的。跨平台病毒可以感染属于不同平台的文件(如,Windows和Linux)。然而,这些病毒很少见,也很少能获得100%的功能性。8811.2一般病毒术语和概念下表中的术语和概念将帮助用户了解病毒是如何影响系统的。9101011.3引导扇区病毒引导扇区病毒感染硬盘的主引导记录(MBR)。MBR在硬盘的第一个扇区,是计算机开启后读取的第一个扇区。MBR上的信息告诉计算机在哪里可以找到操作系统文件。通常,当一个计算机被打开后,它会读取MBR,发现操作系统,然后将该操作系统加载到存储器中。提示:主引导记录(MBR)有时也被称为分区表。引导扇区病毒会用自己的代码代替MBR中的信息,因此,当计算机读取第一个扇区时,病毒会在操作系统之前被加载到内存中。当病毒进入内存后,它会将自己复制到计算机的每个磁盘上。除非被清除,否则该引导扇区病毒在每次计算机被11启动时都会加载到存储器中。大多数软盘只携带数据文件,但如果将一个数据磁盘插入到一个被感染的计算机中,该病毒会将自己复制在这个磁盘中。当病毒改写了这个数据磁盘的第一个扇区中的信息使其成为类似于启动盘的磁盘,于是这个软盘便成为了携带病毒的载体。如果将这个被感染的数据盘插人到未被感染的计算机中的软驱中时,该计算机会试图从软驱中引导,并将病毒加载到它的存储器中,也由此被感染。(由于目前软驱已经退出市场,故引导扇区病毒通过软磁盘引导扇区感染并传播的示意图省略)12提示:除非计算机正在启动;否则它不会读取磁盘的第一个扇区。因此,当将一个被感染的数据盘插人到一个正在运行的计算机上时,病毒不会感染该计算机,除非该磁盘含有一个被感染的文件,而且该文件被加载到该计算机上。除了感染其他磁盘,引导扇区病毒还会对系统造成其他破坏。它们可能会删除硬盘中的部分或全部内容,修改键盘输入,清除CMOS存储或清除MBR。一些引导扇区病毒在造成破坏后会显示信息或播放声音。一些引导扇区病毒在感染了计算机硬盘后不会被立刻激活,也不一定会感染计算机中安装的所有磁盘。其他的某些引导区病毒还可以被加密。具有这些特性的病毒很难被检测和清除。如,15_Year便是一个引导扇区病毒,它可以感染硬盘和软盘的引导扇区,改写硬盘上的部分数据。13引导扇区病毒具有以下的特征和特性:引导扇区病毒通常会将原始的引导扇区以及部分病毒代码复制到磁盘的另一个地方。对代码的重新部署通常是破坏数据的原因。重新部署的扇区看起来像是一个坏扇区,操作系统认为它们是不可用的。如果一个软盘在同一个位置有几个坏扇区,就有可能是引导病毒造成的。一些引导扇区病毒有设计缺陷,导致在读取软盘时会产生偶尔的写保护错误。这些设计缺陷还可能会将病毒的部分放置在磁盘很少被使用的区域。当这些区域被使用时或当该引导病毒不能够正确安装自己时,就会出现引导错误。14虽然引导扇区病毒曾经是最常见的病毒类型,但它们已不再像以前那样造成严重的威胁。软盘己不再是共享文件和信息的主要方法,而更多的是通过网络、电子邮件和基于Web的方法。病毒程序编写者现在利用这些较新的技术更快、更有效地传播病毒。然而,还不能断言引导扇区病毒已经就此灭绝。只要软盘还在使用,引导扇区病毒将仍构成威胁。编写主引导记录病毒需要了解以下几个方面的内容。15用什么来保存原始主引导记录众所周知的,文件型病毒用以保存被感染修改的部分是文件。引导型病毒是否也可以使用文件存储被覆盖的引导记录呢?答案是否定的。由于主引导记录病毒先于操作系统执行,因而不能使用操作系统的功能调用,而只能使用BIOS的功能调用或者使用直接的IO设计。通常,使用BIOS的磁盘服务将主引导记录保存于绝对的扇区内。由于零道零面二扇区是保留扇区,因而通常使用它来保存。16需要掌握的BIOS磁盘服务功能调用INT13H子功能02H读扇区其调用方法为:入口为:AH=02HAL=读入的扇区数CH=磁道号CL=扇区号(从1开始)DH=头号17DL=物理驱动器号ES:BX--要填充的缓冲区返回为:当CF置位时表示调用失败AH=状态AL=实际读入的扇区数INT13H子功能03H写扇区其调用方法为:入口为:AH=03HAL=写入的扇区数CH=磁道号CL=扇区号(从1开始)18DH=头号DL=物理驱动器号ES:BX--缓冲区返回为:当CF置位时表示调用失败AH=状态AL=实际写入的扇区数这类病毒通过什么来进行感染通常,这类病毒通过截获中断向量INT13H进行系统监控。当存在软盘或硬盘时,病毒将检测其是否干净,若尚未感染则感染之。191911.4文件感染病毒文件感染或寄生病毒会感染可执行的程序,如带有.COM、.EXE和.SYS后缀的文件。在宿主程序执行时,文件感染病毒被激活。它们通过感染其他的可执行程序来传播。文件感染病毒可以分为以下几类:DOS病毒:感染DOS中的可执行程序;Windows病毒:感染Windows中的可执行程序;宏病毒:感染带有宏功能的应用文件中的宏;脚本病毒:当它们进入一个存在着脚本宿主程序的系统时会激活;Java病毒:嵌入在用Java编程语言编写的应用中;Shockwave病毒:感染.SWF文件。202011.5DOS病毒第一代恶意代码病毒就是以DOS病毒的形式出现的。DOS病毒通过将自己的复制文件附着在宿主程序的末尾来感染程序,称为appendinginfection。这通常意味着,该病毒将自己添加到了文件的末尾。然后,该病毒会将宿主程序的原来的文件头进行复制,并将其转移到病毒体中。在复制和存储了文件头后,病毒会将带有一个指向病毒体的错误文件头替换原来文件头。这保证了该病毒代码能够在执行该程序时首先被运行。21通常,当一个程序被执行时,计算机会从程序头开始读取代码。当一个程序被感染后,计算机会读取错误的文件头而跳过真正的程序进入病毒代码。当计算机读取病毒代码时,病毒会被加载到内存中。在病毒代码的末尾是程序的真正的文件头,计算机会跳回到原来程序的开始并执行。在多数情况下,该程序会正常运行,用户并不知道已经存在病毒。这是最常见的感染形式,因为它只需要将病毒添加到一个文件的末尾,并对原来主文件的代码进行修改即可。22图11.1病毒的文件头跳转示意图23虽然大多数DOS病毒将它们的代码附着在宿主程序的末尾,但有些病毒会将它们的代码插入在程序的开头,称作prependinginfection。这样的病毒会对它们的宿主程序造成严重的破坏,而且很难清除。DOS病毒的特征和行为DOS病毒感染DOS可执行程序(一般来说,是具有.COM和.EXE扩展名的文件)。大多数DOS病毒会试图通过感染其他宿主程序来进行复制和传播。在多数情况下,可以将它们从被感染的文件中成功地删除(除非它们已经改写或破坏了原来程序的部分代码)。除了感染可执行程序(.COM和.EXE),一些DOS病毒还会感染带有以下扩展名的文件:.SYS,.BIN,.BAT,.0VL和.DRV。24当一个DOS病毒感染了一台计算机后,它通常会造成一些可以识别的变化。大多数被感染文件的大小会变大,因为有附加的病毒代码的加入。如果病毒存在于内存,它会减慢系统的运行速度。当计算机内存无故下降时,或系统开始运行缓慢,便有可能是感染了病毒(这些症状也可能由于软件原因引起的)。如果你不能肯定你的计算机为什么出现功能异常,你应该用病毒扫描程序检测你的计算机。如果病毒改写了宿主程序的代码,宿主程序不能运行,用户便可以立即知道出了问题。25通常,DOS病毒不会感染MicrosoftWindows的可执行程序。如果Windows或其他操作系统从一个DOS磁盘中启动并加载一个标准的DOS可执行程序,则DOS病毒也可以感染运行该Windows或其他操作系统的PC。运行基于386(或更高)系统的NetWare或自动装载的操作系统的PC很容易受到MBR的感染。任何提供“DOS窗口”或“DOS模拟器”来运行DOS程序的操作系统都有可能会感染上DOS病毒。26DOS病毒范例同引导扇区病毒一样,DOS病毒通常是通过计算机用户之间共享软盘时进行传播的。今天DOS病毒几乎已经“灭绝”。大多数病毒已经被防毒软件消灭,剩下的拷贝版本都存在于防毒公司的病毒研究实验室中。一些仍存在的DOS病毒有DarkAvenger、Tequila和Bladerunner。DarkAvenger是一个隐秘型引导扇区病毒,它可以用无意义的代码改写硬盘上的数据扇区。Tequila是另一种隐秘型引导扇区病毒,Bladerunner是一系列可以感染COM和EXE文件的加密病毒。272711.6Windows病毒Windows病毒与DOS病毒在攻击和传播方式上相似。不同之处在于,Windows病毒攻击的是Windows操作系统而不是DOS。通过DOS病毒相比,他们攻击不同的可执行文件,同时所附着的代码也略有不同。Windows病毒通常向宿主程序附着一个以上的拷贝,将其代码隐藏在程序代码的开始、中间或末尾。下面以Windowscavity为例进行说明:该病毒具有很长的代码,为避免被检测到,它在可执行的文件中寻找可用的空间,并将病毒代码拷贝放入这些位置,见下图。28同DOS病毒一样,Windows病毒可以修改应用代码中的头部信息,在程序被执行时将自己加载到内存中。如果病毒编写得完美,宿主程序在运行时,不会发现被感染。图11.2Windows病毒插入文件可用空间29Windows病毒的特征和行为大多数Windows病毒在感染文件以后,会增加文件的大小,许多病毒还会改变时间戳。然而,有些Windows病毒可以将主文件原来的时间戳保存起来,当感染结束后再将其恢复。对时间戳的恢复隐藏了它已经被修改的事实。一些Windows病毒在感染一个程序时可能不增加该文件的大