运用生物学上的比拟有助于人们认识计算机病毒的许多方面,并可以启发他们设计出预防计算机病毒的措施。
计算机病毒已经广泛渗透到通俗文化中,它在这方面所取得的成功至少不亚于它对于世界各地的计算机的大举入侵。利用人们对“Frankenstein”一书中Mary Shelley放出的人造生物所怀有的那种可怕的好奇心,计算机病毒已成为到处流传的城市传说和诈骗事件以及通俗电视节目和电影中的主题。然而科学界还没有对计算机病毒进行多少深入研究。
计算机病毒的广泛流行,在很大程度上应归因于它们与生物之间的一种明显而深刻的相似性:计算机病毒通过附着到一个宿主上(此宿主不是生物细胞而是程序或计算机)并利用宿主的资源来作出自己的拷贝而复制自己。它们产生的症状多种多样,轻则令人不快,重则致命。计算机病毒可以从一个程序传播到另一个程序,从一台计算机传播到另一台计算机,就像生物病毒在个体内和一个社会的各成员之问传播一样。还有其它型式的计算机病原体,例如“蠕虫”和“特洛伊木马”,前者不时地感染网络,而后者则使有害的程序伪装出一副易使人上当的友善面孔。不过,病毒是最常见的计算机灾祸。
我们及我们在IBM公司Thomas J. Watson研究中心的同事发现,生物学的类比有助于我们理解计算机病毒是如何在全球范围上扩散的,并能启发我们研究出防御计算机病毒的措施。利用数学传染病学家数十年的研究成果,我们已在一定程度上认识了支配病毒的传播速度的各种因素。我们寻找有效的病毒检测方法及其相互关系的研究工作在很大程度上应归功于计算机生物学家开发的模式匹配技术。此外,我们也从脊椎动物免疫系统及其非凡的排斥或破坏致病体的能力中获得启发,有助于我们研究防御致病软件的方法。
计算机病毒的渊源可以追溯到John Von Neumann在四十年代对自我复制的数学自动机的研究。虽然早在七十年代就有人提出了程序可能感染计算机的设想,但计算机病毒“在野外”扩散的第一个有案可稽的事例在1987年10月才出现,当时名为“大脑”(Brain)病毒的一段代码出现在特拉华大学的数十张软盘上。现在病毒每年感染至少1百万台计算机.计算机用户每年要花数亿美元来购买抗病毒产品与服务,而且这一数字还在迅速地增加。
大多数病毒都以个人计算机(PC)为攻击目标。至今为止已出现了一万种以上的病毒,而粗心大意的编程人员每天又制造出大约6种新病毒。幸运的是,只检测出少数病毒已传播得相当远。
个人计算机病毒可分为三大类(其它计算机系统的病毒类型也与之相似):文件感染病毒(file infector)、引导区段病毒(boot sector virus)以及宏病毒(macro virus)。在所有各种已知的病毒中,大约85的病毒是感染存储有应用程序(例如表格软件或电脑游戏)的文件。当用户运行一个受感染的应用程序时,病毒代码就首先执行,并独立地使自己装入计算机的存储器中,使其能够把自己拷贝到用户随后运行的应用程序上.一旦在存储器中站稳脚跟,病毒就把控制权交回给受感染的应用程序,而用户还一直蒙在鼓里,不知道病毒已溜进了自己的计算机。最终一个受感染的程序将通过共用软盘或通过网络进入另一台计算机,于是整个感染过程又从头开始。
引导区段病毒约占已知的个人计算机病毒种数的5%,这类病毒潜伏在软盘或硬盘的一个特殊部位中,当一台计算机首次启动时此部分被读人存储器中并被执行。这个引导区段通常含有装入计算机操作系统的其余部分所需的程序代码——因此它得了“引导”(boot)这个名称,含有“自举”的意味(“拉着自己的鞋帮把自己举起来”)。一旦装入后,引导区段病毒就能够感染放在驱动器中的任何软盘.这种病毒也感染硬盘,因此它将在系统重新启动时被装入存储器.引导区段病毒的效能非常高:虽然它的种类比文件感染病毒少,但其流行范围却一度比后者广泛得多.
第三类病毒——宏病毒——是独立于操作系统的,它感染的对象是通常被视为数据而非程序的文件.许多表格软件、数据库和字处理程序都能处理嵌在一个文件中的“原本”(script),即规定的操作序列。这些原本(也就是宏指令)的作用是使各种各样的操作实现自动化,从键人长的单词到执行复杂的计算过程。而病毒炮制者们已经编制出了能够把其自身的拷贝插入其它文件中的原本。宏病毒可以非常迅速地传播,其扩散速度远远超过了其它类型的病毒,因为许多人不受限制地共用数据——试想想几位研究人员交换一份合作撰写的报告的草稿这种情况。在野外观察到的第一种宏病毒名为“概念”(concept),它于1995年后期感染了其第一个Microsoft Word文件,如今它已成了世界上流行最广泛的病毒。现在已知的宏病毒超过了1千种。
除了基本的复制代码外,病毒也可以包含其炮制者选中的其它任何代码。有的病毒有效成分可能只是打印出一段信息或显示一个图象,但其它的病毒有效成分则会破坏程序和数据。但是,即使是那些有效成分监没有多大害处的病毒,如果遇到了其配置与病毒炮制者们所预想的不同的系统的话,也可能对这些系统造成损害。例如,一种名为“形式”(Form)的病毒——它通常只是每个月产生一次轻微的“滴嗒”噪声——冲写掉磁盘上的一个目录区段,这对于老式的个人计算机不会造成什么损害,然而对那些以不同方式安排磁盘信息的新式个人计算机来说却是致命的。
抗病毒技术
计算机病毒首次露面之后不久,抗病毒软件就应运而生了。一般的病毒检测程序可以监视一个计算机系统看其是否有类病毒的行为(例如修改某些关键文件或主存储器的某些部分),此外它们能定期检查程序是否有可疑的改动。这类软件甚至还能发现至今尚不知道的病毒,但是它们也容易使人虚惊一场,因为某些正常的活动与病毒的破坏行为十分相似,不易区别开来。
另一方面,扫描程序可以搜寻文件、引导记录和存储器是否有某些能够表明已知病毒存在的特定字节模式。为了跟上形势的发展,这类程序必须在新的病毒一冒出来时就立即更新,但是它们极少发出虚假报警。这些程序识别的病毒特征标记是非常短的:在构成一个完整病毒的数千字节中只占16到30个字节。(类似地,虽然一种病毒蛋白有数千个氨基酸,但生物免疫受体只结合到其中8到15个氨基酸的序列上。)识别一个较小的片段比验证整个病毒的存在更有效,而且许多不同的病毒可能有一种共同的特征标志.大多数计算机病毒扫描程序都使用模式匹配算法,可以同时扫描出许多不同的特征标志:性能最好的程序可以在不到10分钟的时间里检查出1万个程序中的1万种特征标记。
一旦病毒被检测出来,就必须把它除掉。一种有点蛮干但却很有效的方法就是干脆把受感染的程序抹除,就像某些类型的免疫细胞摧毁一个被感染的细胞一样。体细胞通常比较容易更换,但计算机程序和文件却经不起这样的消耗。因此,抗病毒程序一般是竭尽全力修复被感染的文件而不是将其破坏了事。(下面这个事实有助于它们进行这项工作:为了使自己免于被发现韭能够繁殖,计算机病毒必须使宿主程序基本上保持完好无损。)
如果一个针对病毒的扫描程序发现了一个受感染的文件,通常它可以按照其编程人员提供的详细指令来删除病毒代码并重新汇编出文件正本的一个正常拷贝。也有一些一般的抗感染方法能够同样有效地对付已知的和未知的病毒。我们研究出的一种方法是收集系统中每个程序的一个数字指纹。如果一个程序随后受到病毒感染,我们的方法能够重构出文件正本的一个拷贝。
针对病毒的检测和清除方法需要每当发现一种新病毒时对它进行详细的分析。专家们必须识别在病毒代码中出现但在常规程序中却没有的那些不寻常的指令串——这项工作有赖于细心积累起来的知识与直觉。专家们还必须开发出一种方法来验证病毒业把它从受感染的宿主中除掉。现在每天平均有6种新病毒冒出来,为了赶上这一速度,抗病毒技术专家们已开发出自动化工具和过程以协助乃至取代人类病毒专家。
我们开发了一种蛮干的统计方法,可以非常迅速地提取高质量的特征标记。这种方法的第一步是测量一大类合法程序中短字节序列出现的频度。当我们遇到一种新病毒时,我们的软件就找出在统计上最不可能在合法程序中出现的病毒字节序列。这种方法比人工分析快得多,而且测试表明,与专家们选出的特征标记相比,该方法得出的特征标记更不容易产生虚假报警。我们这种抽取特征标记的方法有点类似于过时了的免疫系统“模板”理论,根据该理论,抗体是以某一特定外来人侵物为模板而产生的——我们的特征标记则是专门针对我们遇到的每种新病毒而作出的。
新墨西哥大学的Stephanie Forrest以及她在洛斯阿拉莫斯国家实验室的合作者们开发出一替代方法,它更接近于现在公认的免疫系统“克隆选择”理论。该理论认为,机体产生出种类极多的各种免疫细胞,然后大量制造那些识别出某一病原体的免疫细胞。他们的方法则是随机产生一些代码特征标记,与任何特定的病毒无关。每一种特征标记都对照系统中现有的代码加以核查。如果它与任何代码都不匹配,就把它保留在一个巨大的数据库中。如果在某一程序中找到这些特征标记中的一个,那就可以肯定该程序已经被修改过了,不过还需要进一步的分析才能确定是不是病毒在捣乱。
生物比拟的另一个实例是,病毒搜寻者们已经学会了利用下面这个事实:编程人员常常用现有病毒的关键部分制造出新的计算机病毒。这些病毒“基因”使我们能够追溯出计算机病毒的进化史,正像生物学家们确定相关物种的家系树时所用的方法一样。通过处理大量的病毒代码,我们能够自动得出与一个病毒家族的所有不同成员——包括先前不知道的那些病毒变种——相匹配的一套家族特征标记。这一方法使特征标记所需要的存储容量大大降低:一个只有20字节的家族特征标记就可以识别几十种不同的病毒。
我们还开发了一种神经网络技术,通过搜寻若干非常短的模式——每个的长度只有3到5个字节——来识别病毒。这些微小的片段所代表的计算机指令执行的是仅与病毒感染有关的任务。虽然常规软件可能偶尔也有一个这种片段,但是大量出现这种片段几乎可以肯定是病毒存在的标志。抗病毒软件可以非常迅速地检查这类短的序列。更重要的是,由于这些数据模式同病毒的功能直接有关,我们现在可以识别出一大批的各种病毒而无须在以前看到过它们。
追踪野外的病毒
自1990年以来,我们一直在从本公司客户的数十万台个人计算机上收集病毒的统计资料。我们记录了每次事件的地点和日期以及受感染的个人计算机和软盘的数目,还记录了病毒的身份。借助于这些统计资料,我们推断出了有关野外病毒行为的大量情况,包括下面这样一个事实:仅有很少一部分病毒是真正成问题的。所有的已知病毒中仅有5%在我们调查过的那些个人计算机中被观察到,其中又有许多只出现过一次。10种最常见的病毒占了病毒事件总数的三分之一。此外,这些成功病毒的蔓延过程似乎遵循一个共同的模式:一种病毒将在一年左右的时间里扩散开来,在这期间中它的数量大致成线性地增加,直至达到一个平台。此后,它将继续出现在计算机中,但保持在基本稳定的水平上,尽管有时它的数量会减少到几乎灭绝的地步。
为了理解这些特征,我们借鉴了生物流行病学的数学模型。最简单的模型根据几个参数来预测一种疾病的行为——其中最引人注目的是"出生率"和"死亡率",前者是忠病的个体感染其它个体的速率,后者则是患病个体死亡或被治愈的速率。如果这两个速率的比小于某一临界俏,则任何传染很快就会消失。这个比例越大,发生一场流行病的可能性就越大,而且如果不存在免疫力的话,群体在任何时刻将受感染的个体所占的比例也就越大。
我们的观察结果表明,上面这样一种过于简单化的观点是不充分的。按照这一观点,除非出生率与死亡率之比刚好接近临界值,否则一种病毒或者应当完全消亡,或者应当以指数速度扩散开来并达到几乎无所不在的程度。而实际情况却是许多病毒稳定地保持在只感染总的群体中一小部分的水平上。计算机模拟证明了接触的局域性使病毒的初始增长速度放慢,其规律与我们的观察结果是定性相符的。零星的共用减少了病毒流行的可能性,并降低了平台期的高度,但其降低的程度不足以解释数据。
进化在行动中
正如干旱、卫生和迁徒之类的外部因素对生物流行病有强烈的影响一样,计算环境的变化也是病毒感染出现若干不同时期的原因之一。直到1992年,关于发现文件感染病毒和引导区段病毒的报导还是以大致不变(并逐渐上升)的速率出现。随后文件感染病毒的出现率开始急剧下降,而引导区段病毒的出现率则继续上升.从1992年后期到1995年后期。印导区段病毒占据了优势。在有典型的文件感染病毒存在时,Windows很容易失灵,因此受病毒感染的用户迫不得已需要采取某种方式把病毒从他们的系统中灭掉(可能是通过擦除硬盘信息并重新安装所有软件来做到这一点),无论他们是否知道计算机故障迹象系病毒所引起。相反,引导区段病毒则通常与Windows 3.1和平共处,相安无事;在感染有机会兴风作浪之前,病毒不会摧毁其宿主。
现在,另一种新的操作系统Windows 95(视窗95)的广泛应用已使得引导区段病毒的蔓延程度急剧下降。Windows 95将会提醒用户注意引导区段出现的绝大多数变化(包括病毒引起的许多变化),而且绝大多数引导区段病毒在Windows 95下无法传播开来。我们已观察到少数针对Windows 95和其他32位操作系统设计的病毒,但是我们看到的这些病毒不大可能扩散开来。
现住我们处在宏病毒的时代。由于用户交换文件和其它数据档案的次数比交换程序更多,而宏病毒可以潜藏在这些文件和档案中,因此宏病毒的出生率比传统的引导区段病毒和文件感染病毒要高,传播得也更快。高级的电子邮件和文件传递功能现在使用户能够比以前更迅速、更简便地共用文件或程序,从而使这个问题更为严重。宏病毒也是第一种利用了计算机间交互运行这一日益发展的趋势的病毒。例如,DOS文件感染病毒决不可能危及一台Macintosh计算机,但是宏病毒则能够感染任何一台支持一种易受病毒侵袭的应用程序的计算机。Microsoft Word可以在许多不同类型的计算机上运行,这一事实使Concept和其它宏病毒能够越过传统的系统边界而到处蔓延开来。
数字免疫系统
目前病毒主要是通过有意识的人工交换程序而从一台计算机传播到另一台计算机,而人的反应时间通常足以对付它们。一种成功的新病毒通常要花数月乃至数年的功夫才能站稳脚跟。在不远的将来,当全世界通过密如蛛网的网络联成一体后,病毒的传播速度将会快得多。早在1988年,Robert Tappan Morris就放出了一种后来被称为“因特网害虫”(Internet Worm)的病毒,它利用安全措施上的漏洞在不到一天的时问里就侵入了世界各地的数百台计算机。
能够不知不觉地把软件和数据下载到用户的计算机上的新技术(例如使用“Active X”的万维网览器)使这个问题显得更加紧迫。现代的邮件程序已经可以使文本文件或表格软件以电子邮件的附件的形式极为简便地传送。一打开附件,就将使相应的应用程序自动启动,而潜藏在附件中的宏病毒也就可能被执行了。软件代理人被授权发送韭打开带有附件的电子邮件可能很快就将成为家常便饭。由于人不再参与复制过程,病毒就可以自由自在地扩散开来,其扩散速度将比现在的扩散速度快几个数量级。
数学生态系统的这些变化意味着有必要实现对计算机病毒的自动反应,这类反应不受人的反应时间的限制,也不受人解剖分析新病毒的速率的限制.若干家公司正在开发一些新技术,以帮助计算机迅速地、自动地对付新病毒,这些公司中包括IBM公司、Symantec公司以及McAfee合伙公司等。
在IBM公司,我们正在建造一种可以被认为是电脑空间免疫系统的软件.正如脊椎动物的免疫系统在一种新病原侵入机体后几天之内就产生出对付它的免疫细胞一样,计算机免疫系统可在几分钟内就产生出识别并消除新遇到的计算机病毒的方法。这一免疫系统目前正在试验的一种原型是用一个网络把运行IBM公司Anti Virus(抗病毒)软件的个人计算机连接到一台对病毒进行分析的中央计算机上每台个人计算机上都有一个监视程序,它运用各种各样的系统行为、程序的可疑变化或家族特征标记为基础的探索方法来推断病毒是否存在。对于任何被怀疑为感染了病毒的程序,该监视程序作出它的一个拷贝,监通过网络把它发送给病毒分析计算机。
在接收到一个被怀疑为感染了病毒的程序之后,病毒分析计算机就把它发送给另一台相当于“数字培养皿”的计算机。这台测试用计算机上的软件采用种种方法来诱使病毒感染某些专门设计的“媒子”程序,例如执行、写入、复制媒子程序或以其它方式改动它们。为了能成功地复制,病毒必须感染经常使用的程序,这样媒子程序的活动就诱使病毒代码从其隐身之处暴露出来.在这一阶段中可以推断出病毒的其它种种行为特征.
然后就可以由免疫系统的其它组成部分对已经感染了病毒的媒子程序进行分析,从中提取病毒的特征标记监得出确认和消除病毒的方法.通常,病毒分析计算机只需要不到5分钟的时间便可以根据受病毒感染的程序得出这些方法。然后病毒分析计算机把此信息发送回受感染的用户个人计算机,这台计算机把该项信息存人一个专门存储对付已知病毒的方法的永久性数据库中。接着这台个人计算机就去寻找蓝消除此病毒造成的所有感染事例,并且具备了永久性的抵御此病毒入侵的能力.
如果这台个人计算机通过局域网与其它计算机相连接,那么病毒就很有可能也侵入了其它某些计算机.在我们的原型免疫系统中,新的抗病毒方法被自动地发送到局域网上的相邻计算机上,每台计算机都立即开始检查自己是否有问题。由于计算机病毒可以利用网络来迅速地繁殖,因此,看来理所当然的是抗病毒软件也应当利用类似的策略来迅速扩散到需要这种软件的计算机上.把最新的抗病毒方法很快散发到未受病毒感染的网点上的用户手中,原则上就能够使整个个人计算机世界极其迅速地接受免疫以抵御一种正在出现的计算机病毒的入侵。
道高一尺,魔高一丈。不论抗病毒技术发展到如何精巧复杂的地步,计算机病毒将永远扭住我们和我们的计算机不放,令我们感到头疼。每种病毒将经历自己的由繁荣兴盛到消亡灭绝的过程,但作为一个整体,计算机病毒与抗病毒技术将共同进化下去,正象生物学上的寄生体与宿主的共同进化一样。病毒和抗病毒技术也将随着计算机环境的变化——例如到处巡游的软件代理人的出现——而进化。(软件代理人必须山它们所巡游的计算机系统保护它们免遭病毒之害,正如这些系统保护它们自己不受恶意代理人的危害一样。)或许计算机病毒和计算机免疫系统只是一个最终不可避免的、丰商多彩韵生态系统的先驱者,这个生态系统中的各种人造生物将在电脑空问中生存、消亡、合作监互相捕食。
图1现有的计算机病毒超过了一万种,其中有几百种已成功地扩散开来.本页和前一页上所示的屏幕图象与“乍得”,“行走者”和“营救”这几种花哨但并不成功的病毒有关。
图5本图示出了计划中的电脑空间的数字免疫系统的工作原理。一种未知的病刺激一台用户计算机向管理计算机发送出一个程序样本(1),管理计算机把该样本加密后又发送到一台中央病毒分析计算机上(2).这台计算机通过一个“培养皿装置”复制病毒监分析它的行为和结构(3).这样得出的对付病毒的方法又送回管理计算机(4),后者先把它发送给受病毒感染的客户(5),再发送给局域网上的其它计算机(6)。世界各地的用户,都将收到定期发送的抗病毒软件最新的版本,保护它们免受新病毒入侵之害(7)。
请 登录 发表评论