第1章初识计算机病毒这一章将从概念上简要介绍计算机病毒的基本知识以及计算机病毒的命名,通过对这些概念的了解,从而使我们能更方便的阅读有关计算机病毒信息的文档和书籍。1.1计算机病毒基础知识虽然药师我不打算过多的阐述理论概念,但是读者对基本概念还是应该有所了解。毒手药师将简要的介绍一些计算机病毒的相关概念和基本知识。提示本章可能涉及一些计算机系统相关概念,如进程、线程等,这些概念在后面章节中有详细介绍。1.1.1计算机病毒概念自然界中的生物病毒是一类个体微小、无完整细胞结构、含单一核酸(DNA或RNA)、必须在活细胞内寄生并复制的非细胞型微生物。而本书所说的计算机病毒,并非是自然界病毒,而是人为的计算机代码。“计算机病毒”一词最早是由美国计算机病毒研究专家F.Cohen博士提出的。世界上第一例被证实的计算机病毒是在1983年出现在计算机病毒传播的研究报告中。同时有人提出了蠕虫病毒程序的设计思想。1984年,美国人Thompson开发出了针对UNIX操作系统的病毒程序。1988年11月2日晚,美国康尔大学研究生罗特•莫里斯将计算机病毒蠕虫投放到网络中。该病毒程序迅速扩展,造成了大批计算机瘫痪,甚至欧洲联网的计算机也都受到了影响,造成直接经济损失近亿美元。计算机病毒实际是一个程序,一段可执行代码。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随同文件的使用一起蔓延开来。除了复制能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎仅仅表现在文字或图象上时,它们可能已毁坏了文件、再格式化了你的硬盘驱动器或引发了其它类型的灾害。若是病毒并不寄生于一个污染程序,它仍然能通过占据存贮空间给你带来麻烦,并降低你的计算机的全部性能。“计算机病毒”有很多种定义,国外流行的定义是指一段附着在其他程序上的可以实现自我繁殖的程序代码。可以从不同角度给出计算机病毒的定义。一种定义是通过磁盘、磁带和网络等作为媒介传播扩散,能“传染”其他程序的程序。另一种是能够实现自身复制且借助一定的载体存在的具有潜伏性、传染性和破坏性的程序。还有的定义是一种人为制造的程序,它通过不同的途径潜伏或寄生在存储媒体(如磁盘、内存)或程序里。当某种条件或时机成熟时,它会自身复制并传播,使计算机的资源受到不同程度的破坏等等。这些说法在某种意义上借用了生物学病毒的概念,计算机病毒同生物病毒所相似之处是能够侵入计算机系统和网络,危害正常工作的“病原体”。它能够对计算机系统进行各种破坏,同时能够自我复制,具有传染性。所以,计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里,当达到某种条件时即被激活的具有对计算机资源进行破坏作用的一组程序或指令集合。在《中华人民共和国计算机信息系统安全保护条例》中明确定义,病毒是“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。在这里我们要知道计算机病毒也是一个程序,或者是一段可执行的代码。而这个程序或者可执行代码对计算机功能或者数据具有破坏性,并且具有传播、隐蔽、偷窃等特性。1.1.2计算机病毒的特点计算机病毒是人为编写的,具有自我复制能力,是未经用户允许而执行的代码。一般正常的程序是由用户调用,再由系统分配资源,完成用户交给的任务,其目的对用户是可见的、透明的。而计算机病毒具有正常程序的一切特性,它隐藏在正常程序中,当用户调用正常程序时,它窃取到系统的控制权,先于正常程序执行,病毒的动作、目的对用户是未知的并且未经用户允许的。它的主要特征如下:1.破坏性任何病毒只要侵入系统,都会对系统及应用程序产生不同程度的影响。良性病毒可能只显示些画面或发出点音乐、无聊的语句,或者根本没有任何破坏动作,只是会占用系统资源。恶性病毒则有明确的目的,或破坏数据、删除文件或加密磁盘、格式化磁盘,有的甚至对数据造成不可挽回的破坏。凡是由软件手段能触及到计算机资源的地方均可能受到计算机病毒的破坏。其表现:占用CPU时间和内存开销,从而造成进程堵塞;对数据或文件进行破坏;打乱屏幕的显示等。2.隐蔽性病毒一般是具有很高编程技巧、短小精悍的一段程序,通常潜入在正常程序或磁盘中。病毒程序与正常程序不容易被区别开来,在没有防护措施的情况下,计算机病毒程序取得系统控制权后,可以在很短的时间内感染大量程序。而且计算机系统在受到感染后通常仍能正常运行,用户不会感到有任何异常。试想,如果病毒在传染到计算机上之后,机器会马上无法正常运行,那么它本身便无法继续进行传染了。正是由于其隐蔽性,计算机病毒得以在用户没有察觉的情况下扩散到其他计算机中。大部分病毒的代码之所以设计地非常短小,也是为了隐藏。多数病毒一般只有几百或几千字节,而计算机机对文件的存取速度比这要快的多。病毒将这短短的几百字节加入到正常程序之中,使人不易察觉。甚至一些病毒程序大多夹在正常程序之中,很难被发现。3.潜伏性大部分病毒在感染系统之后不会马上发作,它可以长时间隐藏在系统中,只有在满足其特定条件时才启动其表现(破坏)模块。只有这样它才可以进行广泛地传播。如“PETER-2”在每年2月27日会提3个问题,答错后将会把硬盘加密。著名的“黑色星期五”在逢13号的星期五发作。国内的“上海一号”会在每年三、六、九月的13日发作。当然,最令人难忘的便是4月26日发作的CIH病毒。这些病毒在平时会隐藏得很好,只有在发作日才会露出本来面目。4.传染性对于绝大多数计算机病毒来讲,传染是它的一个重要特性。它通过修改别的程序,并把自身的拷贝包括进去,从而达到扩散的目的。正常的计算机程序一般是不会将自身的代码强行连接到其他程序之上的。而病毒却能够使自身的代码强行传染到一切符合其传染条件的未受到传染的程序之上。计算机病毒可以通过各种可能的渠道,如软盘、光盘和计算机网络去传染给其他的计算机。当你在一台机器上发现了病毒时,往往曾经在这台计算机上使用过的软盘也已感染上了病毒,而与这台机器相联网的其他计算机或许也被该病毒感染了。是否具有传染性是判别一段程序是否为计算机病毒的最重要条件。一个被病毒感染的程序能够传送病毒载体,如同感冒,能被传染。当你看到病毒载体似乎仅仅表现在文字和图像上时,它可能也已毁坏了文件、再格式化了你硬盘,删除了驱动或造成了其它各种类型的灾害。若是病毒并不寄生于单独一个被感染的程序,它还能通过占据存储空间给你带来麻烦,并降低你的计算机的全部性能。和生物病毒在传播上相似,所以也就有“计算机病毒”名称的由来。5.不可预见性从对病毒的检测方面来看,病毒还有不可预见性。不同种类的病毒,其代码千差万别,但有些操作是共有的,如驻留内存,改中断。有些人利用病毒的这种共性,制作了声称可以查找所有病毒的程序。这种程序的确可以查出一些新病毒,但由于目前的软件种类极其丰富,而且某些正常程序也使用了类似病毒的操作甚至借鉴了某些病毒的技术。使用这种方法对病毒进行检测势必会产生许多误报。而且病毒的制作技术也在不断的提高,病毒对反病毒软件永远是超前的。1.1.3计算机病毒的产生与发展冯•诺伊曼是20世纪最杰出的数学家之一,在他的一篇论文《复杂自动装置的理论及组织的进行》中,早已勾勒出病毒程序的蓝图。不过,在当时绝大部分的电脑专家都无法想像会有这种能自我繁殖的程序。1975年,美国科普作家约翰•布鲁勒尔(JohnBrunner)写了一本名为《震荡波骑士》(ShockWaveRider)的书,该书第一次描写了在信息社会中,计算机作为正义和邪恶双方斗争的工具的故事,成为当年最佳畅销书之一。1977年,托马斯•捷•瑞安的科幻小说《P-1的春天》成为美国的畅销书,作者在这本书中描写了一种可以在计算机中互相传染的病毒,病毒最后控制了7000台计算机,造成了一场灾难。而几乎在同一时间,美国著名的AT&T贝尔实验室中,3个年轻人在工作之余,很无聊的玩起了一种游戏:彼此编写出能够吃掉别人程序的程序来互相作战。这个叫做“磁芯大战”的游戏,进一步将电脑病毒的概念体现出来。1983年11月3日,弗雷德•科恩博士研制出一种在运行过程中可以复制自身的破坏性程序,伦•艾德勒曼(LenAdleman)将它命名为计算机病毒(computerviruses),并在每周一次的计算机安全讨论会上正式提出,8小时后专家们在VAX11/750计算机系统上运行,第一个病毒实验成功,一周后又获准进行5个实验的演示,从而在实验上验证了计算机病毒的存在。1986年初,在巴基斯坦的拉合尔(Lahore),巴锡特(Basit)和阿姆杰德(Amjad)两兄弟编写了Pakistan病毒,即C-BRAIN,该病毒在一年内流传到了世界各地。由于当地盗拷软件的风气非常盛行,因此他们的目的主要是为了防止他们的软件被任意盗拷。只要有人盗拷他们的软件,C-BRAIN就会发作,将盗拷者的硬盘剩余空间给吃掉。业界认为,这是真正具备完整特征的计算机病毒的始祖。1988年3月2日,一种苹果机的病毒发作,这天受感染的苹果机停止了工作,显示器只显示“向所有苹果电脑的使用者宣布和平的信息”,以庆祝苹果机生日。1988年11月2日,美国6000多台计算机被病毒感染,导致Internet不能正常运行。这是一次非常典型的计算机病毒入侵计算机网络的事件,该事件迫使美国政府立即作出反应,国防部成立了计算机应急行动小组。这次事件中遭受攻击的涉及5个计算机中心和12个地区结点,连接着政府、大学、研究所和拥有政府合同的250000台计算机。在这次病毒事件中,计算机系统直接经济损失达9600万美元。这个病毒程序的设计者罗伯特•莫里斯(RobertT.Morris),当年23岁,是在康乃尔(Cornell)大学攻读学位的研究生。罗伯特•莫里斯设计的病毒程序利用了系统存在的弱点。由于罗伯特•莫里斯成了入侵ARPANET网的最大的电子入侵者,而获准参加康乃尔大学的毕业设计,并获得哈佛大学Aiken中心超级用户的特权。他也因此被判3年缓刑,罚款1万美元,他还被命令进行400小时的新区服务。计算机病毒并不是来源于突发或偶然的原因。一次突发的停电或偶然的错误,会在计算机磁盘和内存中产生一些乱码和随机指令,但这些代码是无序和混乱的。计算机病毒是一种比较完美的,精巧严谨的代码。这些代码按照严格的秩序组织起来,与所在的系统网络环境相适应,病毒不会通过偶然形成,并且需要有一定的长度,这个基本的长度从概率上来讲是不可能通过随机代码产生的。因此实际上计算机病毒是人为的特制程序。现在流行的病毒都是为了达到一定目的而由人为故意编写的。多数病毒可以找到作者信息和产地信息。通过大量的资料分析统计来看,病毒作者主要目的一般是:一些天才的程序员为了表现自己和证明自己的能力,而特制的一些恶作剧程序,从中寻找整蛊的快感。而另一些则为了达到一定目的,如对上司的不满,为了好奇,为了报复,或者为了谋取非法利益而编写具有隐藏,偷窃等行为的病毒。当然也有因政治、军事、宗教、民族、专利等方面需求而专门编写的,其中也包括一些病毒研究机构和黑客的测试病毒。计算机病毒的产生是计算机技术和以计算机为核心的社会信息化进程发展到一定阶段的必然产物。其产生的过程为:程序设计、传播、潜伏、触发、运行、实行攻击。究其产生的原因不外乎以下几种:(1)一些程序设计者出于好奇或兴趣,也有的是为了满足自己的表现欲或者一些搞计算机的人员和业余爱好者的恶作剧、寻开心故意编制出一些特殊的计算机程序。这些程序让别人的计算机出现一些动画,或播放声音,或别的恶作剧,以显示自己的才干。而这种程序流传出去就演变成了计算机病毒,此类病毒破坏性一般不大。例如象圆点一类的良性病毒。(2)软件公司及用户为保护自己的软件被非法复制而采取的报复性惩罚措施。因为他们发现对软件上锁,不如在其中藏有病毒对非法拷贝的打击大。于是就运用加密技术编写一些特殊程序附在正版软件上,如遇到非法使用,则此类程序自动被激活,于是又会