1.1 计算机病毒的产生与发展
1.1.1 计算机病毒的起源
计算机病毒的来源多种多样,有的是计算机工作人员或业余爱好者纯粹为了寻求开心而制造出来的,有的则是软件公司为保护自己的产品被非法复制而制造的报复性惩罚,还有一种情况就是蓄意破坏,它分为个人行为和政府行为两种。个人行为多为雇员对雇主的报复行为,而政府行为则是有组织的战略战术手段。另外,有的计算机病毒还是为研究或实验而设计的“有用”程序,由于某种原因失去控制扩散出去,从而成为危害四方的计算机病毒。计算机病毒的起源到现在还没有一个确切的说法,下面是其中有代表性的几种。
1. 科学幻想起源说
1977年,美国科普作家托马斯·丁·雷恩推出了轰动一时的《P-1的青春》一书。作者构思了一种能够自我复制,利用信息通道传播的计算机程序,并称之为计算机病毒。这是世界上第一个幻想出来的计算机病毒。人类社会有许多现行的科学技术,都是在先有幻想之后才成为现实的。因此,不能否认这本书的问世对计算机病毒的产生所起的催化作用。
2. 恶作剧起源说
恶作剧者大多是那些对计算机知识和技术均有兴趣的人,并且特别热衷那些别人认为是不可能做成的事情,因为他们认为世上没有做不成的事。这些人或是要显示一下自己在计算机知识方面的天赋,或是要报复一下他人或单位。这其中前者是无恶意的,所编写的计算机病毒也大多不是恶意的,只是和对方开个玩笑,显示一下自己的才能以达到炫耀的目的。后者的出发点则多少有些恶意成分在内,所编写的病毒往往比前者的破坏性要大一些,世界上流行的许多计算机病毒是恶作剧者的产物。
3. 游戏程序起源说
20世纪70年代,计算机在社会上还没有得到广泛的普及应用,美国贝尔实验室的计算机程序员为了娱乐,在自己实验室的计算机上编制吃掉对方程序的程序,看谁先把对方的程序吃光,有人猜测这是世界上第一个计算机病毒。
4. 软件商保护软件起源说
计算机软件是一种知识密集型的高科技产品,由于对软件资源的保护不尽合理,使得许多合法的软件被非法复制,从而使得软件制造商的利益受到了严重的侵害,因此,软件制造商为了处罚那些非法复制者,在软件产品之中加入计算机病毒程序并由一定条件触发并传染。例如,Pakistani Brain计算机病毒在一定程度上就证实了这种说法,该计算机病毒是巴基斯坦的两兄弟为了追踪非法复制其软件的用户而编制的,它只是修改磁盘卷标,把卷标改为Brain以便识别。也正因为如此,当计算机病毒出现之后,有人认为这是由软件制造商为了保护自己的软件不被非法复制所致。
关于计算机病毒起源的原因还有一些其他说法。归纳起来,计算机系统、Internet的脆弱性是产生计算机病毒的根本技术原因之一,计算机科学技术的不断进步和快速普及应用是产生计算机病毒的加速器。人性心态与人的价值和法制的定位是产生计算机病毒的社会基础。基于政治、军事等方面的特殊目的是计算机病毒应用产生质变的催化剂。
1.1.2 计算机病毒发展背景
1. 计算机病毒的祖先:“Core War(磁芯大战)”
早在1949年,距离第一部商用计算机的出现还有好几年时,计算机的先驱者冯·诺依曼在他的一篇论文《复杂自动机组织论》中,提出了计算机程序能够在内存中自我复制,即已把计算机病毒程序的蓝图勾勒出来,但当时,绝大部分的计算机专家都无法想象这种会自我繁殖的程序是可能实现的,只有少数几个科学家默默地研究冯·诺依曼所提出的概念。直到10年之后,在美国电话电报公司(AT&T)的贝尔实验室中,3个年轻程序员在工作之余想出一种电子游戏叫做“Core War(磁芯大战)”。他们是道格拉斯·麦耀莱(H. Douglas McIlroy)、维特·维索斯基(Victor Vysottsky)以及罗伯·莫里斯(Robert T. Morris),当时3人年纪都只有二十多岁。Robert T. Morris就是后来编写了一个Worm,把Internet搞得天翻地覆的Robert T. Morris Jr.的父亲,当时大Morris刚好负责Arpanet网络安全。
Core War的玩法如下:双方各编写一套程序,输入同一台计算机中。这两套程序在计算机内存中运行,它们相互追杀。有时它们会放下一些关卡,有时会停下来修复被对方破坏的指令。当它们被困时,可以自己复制自己,逃离险境。因为它们都在计算机的内存(以前均用Core做内存)游走,因此叫“Core War”。
这个游戏的特点在于双方的程序进入计算机之后,玩游戏的人只能看着屏幕上显示的战况,而不能做任何更改,一直到某一方的程序被另一方的程序完全“吃掉”为止。磁芯大战是个笼统的名称,事实上还可细分成好几种。
McIlroy所写的叫“达尔文”,包含了“物竞天择,适者生存”的意思。它的游戏规则跟以上所描述的最接近,游戏双方用汇编语言(Assembly Language)各写一套程序,叫“有机体(Organism)”。这两个有机体在计算机里争斗不休,直到一方把另一方杀掉而取代之,便算分出了胜负。
在比赛时Morris经常匠心独具,击败对手。另外有个叫“爬行者(Creeper)”的病毒,每一次把它读出时,它便自己复制一个副本。此外,它也会从一台计算机“爬”到另一台有网络的计算机,很快,计算机中原有的资料便被这些爬行者挤掉了。爬行者的唯一生存目的是繁殖。为了对付“爬行者”,有人编写出了“收割者(Reaper)”。它的唯一生存目的便是找到爬行者,把它们毁灭掉。当所有爬行者都被清除掉之后,收割者便执行程序中最后一项指令:“毁灭自己”,然后即从计算机中消失。
2. 计算机病毒的出现
在单机操作时代,每个计算机是互相独立的,如果有某部计算机受到计算机病毒的感染而失去控制,只需把它关掉。但是当计算机网络逐渐成为社会结构的一部分之后,一个会自我复制的计算机病毒程序便很可能带来无穷的祸害了。因此,长久以来,懂得玩“磁芯大战”游戏的计算机工作者都严守一条不成文的规则:不对大众公开这些程序的内容。
这项规则在1983年被打破了。科恩·汤普逊(Ken Thompson)是当年的一个杰出计算机得奖人。在颁奖典礼上,他做了一个演讲,不但公开地证实了计算机病毒的存在,而且还告诉所有听众怎样去写自己的计算机病毒程序。1983年11月3日,弗雷德·科恩(Fred Cohen)博士研制出一种在运行过程中可以复制自身的破坏性程序,伦·艾德勒曼(Len Adleman)将它命名为计算机病毒(Computer Viruses),并在每周一次的计算机安全讨论会上正式提出,8小时后专家们在VAX11/750计算机系统上运行,第一个计算机病毒实验成功,一周后又获准进行5个实验的演示,从而在实验上验证了计算机病毒的存在。
1984年,《科学美国人》月刊(Scientific American)的专栏作家杜特尼(A. K. Dewdney)在五月号写了第一篇讨论“磁芯大战”的文章,并且只要寄上两美金,任何读者都可以收到他所写的有关编写这种程序的要领,并可以在自己家中的计算机上开辟战场。
3. “计算机病毒”一词的正式出现
在1985年3月份的《科学美国人》里,杜特尼再次讨论“Core War”和计算机病毒。在该文章中第一次提到“计算机病毒”这个名称。他说:“意大利的罗勃吐·歇鲁帝(Roberto Cerruti)和马高·莫鲁顾帝(Marco Morocutti)发明了一种破坏软件的方法。他们想用计算机病毒,而不是蠕虫,来使得苹果二号计算机受感染”。歇鲁帝写了一封信给杜特尼,信内说:“马高想写一个像‘计算机病毒’一样的程序,可以从一台苹果计算机传染到另一台苹果计算机,使其受到感染。可是我们没法这样做,直到我想到这个计算机病毒要先使软盘受到感染,而计算机只是媒介。这样,计算机病毒就可以从一张软盘传染到另一软盘了”。从此,计算机病毒就伴随着计算机的发展而发展起来了。
1.1.3 计算机病毒发展历史
自从1987年发现了全世界首例计算机病毒以来,计算机病毒的数量随着技术的发展不断递增,困扰着涉及计算机领域的各个行业,计算机病毒的危害及造成的损失是众所周知的。也许有人会问:“计算机病毒是哪位先生发明的?”这个问题至今无法说清楚,但是有一点可以肯定,即计算机病毒的发源地是科学最发达的美国。
虽然全世界的计算机专家们站在不同立场或不同角度分析了计算机病毒的起因,但也没有能够对此作出最后的定论,只能推测计算机病毒缘于上小节提到的几种情况:一、科幻小说的启发;二、恶作剧的产物;三、计算机游戏的产物;四、软件产权保护的结果。
IT行业普遍认为,从最原始的单机磁盘病毒到现在逐步进入人们视野的手机病毒,计算机病毒主要经历了六个重要的发展阶段。
1. 原始病毒阶段
第一阶段为原始病毒阶段,产生年限一般认为在1986~1989年,由于当时计算机的应用软件少,而且大多是单机运行,因此病毒没有大量流行,种类也很有限,病毒的清除工作相对来说较容易。主要特点是:攻击目标较单一;主要通过截获系统中断向量的方式监视系统的运行状态,并在一定的条件下对目标进行传染;病毒程序不具有自我保护的措施,容易被人们分析和解剖。
随着计算机反病毒技术的提高和反病毒产品的不断涌现,病毒编制者也在不断地总结自己的编程技巧和经验,千方百计地逃避反病毒产品的分析、检测和解毒,从而出现了第二代计算机病毒。
2. 混合型病毒阶段
第二阶段为混合型病毒阶段。其产生的年限在1989~1991年,是计算机病毒由简单发展到复杂的阶段。计算机局域网开始应用与普及,给计算机病毒带来了第一次流行高峰。这一阶段病毒的主要特点为以下几点。
(1)病毒攻击的目标趋于混合型,可以感染多个/种目标。
(2)病毒程序采取隐蔽的方法驻留内存和传染目标。
(3)病毒传染目标后没有明显的特征。
(4)病毒程序采取了自我保护措施,如加密技术、反跟踪技术,制造障碍,增加人们剖析和检测病毒、解毒的难度。
(5)出现了许多病毒的变种,这些变种病毒较原病毒的传染性更隐蔽,破坏性更大。
这一时期出现的病毒不仅在数量上急剧地增加,更重要的是病毒从编制的方式方法,驻留内存,以及对宿主程序的传染方式方法等方面都有了较大的变化。
3. 多态性病毒阶段
第三阶段为多态性病毒阶段。此类病毒的主要特点是,在每次传染目标时,放入宿主程序中的病毒程序大部分都是可变的。因此防病毒软件查杀非常困难。如1994年在国内出现的“幽灵”病毒就属于这种类型。这一阶段病毒技术开始向多维化方向发展。
第三代病毒的产生年限从1992年开始至1995年,此类病毒称为“多态性”病毒或“自我变形”病毒。所谓“多态性”或“自我变形”的含义是指此类病毒在每次传染目标时,放入宿主程序中的病毒程序大部分都是可变的,即同一种病毒的多个样本中,病毒程序的代码绝大多数是不同的。
此类病毒的首创者是Mark Washburn,他是一位反病毒的技术专家,他编写的1260病毒就是一种多态性病毒,该病毒有极强的传染力,被传染的文件被加密,每次传染时都更换加密密钥,而且病毒程序都进行了相当大的改动。他编写此类病毒的目的是为了研究,证明特征代码检测法不是在任何场合下都是有效的。不幸的是,为研究病毒而发明的此种病毒超出了反病毒的技术范围,流入了病毒技术中。
1992年上半年,在保加利亚发现了“黑夜复仇者(Dark Avenger)”病毒的变种“Mutation Dark Avenger”。这是世界上最早发现的多态性的实战病毒,它可用独特的加密算法产生几乎无限数量的不同形态的同一病毒。据悉该病毒编写者还散布一种名为“多态性发生器”的软件工具,利用此工具将普通病毒进行编译即可使之变为多态性病毒。
1992年早期,第一个多台计算机病毒生成器“MtE”开发出来,同时,第一个计算机病毒构造工具集(Virus Construction Sets)—“计算机病毒创建库(Virus Create Library)”开发成功,这类工具的典型代表是“计算机病毒制造机(VCL)”,它可以在瞬间制造出成千上万种不同的计算机病毒,查解时就不能使用传统的特征识别法,需要在宏观上分析指令,解码后查解计算机病毒。变体机就是增加解码复杂程度的指令生成机制。这段时期出现了很多非常复杂的计算机病毒,如“死亡坠落(Night Fall)”、“胡桃钳子(Nutcracker)”等,以及一些很有趣的计算机病毒,如“两性体(Bisexual)”、“RNMS”等。
国内在1994年年底已经发现了多态性病毒——“幽灵”病毒,迫使许多反病毒技术部门开发了相应的检测和消毒产品。
由此可见,第三阶段是病毒的成熟发展阶段。在这一阶段中主要是病毒技术的发展,病毒开始向多维化方向发展,计算机病毒将与其自身运行的时间、空间和宿主程序紧密相关,这无疑将导致计算机病毒检测和消除的困难。
4. 网络病毒阶段
第四阶段为网络病毒阶段。从20世纪90年代中后期开始,随着互联网的发展壮大,依赖互联网络传播的邮件病毒和宏病毒等大量涌现,病毒传播快、隐蔽性强、破坏性大。也就是从这一阶段开始,反病毒产业开始萌芽并逐步形成一个规模宏大的新兴产业。
90年代中后期,随着远程网、远程访问服务的开通,病毒的流行迅速突破地域的限制,通过广域网传播至局域网内,再在局域网内传播扩散。
随着Windows系统的日益普及,利用Windows系统进行工作的计算机病毒开始发展,它们修改(NE,PE)文件,典型的代表是DS.3873,这类计算机病毒的机制更为复杂,它们利用保护模式和API调用接口工作。在Windows环境下的计算机病毒有“博扎(Win95.Boza)”、“触角(Tentacle)”、“AEP”等,随着微软公司操作系统Windows 95、Windows NT和微软公司办公软件Office的流行,计算机病毒制造者不得不面对一个新的环境,他们开始使用一些新的感染和隐藏方法,制造出在新的环境下可以自我复制和传播的计算机病毒,在计算机病毒中增加多态、反跟踪等技术手段。随着Windows Word功能的增强,使用Word宏语言也可以编制计算机病毒,感染Word文件。针对微软公司字处理软件版本6和版本7的宏病毒“分享欢乐(ShareFun)”随后也出现了,这种计算机病毒的特殊之处在于除了通过字处理文档传播之外,还可以通过微软的邮件程序发送自己。
1996年下半年,随着国内Internet的普及和E-mail的使用,夹杂于E-mail内的WORD宏病毒已成为病毒的主流。由于宏病毒编写简单、破坏性强、清除方法繁杂,加上微软公司对DOC文档结构没有公开,给直接基于文档结构清除宏病毒带来了诸多不便。从某种意义上来讲,宏病毒对文档的破坏已经不仅仅属于普通病毒的概念,如果放任宏病毒泛滥,不采取强有力的彻底解决方法,宏病毒对中国的信息产业将会产生不可预测的后果。
这一时期的病毒的最大特点是利用Internet作为其主要传播途径,因而,病毒传播快、隐蔽性强、破坏性大。新型病毒的出现向以行为规则判定病毒的预防产品、以病毒特征为基础的检测产品以及根据计算机病毒传染宿主程序的方法而消除病毒的产品提出了挑战,迫使人们在反病毒的技术和产品上不断进行更新和换代。
随着Internet的发展,各种计算机病毒也开始利用Internet进行传播,一些携带计算机病毒的数据包和邮件越来越多,出现了使用文件传输协议(FTP)进行传播的蠕虫病毒——“本垒打(Homer)”、“mIRC蠕虫”,破坏计算机硬件的“CIH”计算机病毒,远程控制工具“后门(Back Orifice)”,“网络公共汽车(NetBus)”、“阶段(Phase)”等类似的病毒。
随着Internet上Java的普及,利用Java语言进行传播和资料获取的计算机病毒开始出现,典型的代表是JavaSnake病毒。还有一些利用邮件服务器进行传播和破坏的病毒Mail-Bomb。第一个感染Java可执行文件的病毒是“陌生的酿造(Strange Brew)”;名为“兔子(Rabbit)”的病毒则充分利用了Visual Basic脚本语言专门为Internet所设计的一些特性进行传播;“梅丽莎(Melissa)”病毒利用邮件系统大量复制、传播,造成网络阻塞,甚至瘫痪,还会造成泄密。随着微软Windows操作系统逐步.COM化和脚本化,脚本病毒成为这一时期的主流。脚本病毒和传统的病毒、木马程序相结合,给病毒技术带来了一个新的发展高峰,例如“爱虫”就是一种脚本病毒,它通过微软的电子邮件系统进行传播。
5. 主动攻击型病毒
第五阶段为主动攻击型病毒。典型代表为2003年出现的“冲击波”病毒和2004年流行的“震荡波”病毒。21世纪,互联网渗入每一户人家,网络成为人们日常生活和工作的不可缺少的一部分。一个曾经未被人们重视的病毒种类遇到适合的滋生环境而迅速蔓延,这就是蠕虫病毒。蠕虫病毒是一种利用网络服务漏洞而主动攻击的计算机病毒类型。与传统病毒不同,蠕虫不依附在其他文件或媒介上,而是独立存在的病毒程序,利用系统的漏洞通过网络主动传播,可在瞬间传遍全世界。这类病毒利用操作系统的漏洞进行进攻型的扩散,不需要任何媒介和操作,用户只要接入互联网络,就有可能被感染,危害性极大。
6. 即时通信与移动通信病毒阶段
第六阶段为“即时通信与移动通信病毒”阶段。即时通信工具作为应用层通信软件已经成为人们方便又时尚的聊天和工作工具,而几乎所有免费在线即时通信软件都正在承受着新型病毒的轮番攻击。继电子邮件之后,即时通信软件已经成为病毒黑客入侵的新“管道”。袭击即时通信软件的病毒主要分为三类,一类是只以QQ、MSN等即时通信软件为传播渠道的病毒;二类为专门针对即时通信软件,窃取用户的账号、密码的病毒;第三类是不断给用户发消息的骚扰型病毒。
随着移动通信网络的发展以及移动终端功能的不断强大,计算机病毒开始从传统的互联网络走进移动通信网络世界。随着即时通信软件的发展,依赖于即时通信的病毒也越来越多,手机作为即时通信的基本载体也不断地受到攻击。与互联网用户相比,手机用户覆盖面更广、数量更多,因而高性能的手机病毒一旦爆发,其危害和影响比“冲击波”“震荡波”等互联网病毒还要大。
一般认为,手机病毒是以手机等移动通信设备为感染对象,以移动运营商网络为平台,通过发送短信、彩信、电子邮件、浏览网站、下载铃声等方式进行传播,从而导致用户手机关机、死机、SIM卡或芯片损毁、存储资料被删或向外泄露、发送垃圾邮件、拨打未知电话、通话被窃听、订购高额SP(服务提供者)业务等损失的恶意程序。
手机病毒的危害主要有以下几点:恶意扣费、恶意传播、远程语音窃听、个人资料被窃取。据统计80%的手机恶意软件存在至少两种或两种以上恶意行为。其中,恶意扣费是手机恶意软件中最常见的行为,恶意扣费是在用户不知情或未经授权的情况下,恶意软件通过隐藏执行、欺骗用户点击等手段,订购各类移动增值收费业务、或使用手机支付、或直接扣除用户资费,导致用户经济损失。
综上所述,反病毒技术已经成为了计算机安全的一种新兴产业或称反病毒工业。
1.1.4 计算机病毒的演化
计算机病毒的最新发展趋势主要可以归结为以下几点。
1. 计算机病毒在演化
病毒和任何程序都一样,不可能十全十美,所以一些人还在修改以前的病毒,使其功能更完善,病毒在不断地演化,使杀毒软件更难检测。
2. 千奇百怪的病毒出现
现在操作系统很多,因此,病毒也瞄准了不同的平台,不同的应用场景,不同的网络环境等。
3. 病毒的载体也越来越隐蔽
一些新病毒变得越来越隐蔽,新型计算机病毒也越来越多,更多的病毒采用复杂的密码技术,在感染宿主程序时,病毒用随机的算法对病毒程序加密,然后放入宿主程序中,由于随机数算法的结果多达天文数字,放入宿主程序中的病毒程序每次都不相同。同一种病毒,具有多种形态,每一次感染,病毒的面貌都不相同,使检测和杀除病毒非常困难。
4. 病毒攻击的方法随着技术的发展不断进步
随着网络技术的发展和各种应用的扩展,计算机病毒采用不同的手段(包括系统漏洞、软件缺陷、应用模式、程序BUG等)采集各种信息,寻找攻击目标,获得各种信息,形成黑色产业链。
制造病毒和查杀病毒永远是一对矛盾,既然杀毒软件是杀病毒的,那么就有人在搞专门破坏杀病毒软件的病毒,一是可以避过杀病毒软件,二是可以修改杀病毒软件,使其杀毒功能改变。因此,反病毒是一个任重道远的事情,需要不断地采用新技术来保护系统和应用的的安全。