“技术宅”们为什么要鼓捣出计算机病毒?

大计算机和小恶作剧

早在电子计算机发明以前,“计算机之父”约翰·冯·诺依曼(John Von Neumann)就在一篇名为《复杂自动装置理论及组识的进行》的论文里提出了可自我复制程序的概念,可以说,创造病毒的条件之一这时在理论上已经具备了。

但是实际情况有些滞后,一直到1974年以前,计算机大都是些巨大、昂贵而笨重的设备,只有大公司、大学、研究机构能买得起。这些计算机的速度慢得可怕,指令复杂得惊人,只有少数人能够掌握。

在20世纪60年代初,美国贝尔实验室,3个年轻人维克多·A·维索特斯克(Victor A. Vysottsky)、马尔科姆·道格拉斯·迈克尔罗伊(Malcolm Douglas Mcllroy)和罗伯特·H·莫里斯(RobertH. Morris)在设计和开发UNIX操作系统之余,开发了一个叫做“达尔文”(Darwin)的游戏,在一台IBM 7090计算机上运行。

他们这个游戏应用了冯·诺依曼提到的“程序自我复制理论”,获得竞争优势的“个体”可以发展壮大,后来这个程序也被称为“磁芯大战”(Core War)。

和现在的游戏比起来,它的玩法复杂得出奇,每个玩家都要自己撰写程序来和别人争夺地盘,并且争取找到对方的弱点从而消灭对方的程序。他们使用的编程语言“Redcode”同样是老古董。

这个游戏在很长一段时间都不为人知。直到1983年亚历克山大·杜特尼(Alexander Keewatin Dewdney)在《科学美国人》杂志上发表了一篇名为《计算机娱乐》(Computer Recreations)的文章,才把这种游戏介绍给大众。

由于这种游戏只在指定程序下运行,所以它虽然具备自我复制能力,但还不能称为病毒。实际上在杜特尼发表这篇文章的时候,“计算机病毒”这个名词还没有被发明出来。

1983年,弗雷德·科恩(Fred Cohen)正在南加州大学攻读博士学位,他写出了有可自我复制及感染能力的程序,这个程序能够在一个小时内传遍整个电脑系统。科恩的导师艾德勒曼(Len Adleman)将这一类型的程序命名为计算机病毒,这是这个名词第一次出现。

1982年初,黎巴嫩山高中九年级学生理查德·斯克伦塔(Richard Skrenta)在苹果II型计算机上写出了一个叫做“Elk Cloner”的程序,并且把它拷贝到游戏软盘中去。

当写入了该程序的软盘运行时,它就自我复制一份在计算机内存里,一旦有人将一张干净软盘插入计算机并查看文件时,“Elk Cloner”就会自我复制入其中。当第50次启动被感染的软盘时,将会出现斯克伦塔写的一首打油诗。

这个恶作剧的影响超出了斯克伦塔的想象。直到10年后,一个水兵在海湾战争期间还曾遭遇过这个恶作剧。而这时斯克伦塔已经从西北大学毕业好几年了。

“战国时代”的古老病毒

20世纪70年代末到80年代初是计算机的战国时代。20世纪70年代初,英特尔创造性地把计算机的运算器部分全部做在了一个小小的硅芯片上,推出了8008芯片。第二年,他们推出了8080,速度是8008的10倍。

微软公司的创始人比尔·盖茨(Bill Gates)和保罗·艾伦(Paul Gardner Allen)在1975年1月的《大众电子学》杂志封面看到了真正的微型计算机的广告,那是一台由微仪表和自动系统公司(MITS)设计和制造的叫做“牵牛星8800”的家伙,没有屏幕,通过发光二极管的点亮或者熄灭来表示信息。

就是这样一个方盒子促使他们创建了微软公司。而苹果公司要到次年的愚人节才成立,迈克尔·戴尔(Michael Dell)——未来戴尔公司的创始人才10岁,还没开始做他的邮票生意呢。

1980年IBM提出了“兼容机”概念,这一概念给了资金和实力不太雄厚的企业机会,联合起了一大批硬件设计生产商,从而占据了大量的市场份额。微软公司推出了MS-DOS,并且和IBM的个人电脑捆绑销售,很快就流行了起来。

在计算机的存储和运算能力成为可以廉价获得的资源之后,人们开始尝试让计算机的功能更多样化。1986年初在巴基斯坦的拉合尔,巴锡特(Basit Farooq Alvi)和阿贾德(Amjad Farooq Alvi)两兄弟编写了“巴基斯坦”(Pakistan)病毒,也被称为“C-Brain”病毒。

这种病毒在DOS操作系统下运行,会自我复制到磁盘的引导区里,并且把磁盘上一些存储空间标记成不可用,它还会把自己藏在计算机的内存中,从而感染每张在染毒的计算机上使用过的磁盘。

“巴基斯坦”病毒在一年之内就流传到了世界各地,很快衍生出了很多变种。这两兄弟在接受《时代周刊》的采访时说,写出这个病毒的初衷只不过是为了保护自己写出的软件不被盗版而已。

又过了两年,1988年罗伯特·T·莫里斯(Robert Tappan Morris)写出了世界上第一个通过网络传播的病毒。这个莫里斯的父亲就是“达尔文”游戏的3个发明者之一——罗伯特·H·莫里斯。

当时小莫里斯正在康奈尔大学读研究生,他想统计一下当时连接在网络上的计算机的数目,所以就写了一个程序,并且在11月2日从麻省理工学院一台计算机上释放出去。

考虑到网络管理员可能会删除掉程序,从而使统计结果不够准确,所以他设置了一个自认合理的方案:让这个程序以一定的概率自我复制。但是他忘了测试这个功能的危险性。

这个程序开始无休止地复制自身,占据了大量磁盘空间、运算资源以及网络带宽,最终导致计算机死机和网络瘫痪。

这个程序感染了大约6000台计算机,受到影响的则包括5个计算机中心和12个地区结点以及在政府、大学、研究所和企业中的超过25万台计算机,美国国防部成立了计算机应急行动小组来应对这次事件并且减少损失。

据估计,这个程序造成的经济损失在9600万美元左右。人们从这时开始,才意识到病毒能够带来什么样的危害。

这个实验使得小莫里斯被判处1万美元罚款和400小时的社区服务,也给计算机病毒添加了一个全新的分类,叫做“蠕虫病毒”。

新型病毒出现

1989年11月9日柏林墙倒塌,1991年12月25日苏联解体,持续了数十年的“冷战”时代终结了。计算机也开始更多地走进人们的生活。

这个时候,在DOS上传播的病毒也已经经历了好几个阶段了。从最早的引导区病毒开始,逐渐经历DOS可执行阶段、伴随及批次阶段、幽灵阶段和病毒制造机几个阶段。

大概是在1992年,出现了一种叫做“金蝉”(Golden Cicada)的病毒,这是一种崭新的类型:“伴随型病毒”。这种病毒会把原来的文件改名,然后把自己改成文件本来的名字,并且让病毒文件优先运行,再调用用户本来要运行的文件。当用户认为自己在使用一个安全文件的时候,实际运行了病毒。

又过了两年,出现了幽灵病毒。这类新病毒每次感染时都会产生不同的代码,让依据“病毒特征码”查杀的杀毒软件头疼不已。

随后病毒制造机也出现了,其中具有代表性的是“病毒制造实验室”,它能够生成上千万种病毒,每一种的特征码都不同。同时还出现了一些专门研究病毒制造技术的组织,例如澳大利亚的VLAD、西班牙的29A等组织。

1995年8月24日,微软公司发布了划时代的操作系统——Windows 95。人们终于可以不再记忆复杂的命令和参数,只动动鼠标就能完成工作。

这对于普通用户来说它真是一大福音,同时它对病毒制造者也是一大挑战。全世界的病毒制造者都在研究怎样战胜声称“百毒不侵”的Windows 95。

1996年,VLAD的Boza病毒首先做到了这一点。这个病毒每月30号发作,受感染计算机将会显示一段文字说明,告诉用户这是VLAD组织的杰作,并不会造成损失。

逝去的黑客精神

在最开始时,病毒大都是一些计算机爱好者所制造,出发点往往在于对技术的迷恋和好奇。发现别人没有发现的漏洞并加以利用是这一阶段病毒发展的主题。

那些趴在键盘上彻夜不眠的年轻人只关心技术,从来没有想过这种好奇将会造就每年50亿美元的杀毒软件市场。

随着操作系统和应用软件功的强大,代码也越来越复杂,破绽必然会越来越多。这些破绽永远不可能被全部修复,病毒总能找到突破口。

但是对于普通用户来说,使用计算机的过程已经渐渐变成了一场被迫的自卫战。那些沉迷于计算机技术的“黑客”的光荣一去不返,我们谈到病毒时再也不会赞叹制造者的聪明才智。


(作者:猛犸)