如题所述
(一)非授权可执行性 用户通常调用执行一个程序时,把系统控制交给这个程序,并分配给他相应系统资源,如内存,从而使之能够运行完成用户的需求。因此程序执行的过程对用户是透明的。而计算机病毒是非法程序,正常用户是不会明知是病毒程序,而故意调用执行。但由于计算机病毒具有正常程序的一切特性:可存储性、可执行性。它隐藏在合法的程序或数据中,当用户运行正常程序时,病毒伺机窃取到系统的控制权,得以抢先运行,然而此时用户还认为在执行正常程序。
(二)隐蔽性 计算机病毒是一种具有很高编程技巧、短小精悍的可执行程序。它通常粘附在正常程序之中或磁盘引导扇区中,或者磁盘上标为坏簇的扇区中,以及一些空闲概率较大的扇区中,这是它的非法可存储性。病毒想方设法隐藏自身,就是为了防止用户察觉。
(三)传染性 传染性是计算机病毒最重要的特征,是判断一段程序代码是否为计算机病毒的依据。病毒程序一旦侵入计算机系统就开始搜索可以传染的程序或者磁介质,然后通过自我复制迅速传播。由于目前计算机网络日益发达,计算机病毒可以在极短的时间内,通过像 Internet这样的网络传遍世界。
(四)潜伏性 计算机病毒具有依附于其他媒体而寄生的能力,这种媒体我们称之为计算机病毒的宿主。依靠病毒的寄生能力,病毒传染合法的程序和系统后,不立即发作,而是悄悄隐藏起来,然后在用户不察觉的情况下进行传染。这样,病毒的潜伏性越好,它在系统中存在的时间也就越长,病毒传染的范围也越广,其危害性也越大。
(五)表现性或破坏性 无论何种病毒程序一旦侵入系统都会对操作系统的运行造成不同程度的影响。即使不直接产生破坏作用的病毒程序也要占用系统资源(如占用内存空间,占用磁盘存储空间以及系统运行时间等)。而绝大多数病毒程序要显示一些文字或图像,影响系统的正常运行,还有一些病毒程序删除文件,加密磁盘中的数据,甚至摧毁整个系统和数据,使之无法恢复,造成无可挽回的损失。因此,病毒程序的副作用轻者降低系统工作效率,重者导致系统崩溃、数据丢失。病毒程序的表现性或破坏性体现了病毒设计者的真正意图。
(六)可触发性 计算机病毒一般都有一个或者几个触发条件。满足其触发条件或者激活病毒的传染机制,使之进行传染;或者激活病毒的表现部分或破坏部分。触发的实质是一种条件的控制,病毒程序可以依据设计者的要求,在一定条件下实施攻击。这个条件可以是敲入特定字符,使用特定文件,某个特定日期或特定时刻,或者是病毒内置的计数器达到一定次数等。
“计算机病毒”一词最早是由美国计算机病毒研究专家F--Cohen博士提出的。
“病毒”一词是借用生物学中的病毒。通过分析、研究计算机病毒,人们发现它在很多方面与生物病毒有着相似之处。要做反计算机病毒技术的研究,首先应搞清楚计算机病毒的特点和行为机理,为防范和清除计算机病毒提供充实可靠的依据。
再生机制是生物病毒的一个重要特征。通过传染,病毒从一个生物体扩散到另一个生物体。在适宜的条件下,它得到大量繁殖,并进而使被感染的生物体表现出病症甚至死亡。同样地,计算机病毒也会通过各种渠道从已被感染的计算机扩散到未被感染的计算机,在某些情况下造成被感染的计算机工作失常甚至瘫痪。这就是计算机病毒最重要的特征——传染和破坏。与生物病毒不同的是,计算机病毒是一段人为编制的计算机程序代码,这段程序代码一旦进入计算机并得以执行,就与系统中的程序连接在一起,并不断地去传染(或连接、或覆盖)其它未被感染的程序。具有这种特殊功能的程序代码被称为计算机病毒。携带有这种程序代码的计算机程序被称为计算机病毒载体或被感染程序。是否具有传染性是判别一个程序是否为计算机病毒的最重要条件。正常的计算机程序是不会将自身的代码强行连接到其它程序之上的。比如DOS的FORMAT程序决不会将其程序代码连接到别的程序中去。在系统生成过程中有些系统的安装程序会修改相关程序的参数配置,如MSWindows系统。有些程序通过自身的设置功能,按用户要求会修改自己的参数设置,如Borland公司的SideKick。还有些程序出于加密防拷贝或某些其它目的,在运行时动态改变自身的程序代码,如Xcom通信程序。在这几种情况下,那些被修改的程序内部的确发生了变化,但这些变化只局限于各自应用系统的内部,不会发生将自身代码连接到毫不相干的程序之上的情形。计算机病毒的再生机制,即它的传染机制却是使病毒代码强行传染到一切未受到传染的程序之上,迅速地在一台计算机内,甚至在一群计算机之间进行传染、扩散。每一台被感染了计算机病毒的计算机,本身既是一个受害者,又是一个新的计算机病毒的传染源。被感染的计算机往往在一定程度上丧失了正常工作的能力,运行速度降低,功能失常,文件和数据丢失,同时计算机病毒通过各种可能的渠道,如软盘、计算机网络去传染其它的计算机。当你在一台机器上发现了病毒时,往往曾在这台计算机上用过的软盘已感染上了病毒;而与这台机器相邻的其它几台计算机也许早已被该病毒侵染上了。通过数据共享的途径,计算机病毒会非常迅速地蔓延开,若不加控制,就会在短时间内传播到世界各个角落里去。可见反计算机病毒的问题是一个全球范围的问题。在我国发现的首例计算机病毒就是国外称为意大利病毒的小球病毒。在我国首先发现的Traveller病毒随着国际间的交往,也扩散到国外,其大名出现在国外杀病毒软件的病毒黑名单中。与生物病毒不同,所有的计算机病毒都是人为编写的计算机程序代码,是人为制造出来的而不是天生的。这些着意编写的计算机程序代码,其原始形式可以是C语言,可以是BASIC程序,可以是汇编语言程序,也可以是批命令程序,还可以是机器指令程序。其共同特点就是具有传染性和破坏性。
计算机病毒的另一个特点是只有当它在计算机内得以运行时,才具有传染性和破坏性等活性。也就是说计算机CPU的控制权是关键问题。若计算机在正常程序控制下运行,而不运行带病毒的程序,则这台计算机总是可靠的。在这台计算机上可以查看病毒文件的名字,查看计算机病毒的代码,打印病毒的代码,甚至拷贝病毒程序,却都不会感染上病毒。反病毒技术人员整天就是在这样的环境下工作。他们的计算机虽也存有各种计算机病毒的代码,但已置这些病毒于控制之下,计算机不会运行病毒程序,整个系统是安全的。相反,计算机病毒一经在计算机上运行,绝大多数病毒首先要做初始化工作,在内存中找一片安身之处,随后将自身与系统软件挂起钩来,然后再执行原来被感染程序。这一系列的操作中,最重要的是病毒与系统软件挂起钩来,只要系统不瘫痪,系统每执行一次操作,病毒就有机会得以运行,去危害那些未曾被感染的程序。病毒程序与正常系统程序,或某种病毒与其它病毒程序,在同一台计算机内争夺系统控制权时往往会造成系统崩溃,导致计算机瘫痪。反病毒技术也就是要提前取得计算机系统的控制权,识别出计算机病毒的代码和行为,阻止其取得系统控制权。反病毒技术的优劣就是体现在这一点上。一个好的抗病毒系统应该不仅能可靠地识别出已知计算机病毒的代码,阻止其运行或旁路掉其对系统的控制权(实现安全带毒运行被感染程序),还应该识别出未知计算机病毒在系统内的行为,阻止其传染和破坏系统的行动。而低性能的抗病毒系统只能完成对抗已知病毒的任务,对未知病毒则束手无策,任其在系统内扩散与破坏。所谓未知病毒是指新出现的,以前未曾分析过的计算机病毒。在1992年初,DIRⅡ病毒对我国广大PC机用户来说就是一种未知病毒。与未曾相识的敌手对阵不是件容易的事。DIRⅡ病毒采用嵌入DOS系统的设备驱动程序链的方法攻击IBMPC及其兼容机,是一种与以往病毒工作机制不同的新型计算机病毒。由于其夺取PC机系统控制权的方法很特别,在它的攻势下,大批抗病毒系统败下阵来。从这个例子可以看到,对付计算机病毒,目前尚无完满通用的解决方案,反病毒技术需要不断发展,以对抗各种新病毒。
不经过程序代码分析或计算机病毒代码扫描,病毒程序与正常程序是不容易区别开来的。在没有防护措施的情况下,计算机病毒程序经运行取得系统控制权后,可以在不到1秒钟的时间里传染几百个程序,而且在屏幕上没有任何异常显示。传染操作完成后,计算机系统仍能运行,被感染的程序仍能执行,好像不曾在计算机内发生过什么。这种现象就是计算机病毒传染的隐蔽性。正是由于这隐蔽性,计算机病毒得以在用户没有察觉的情况下游荡于世界上百万台计算机中。让我们设想,如果计算机病毒每当感染一个新的程序时都在屏幕上显示一条信息“我是病毒程序,我要干坏事了”,那么计算机病毒早就被控制住了。确实有些病毒非常“勇于暴露自己”,时不时在屏幕上显示一些图案或信息,或演奏一段乐曲。往往此时那台计算机内已有许多病毒的拷贝了。许多计算机用户对计算机病毒没有任何概念,更不用说心理上的警惕了。他们见到这些新奇的屏幕显示和音响效果,还以为是来自计算机系统,而没有意识到这些病毒正在损害计算机系统,正在制造灾难。如磁盘杀手(DiskKiller)病毒,当它破坏磁盘数据时,屏幕上显示如下信息:“DiskKillerVersion1.00byOgreSoftware,April1,1989.Don'tturnoffthepowerorremovethediskettewhileprocessing.”这两句话中,第一句的含义是:“磁盘杀手1.00版OgreSoftware公司1989年4月1日出版。”第二句的含义是:“在处理过程中请不要关机或取出磁盘。”接着屏幕上显示出“PROCESSING”意思是“正在处理”这时DiskKiller病毒锁定键盘,对磁盘上的数据做加密变换处理。计算机的处理速度是很快的,当你在屏幕上见到上述显示信息时,已经有很多数据被病毒破坏掉了。计算机病毒的第二个隐蔽性在于,被病毒感染的计算机在多数情况下仍能维持其部分功能,不会由于一感染上病毒,整台计算机就不能启动了,或者某个程序一旦被病毒所感染,就被损坏得不能运行了。如果出现这种情况,病毒也就不能流传于世了。计算机病毒设计的精巧之处也在这里。正常程序被计算机病毒感染后,其原有功能基本上不受影响,病毒代码附于其上而得以存活,得以不断地得到运行的机会,去传染出更多的复制体,与正常程序争夺系统的控制权和磁盘空间,不断地破坏系统,导致整个系统的瘫痪。病毒的代码设计得非常精巧而又短小。典型的是Tiny家族。这个家族的病毒都很短小,最小的病毒代码长度只有133字节。一般PC机对DOS文件的存取速度可达每秒100KB以上,所以病毒将这短短的几百字节感染到正常程序之中所花的时间只是转瞬之间,非常不易被察觉。
与隐蔽性相关联的是计算机病毒的潜伏性。潜伏性的第一种表现是指,病毒程序不用专用检测程序是检查不出来的,因此病毒可以静静地躲在磁盘或磁带里呆上几天,甚至几年,一旦时机成熟,得到运行机会,就又要四处繁殖、扩散,继续为害。潜伏性的第二种表现是指,计算机病毒的内部往往有一种触发机制,不满足触发条件时,计算机病毒除了传染外不做什么破坏。触发条件一旦得到满足,有的在屏幕上显示信息、图形或特殊标识,有的则执行破坏系统的操作,如格式化磁盘、删除磁盘文件、对数据文件做加密、封锁键盘以及使系统死锁等。计算机病毒使用的触发条件主要有以下三种。(1)利用计算机内的实时时钟提供的时间作为触发器这种触发条件被许多病毒所采用,触发的时间有的精确到百分之几秒,有的则只区分年份。表11列出了一些病毒触发的时间,可以供防范计算机病毒时参考。(2)利用病毒体内自带的计数器作为触发器计算机病毒利用计数器记录某种事件发生的次数,一旦计数器达到某一设定的值,就执行破坏操作。这些事件可以是计算机开机的次数,可以是病毒程序被运行的次数,还可以是从开机起被运行过的总的程序个数等。(3)利用计算机内执行的某些特定操作作为触发器特定操作可以是用户按下某种特定的键组合,可以是执行格式化命令,也可以是读写磁盘的某些扇区等。表11计算机病毒触发时间一览表被计算机病毒使用的触发条件是多种多样的,而且往往不只是使用上面所述的某一条件,而是使用由多个条件组合起来的触发条件。大多数病毒的组合触发条件是基于时间的,再辅以读、写盘操作,按键操作以及其它条件。如在我国广为流传的小球病毒,每当系统时钟为整点或半点时,系统又正在进行读盘操作,而该盘是未被感染的,等等,一旦这些条件得到满足时,小球病毒的屏幕显示部分便被激活,一个小球弹跳在屏幕上。若显示器是CGA类型的,又正在使用汉字系统,则整个屏幕显示会不停地上下翻滚,使操作根本无法进行。小球病毒的触发条件在各种触发条件中是很典型的,既有时间的条件,又有功能操作的条件,而且条件之间还存在着逻辑“与”和逻辑“或”的关系。利用这种触发条件,计算机病毒不是随时随地表现自己,而是在适当的时机——条件满足时才向你示威,轻则只是在屏幕上显示些信息,重则要销毁数据,弄垮整个系统。计算机病毒的破坏作用是多种多样的。有一种分类方法是将病毒分为恶性病毒和良性病毒。恶性病毒就是指在其代码中包含有损伤和破坏计算机系统的操作,在其传染或发作时会对系统产生直接的破坏作用。这类病毒是很多的,如米开朗琪罗病毒。当米氏病毒发作时,硬盘的前17个扇区将被彻底破坏,使整个硬盘上的数据无法被恢复,造成的损失是无法挽回的。有的病毒还会对硬盘做格式化等破坏。这些操作代码都是刻意编写进病毒的,这是其本性之一。因此这类恶性病毒是很危险的,应当注意防范。所幸防病毒系统可以通过监控系统内的这类异常动作识别出计算机病毒的存在与否,或至少发出警报提醒用户注意。良性病毒是指其不包含有立即对计算机系统产生直接破坏作用的代码。这类病毒为了表现其存在,只是不停地进行扩散,从一台计算机传染到另一台,并不破坏计算机内的数据。有些人对这类计算机病毒的传染不以为然,认为这只是恶作剧,没什么关系。其实良性、恶性都是相对而言的。良性病毒取得系统控制权后,会导致整个系统运行效率降低,系统可用内存总数减少,使某些应用程序不能运行。它还与操作系统和应用程序争抢CPU的控制权,时时导致整个系统死锁,给正常操作带来麻烦。有时系统内还会出现几种病毒交叉感染的现象,一个文件不停地反复被几种病毒所感染。例如原来只有10KB的文件变成约90KB,就是被几种病毒反复感染了数十次。这不仅消耗掉大量宝贵的磁盘存储空间,而且整个计算机系统也由于多种病毒寄生于其中而无法正常工作。因此也不能轻视所谓良性病毒对计算机系统造成的损害。�计算机病毒的实现方法是千差万别的,加上许多病毒采用加密处理技术,使得被感染的程序恢复原形的工作,即杀毒工作很困难。目前还没有通用的、能可靠自动清病毒的方法。很多研究人员在这方面作了很多努力,一些国外商品软件也具有免疫功能(Immunize),但都存在缺陷,不尽如人意。某些病毒对系统的感染所造成的损失是不可挽回的,要修复被感染的文件是不可能的。当被新病毒感染后,要清除这些病毒,不仅需要耗费大量时间和精力去仔细地分析病毒代码,而且还需要对病毒和计算机系统有全面的了解。因此抗计算机病毒工作最重要的就是防御病毒,不让病毒侵入系统。一旦遭到破坏,做修复工作就很麻烦了,甚至是不可能的。
在对抗计算机病毒的斗争中,很重要的一项工作就是计算机病毒的分类与命名。计算机病毒的分类可以有多种方法:按病毒对计算机系统的破坏性划分,有良性病毒和恶性病毒,已如上述。按病毒攻击的机型划分,有苹果机病毒,IBMPC机病毒,小型机病毒等。按危害对象划分,有损害计算机的病毒和损害网络通信的病毒。对于侵害IBMPC机的PC机病毒,也就是本书要着重讨论、要重点对抗的病毒,可以有更科学的分类。进行这种分类的目的,就是要了解病毒的工作机理,针对其特点,采取更加有效的方法,防御和清除计算机病毒。对PC机病毒,比较公认的、科学的划分是将PC机病毒分为引导区型病毒、文件型病毒和混合型病毒(即又侵染引导区又感染文件的病毒)。这种划分方法对于检测、清除和预防病毒工作是有指导意义的,它不仅指明了不同种类病毒各自在PC机内的寄生部位,而且也指明了病毒的攻击对象。因此,可以通过采取相应的措施保护易受病毒攻击的部位,如分区表所在的主引导扇区、DOS引导扇区以及可执行文件等,并进而找到综合、有效的反计算机病毒措施。�与国际上的情况一样,国内常见的PC机病毒中,引导区型比文件型病毒种类少,而混合型的最少。这三种类型的病毒都是既有良性的又有恶性的。常见的文件型病毒有Jerusalem、1575、扬基病毒、648、V2000、1701落叶病毒等。常见的引导区型病毒有大麻、小球、米氏病毒、6.4病毒和香港病毒等。混合型病毒常见的有新世纪病毒、Flip等。一种计算机病毒往往有多个名字。人们在讨论病毒防范时经常要弄清他们正在讨论的是不是同一种病毒。如1701病毒的别名有落叶病毒、落泪病毒、1704病毒、雨点病毒、感冒病毒等。国外又称雨点病毒为Flu病毒和JOJO病毒。香港病毒又称为封锁病毒、不打印病毒、Blockade病毒和端口病毒等。所以由此产生的统计数字有时也带有偏差。目前国际上也尚无统一的规范用以协调和指导这方面的命名工作。美国的抗病毒产品开发商集团AVPD正在各个成员单位间进行计算机病毒的收集、识别、命名以及抗病毒产品开发等协调工作。在没有见到对某种病毒的确切描述以及对它公认的命名时,人们会根据该病毒的工作机理、表现形式、内含的ASCII字符串、病毒程序的代码长度、发作日期或时间、该病毒的发现地、被病毒攻击的机型、病毒中表现模块发出的音响或显示的图形以及该病毒发现者当时能体会到的各种特征来为它命名。前面所列举的1701、香港病毒就都属于这种情况。为某种新出现的计算机病毒命名,目的就是要使人们能快速、准确地辨识出该病毒,以便防范和诊治。因此该命名应能最好地体现出该病毒的特征,使之不容易与其它现存的计算机病毒混淆。
计算机病毒如今已是PC机用户的一大公害,它造成的损失和破坏难以估计。而一些恶作剧者、一些怀有报复心理的程序员、一些蓄意破坏者和一些为了政治目的、经济利益以及军事目的的病毒编制者,仍在制造着各种各样的计算机病毒。有些病毒仅仅是以前某种病毒的变种。某些人通过反汇编等各种手段,对原病毒的内部模块,如表现模块、破坏模块、传染模块等加以修改,使之成为一种基于原病毒又不同于原病毒的新的计算机病毒,这就是计算机病毒的变种。某些病毒变种只是简单地对原种病毒的显示信息加以改动,而对传染模块等重要代码未动分毫。而另外一些变种在修改了一些重要的代码后,病毒以新的机制工作,此时,这种变种已演化为一种新的病毒,已不能被叫做其原型病毒的变种了。生物界里的病毒也几乎以相同的方式在演化着,一种病毒可能会衍生出若干种具有共同基本特征的病毒种系,成为一个病毒家族。而当发生突变时,则会产生出一种新的病毒。对付老病毒及其变种,人们已有成功的经验和药物作为对策,而对于新的尚未接触过的病毒,在未做仔细研究与试验之前,是很难采取合适的对策的。对付计算机病毒,人们也遇到类似的问题。如何准确地捕获用常用软件无法识别出的新病毒,以及分析和研究它的工作机理和特性,是需要专门知识的,不分析它的传染机制,就无法研制出防范和清除病毒的工具软件。
(二)隐蔽性 计算机病毒是一种具有很高编程技巧、短小精悍的可执行程序。它通常粘附在正常程序之中或磁盘引导扇区中,或者磁盘上标为坏簇的扇区中,以及一些空闲概率较大的扇区中,这是它的非法可存储性。病毒想方设法隐藏自身,就是为了防止用户察觉。
(三)传染性 传染性是计算机病毒最重要的特征,是判断一段程序代码是否为计算机病毒的依据。病毒程序一旦侵入计算机系统就开始搜索可以传染的程序或者磁介质,然后通过自我复制迅速传播。由于目前计算机网络日益发达,计算机病毒可以在极短的时间内,通过像 Internet这样的网络传遍世界。
(四)潜伏性 计算机病毒具有依附于其他媒体而寄生的能力,这种媒体我们称之为计算机病毒的宿主。依靠病毒的寄生能力,病毒传染合法的程序和系统后,不立即发作,而是悄悄隐藏起来,然后在用户不察觉的情况下进行传染。这样,病毒的潜伏性越好,它在系统中存在的时间也就越长,病毒传染的范围也越广,其危害性也越大。
(五)表现性或破坏性 无论何种病毒程序一旦侵入系统都会对操作系统的运行造成不同程度的影响。即使不直接产生破坏作用的病毒程序也要占用系统资源(如占用内存空间,占用磁盘存储空间以及系统运行时间等)。而绝大多数病毒程序要显示一些文字或图像,影响系统的正常运行,还有一些病毒程序删除文件,加密磁盘中的数据,甚至摧毁整个系统和数据,使之无法恢复,造成无可挽回的损失。因此,病毒程序的副作用轻者降低系统工作效率,重者导致系统崩溃、数据丢失。病毒程序的表现性或破坏性体现了病毒设计者的真正意图。
(六)可触发性 计算机病毒一般都有一个或者几个触发条件。满足其触发条件或者激活病毒的传染机制,使之进行传染;或者激活病毒的表现部分或破坏部分。触发的实质是一种条件的控制,病毒程序可以依据设计者的要求,在一定条件下实施攻击。这个条件可以是敲入特定字符,使用特定文件,某个特定日期或特定时刻,或者是病毒内置的计数器达到一定次数等。
“计算机病毒”一词最早是由美国计算机病毒研究专家F--Cohen博士提出的。
“病毒”一词是借用生物学中的病毒。通过分析、研究计算机病毒,人们发现它在很多方面与生物病毒有着相似之处。要做反计算机病毒技术的研究,首先应搞清楚计算机病毒的特点和行为机理,为防范和清除计算机病毒提供充实可靠的依据。
再生机制是生物病毒的一个重要特征。通过传染,病毒从一个生物体扩散到另一个生物体。在适宜的条件下,它得到大量繁殖,并进而使被感染的生物体表现出病症甚至死亡。同样地,计算机病毒也会通过各种渠道从已被感染的计算机扩散到未被感染的计算机,在某些情况下造成被感染的计算机工作失常甚至瘫痪。这就是计算机病毒最重要的特征——传染和破坏。与生物病毒不同的是,计算机病毒是一段人为编制的计算机程序代码,这段程序代码一旦进入计算机并得以执行,就与系统中的程序连接在一起,并不断地去传染(或连接、或覆盖)其它未被感染的程序。具有这种特殊功能的程序代码被称为计算机病毒。携带有这种程序代码的计算机程序被称为计算机病毒载体或被感染程序。是否具有传染性是判别一个程序是否为计算机病毒的最重要条件。正常的计算机程序是不会将自身的代码强行连接到其它程序之上的。比如DOS的FORMAT程序决不会将其程序代码连接到别的程序中去。在系统生成过程中有些系统的安装程序会修改相关程序的参数配置,如MSWindows系统。有些程序通过自身的设置功能,按用户要求会修改自己的参数设置,如Borland公司的SideKick。还有些程序出于加密防拷贝或某些其它目的,在运行时动态改变自身的程序代码,如Xcom通信程序。在这几种情况下,那些被修改的程序内部的确发生了变化,但这些变化只局限于各自应用系统的内部,不会发生将自身代码连接到毫不相干的程序之上的情形。计算机病毒的再生机制,即它的传染机制却是使病毒代码强行传染到一切未受到传染的程序之上,迅速地在一台计算机内,甚至在一群计算机之间进行传染、扩散。每一台被感染了计算机病毒的计算机,本身既是一个受害者,又是一个新的计算机病毒的传染源。被感染的计算机往往在一定程度上丧失了正常工作的能力,运行速度降低,功能失常,文件和数据丢失,同时计算机病毒通过各种可能的渠道,如软盘、计算机网络去传染其它的计算机。当你在一台机器上发现了病毒时,往往曾在这台计算机上用过的软盘已感染上了病毒;而与这台机器相邻的其它几台计算机也许早已被该病毒侵染上了。通过数据共享的途径,计算机病毒会非常迅速地蔓延开,若不加控制,就会在短时间内传播到世界各个角落里去。可见反计算机病毒的问题是一个全球范围的问题。在我国发现的首例计算机病毒就是国外称为意大利病毒的小球病毒。在我国首先发现的Traveller病毒随着国际间的交往,也扩散到国外,其大名出现在国外杀病毒软件的病毒黑名单中。与生物病毒不同,所有的计算机病毒都是人为编写的计算机程序代码,是人为制造出来的而不是天生的。这些着意编写的计算机程序代码,其原始形式可以是C语言,可以是BASIC程序,可以是汇编语言程序,也可以是批命令程序,还可以是机器指令程序。其共同特点就是具有传染性和破坏性。
计算机病毒的另一个特点是只有当它在计算机内得以运行时,才具有传染性和破坏性等活性。也就是说计算机CPU的控制权是关键问题。若计算机在正常程序控制下运行,而不运行带病毒的程序,则这台计算机总是可靠的。在这台计算机上可以查看病毒文件的名字,查看计算机病毒的代码,打印病毒的代码,甚至拷贝病毒程序,却都不会感染上病毒。反病毒技术人员整天就是在这样的环境下工作。他们的计算机虽也存有各种计算机病毒的代码,但已置这些病毒于控制之下,计算机不会运行病毒程序,整个系统是安全的。相反,计算机病毒一经在计算机上运行,绝大多数病毒首先要做初始化工作,在内存中找一片安身之处,随后将自身与系统软件挂起钩来,然后再执行原来被感染程序。这一系列的操作中,最重要的是病毒与系统软件挂起钩来,只要系统不瘫痪,系统每执行一次操作,病毒就有机会得以运行,去危害那些未曾被感染的程序。病毒程序与正常系统程序,或某种病毒与其它病毒程序,在同一台计算机内争夺系统控制权时往往会造成系统崩溃,导致计算机瘫痪。反病毒技术也就是要提前取得计算机系统的控制权,识别出计算机病毒的代码和行为,阻止其取得系统控制权。反病毒技术的优劣就是体现在这一点上。一个好的抗病毒系统应该不仅能可靠地识别出已知计算机病毒的代码,阻止其运行或旁路掉其对系统的控制权(实现安全带毒运行被感染程序),还应该识别出未知计算机病毒在系统内的行为,阻止其传染和破坏系统的行动。而低性能的抗病毒系统只能完成对抗已知病毒的任务,对未知病毒则束手无策,任其在系统内扩散与破坏。所谓未知病毒是指新出现的,以前未曾分析过的计算机病毒。在1992年初,DIRⅡ病毒对我国广大PC机用户来说就是一种未知病毒。与未曾相识的敌手对阵不是件容易的事。DIRⅡ病毒采用嵌入DOS系统的设备驱动程序链的方法攻击IBMPC及其兼容机,是一种与以往病毒工作机制不同的新型计算机病毒。由于其夺取PC机系统控制权的方法很特别,在它的攻势下,大批抗病毒系统败下阵来。从这个例子可以看到,对付计算机病毒,目前尚无完满通用的解决方案,反病毒技术需要不断发展,以对抗各种新病毒。
不经过程序代码分析或计算机病毒代码扫描,病毒程序与正常程序是不容易区别开来的。在没有防护措施的情况下,计算机病毒程序经运行取得系统控制权后,可以在不到1秒钟的时间里传染几百个程序,而且在屏幕上没有任何异常显示。传染操作完成后,计算机系统仍能运行,被感染的程序仍能执行,好像不曾在计算机内发生过什么。这种现象就是计算机病毒传染的隐蔽性。正是由于这隐蔽性,计算机病毒得以在用户没有察觉的情况下游荡于世界上百万台计算机中。让我们设想,如果计算机病毒每当感染一个新的程序时都在屏幕上显示一条信息“我是病毒程序,我要干坏事了”,那么计算机病毒早就被控制住了。确实有些病毒非常“勇于暴露自己”,时不时在屏幕上显示一些图案或信息,或演奏一段乐曲。往往此时那台计算机内已有许多病毒的拷贝了。许多计算机用户对计算机病毒没有任何概念,更不用说心理上的警惕了。他们见到这些新奇的屏幕显示和音响效果,还以为是来自计算机系统,而没有意识到这些病毒正在损害计算机系统,正在制造灾难。如磁盘杀手(DiskKiller)病毒,当它破坏磁盘数据时,屏幕上显示如下信息:“DiskKillerVersion1.00byOgreSoftware,April1,1989.Don'tturnoffthepowerorremovethediskettewhileprocessing.”这两句话中,第一句的含义是:“磁盘杀手1.00版OgreSoftware公司1989年4月1日出版。”第二句的含义是:“在处理过程中请不要关机或取出磁盘。”接着屏幕上显示出“PROCESSING”意思是“正在处理”这时DiskKiller病毒锁定键盘,对磁盘上的数据做加密变换处理。计算机的处理速度是很快的,当你在屏幕上见到上述显示信息时,已经有很多数据被病毒破坏掉了。计算机病毒的第二个隐蔽性在于,被病毒感染的计算机在多数情况下仍能维持其部分功能,不会由于一感染上病毒,整台计算机就不能启动了,或者某个程序一旦被病毒所感染,就被损坏得不能运行了。如果出现这种情况,病毒也就不能流传于世了。计算机病毒设计的精巧之处也在这里。正常程序被计算机病毒感染后,其原有功能基本上不受影响,病毒代码附于其上而得以存活,得以不断地得到运行的机会,去传染出更多的复制体,与正常程序争夺系统的控制权和磁盘空间,不断地破坏系统,导致整个系统的瘫痪。病毒的代码设计得非常精巧而又短小。典型的是Tiny家族。这个家族的病毒都很短小,最小的病毒代码长度只有133字节。一般PC机对DOS文件的存取速度可达每秒100KB以上,所以病毒将这短短的几百字节感染到正常程序之中所花的时间只是转瞬之间,非常不易被察觉。
与隐蔽性相关联的是计算机病毒的潜伏性。潜伏性的第一种表现是指,病毒程序不用专用检测程序是检查不出来的,因此病毒可以静静地躲在磁盘或磁带里呆上几天,甚至几年,一旦时机成熟,得到运行机会,就又要四处繁殖、扩散,继续为害。潜伏性的第二种表现是指,计算机病毒的内部往往有一种触发机制,不满足触发条件时,计算机病毒除了传染外不做什么破坏。触发条件一旦得到满足,有的在屏幕上显示信息、图形或特殊标识,有的则执行破坏系统的操作,如格式化磁盘、删除磁盘文件、对数据文件做加密、封锁键盘以及使系统死锁等。计算机病毒使用的触发条件主要有以下三种。(1)利用计算机内的实时时钟提供的时间作为触发器这种触发条件被许多病毒所采用,触发的时间有的精确到百分之几秒,有的则只区分年份。表11列出了一些病毒触发的时间,可以供防范计算机病毒时参考。(2)利用病毒体内自带的计数器作为触发器计算机病毒利用计数器记录某种事件发生的次数,一旦计数器达到某一设定的值,就执行破坏操作。这些事件可以是计算机开机的次数,可以是病毒程序被运行的次数,还可以是从开机起被运行过的总的程序个数等。(3)利用计算机内执行的某些特定操作作为触发器特定操作可以是用户按下某种特定的键组合,可以是执行格式化命令,也可以是读写磁盘的某些扇区等。表11计算机病毒触发时间一览表被计算机病毒使用的触发条件是多种多样的,而且往往不只是使用上面所述的某一条件,而是使用由多个条件组合起来的触发条件。大多数病毒的组合触发条件是基于时间的,再辅以读、写盘操作,按键操作以及其它条件。如在我国广为流传的小球病毒,每当系统时钟为整点或半点时,系统又正在进行读盘操作,而该盘是未被感染的,等等,一旦这些条件得到满足时,小球病毒的屏幕显示部分便被激活,一个小球弹跳在屏幕上。若显示器是CGA类型的,又正在使用汉字系统,则整个屏幕显示会不停地上下翻滚,使操作根本无法进行。小球病毒的触发条件在各种触发条件中是很典型的,既有时间的条件,又有功能操作的条件,而且条件之间还存在着逻辑“与”和逻辑“或”的关系。利用这种触发条件,计算机病毒不是随时随地表现自己,而是在适当的时机——条件满足时才向你示威,轻则只是在屏幕上显示些信息,重则要销毁数据,弄垮整个系统。计算机病毒的破坏作用是多种多样的。有一种分类方法是将病毒分为恶性病毒和良性病毒。恶性病毒就是指在其代码中包含有损伤和破坏计算机系统的操作,在其传染或发作时会对系统产生直接的破坏作用。这类病毒是很多的,如米开朗琪罗病毒。当米氏病毒发作时,硬盘的前17个扇区将被彻底破坏,使整个硬盘上的数据无法被恢复,造成的损失是无法挽回的。有的病毒还会对硬盘做格式化等破坏。这些操作代码都是刻意编写进病毒的,这是其本性之一。因此这类恶性病毒是很危险的,应当注意防范。所幸防病毒系统可以通过监控系统内的这类异常动作识别出计算机病毒的存在与否,或至少发出警报提醒用户注意。良性病毒是指其不包含有立即对计算机系统产生直接破坏作用的代码。这类病毒为了表现其存在,只是不停地进行扩散,从一台计算机传染到另一台,并不破坏计算机内的数据。有些人对这类计算机病毒的传染不以为然,认为这只是恶作剧,没什么关系。其实良性、恶性都是相对而言的。良性病毒取得系统控制权后,会导致整个系统运行效率降低,系统可用内存总数减少,使某些应用程序不能运行。它还与操作系统和应用程序争抢CPU的控制权,时时导致整个系统死锁,给正常操作带来麻烦。有时系统内还会出现几种病毒交叉感染的现象,一个文件不停地反复被几种病毒所感染。例如原来只有10KB的文件变成约90KB,就是被几种病毒反复感染了数十次。这不仅消耗掉大量宝贵的磁盘存储空间,而且整个计算机系统也由于多种病毒寄生于其中而无法正常工作。因此也不能轻视所谓良性病毒对计算机系统造成的损害。�计算机病毒的实现方法是千差万别的,加上许多病毒采用加密处理技术,使得被感染的程序恢复原形的工作,即杀毒工作很困难。目前还没有通用的、能可靠自动清病毒的方法。很多研究人员在这方面作了很多努力,一些国外商品软件也具有免疫功能(Immunize),但都存在缺陷,不尽如人意。某些病毒对系统的感染所造成的损失是不可挽回的,要修复被感染的文件是不可能的。当被新病毒感染后,要清除这些病毒,不仅需要耗费大量时间和精力去仔细地分析病毒代码,而且还需要对病毒和计算机系统有全面的了解。因此抗计算机病毒工作最重要的就是防御病毒,不让病毒侵入系统。一旦遭到破坏,做修复工作就很麻烦了,甚至是不可能的。
在对抗计算机病毒的斗争中,很重要的一项工作就是计算机病毒的分类与命名。计算机病毒的分类可以有多种方法:按病毒对计算机系统的破坏性划分,有良性病毒和恶性病毒,已如上述。按病毒攻击的机型划分,有苹果机病毒,IBMPC机病毒,小型机病毒等。按危害对象划分,有损害计算机的病毒和损害网络通信的病毒。对于侵害IBMPC机的PC机病毒,也就是本书要着重讨论、要重点对抗的病毒,可以有更科学的分类。进行这种分类的目的,就是要了解病毒的工作机理,针对其特点,采取更加有效的方法,防御和清除计算机病毒。对PC机病毒,比较公认的、科学的划分是将PC机病毒分为引导区型病毒、文件型病毒和混合型病毒(即又侵染引导区又感染文件的病毒)。这种划分方法对于检测、清除和预防病毒工作是有指导意义的,它不仅指明了不同种类病毒各自在PC机内的寄生部位,而且也指明了病毒的攻击对象。因此,可以通过采取相应的措施保护易受病毒攻击的部位,如分区表所在的主引导扇区、DOS引导扇区以及可执行文件等,并进而找到综合、有效的反计算机病毒措施。�与国际上的情况一样,国内常见的PC机病毒中,引导区型比文件型病毒种类少,而混合型的最少。这三种类型的病毒都是既有良性的又有恶性的。常见的文件型病毒有Jerusalem、1575、扬基病毒、648、V2000、1701落叶病毒等。常见的引导区型病毒有大麻、小球、米氏病毒、6.4病毒和香港病毒等。混合型病毒常见的有新世纪病毒、Flip等。一种计算机病毒往往有多个名字。人们在讨论病毒防范时经常要弄清他们正在讨论的是不是同一种病毒。如1701病毒的别名有落叶病毒、落泪病毒、1704病毒、雨点病毒、感冒病毒等。国外又称雨点病毒为Flu病毒和JOJO病毒。香港病毒又称为封锁病毒、不打印病毒、Blockade病毒和端口病毒等。所以由此产生的统计数字有时也带有偏差。目前国际上也尚无统一的规范用以协调和指导这方面的命名工作。美国的抗病毒产品开发商集团AVPD正在各个成员单位间进行计算机病毒的收集、识别、命名以及抗病毒产品开发等协调工作。在没有见到对某种病毒的确切描述以及对它公认的命名时,人们会根据该病毒的工作机理、表现形式、内含的ASCII字符串、病毒程序的代码长度、发作日期或时间、该病毒的发现地、被病毒攻击的机型、病毒中表现模块发出的音响或显示的图形以及该病毒发现者当时能体会到的各种特征来为它命名。前面所列举的1701、香港病毒就都属于这种情况。为某种新出现的计算机病毒命名,目的就是要使人们能快速、准确地辨识出该病毒,以便防范和诊治。因此该命名应能最好地体现出该病毒的特征,使之不容易与其它现存的计算机病毒混淆。
计算机病毒如今已是PC机用户的一大公害,它造成的损失和破坏难以估计。而一些恶作剧者、一些怀有报复心理的程序员、一些蓄意破坏者和一些为了政治目的、经济利益以及军事目的的病毒编制者,仍在制造着各种各样的计算机病毒。有些病毒仅仅是以前某种病毒的变种。某些人通过反汇编等各种手段,对原病毒的内部模块,如表现模块、破坏模块、传染模块等加以修改,使之成为一种基于原病毒又不同于原病毒的新的计算机病毒,这就是计算机病毒的变种。某些病毒变种只是简单地对原种病毒的显示信息加以改动,而对传染模块等重要代码未动分毫。而另外一些变种在修改了一些重要的代码后,病毒以新的机制工作,此时,这种变种已演化为一种新的病毒,已不能被叫做其原型病毒的变种了。生物界里的病毒也几乎以相同的方式在演化着,一种病毒可能会衍生出若干种具有共同基本特征的病毒种系,成为一个病毒家族。而当发生突变时,则会产生出一种新的病毒。对付老病毒及其变种,人们已有成功的经验和药物作为对策,而对于新的尚未接触过的病毒,在未做仔细研究与试验之前,是很难采取合适的对策的。对付计算机病毒,人们也遇到类似的问题。如何准确地捕获用常用软件无法识别出的新病毒,以及分析和研究它的工作机理和特性,是需要专门知识的,不分析它的传染机制,就无法研制出防范和清除病毒的工具软件。
温馨提示:答案为网友推荐,仅供参考