关于第一个计算机病毒的产生时间有着许多许多的说法,我确信在Babbidge机器时代是肯定没有病毒的,但是到Univac 1108和IBM 360/370的时候就已经有了("Pervading Animal" 和 "Christmas Tree"),所以第一个计算机病毒的诞生是在二十世纪70年代初或者二十世纪60年代末,虽然在那时候没有人叫它们病毒。但是,病毒成为一个问题的时候,就出现了解决问题的人——安全专家——和他们的成果:杀毒技术和防病毒产品。
作者简介:刘杰,中国最早系统地从事计算机病毒与网络安全技术研究的专家,曾起草中国安全法规:计算机病毒防治产品评级标准,获公安部科技成果二等奖,现任国家有关部委网络安全顾问、商丘师范大学客座教授,是光华反病毒软件的开发者。
杀毒软件是对付计算机病毒的最有效方法,但是没有杀毒软件能100%的保证系统不被病毒感染。任何宣称存在这种杀毒软件的广告都是虚假的、在法律上说都是无效的。那样的系统是不存在的,因为每种杀毒算法都可能促使产生与之相对立的病毒的算法,随之制造的病毒对于这种特定的杀毒软件可能检测不到(当然:任何杀毒算法都可以开发成一个杀毒软件)。而且,已经证实“在有限理论的基础上不可能存在绝对的防毒”——试验者是Fred Cohen。
从杀毒技术上来讲,当前,最流行的杀毒软件都是一个扫描器,扫描的算法有多种,通常为了使杀毒软件功能更强大,会结合使用好几种扫描方法。
1)病毒扫描
病毒扫描是当前最主要的查杀病毒方式,它主要通过检查文件、扇区和系统内存、搜索新病毒,用“标记”查找已知病毒,病毒标记就是病毒常用代码的特征,病毒除了用这些标记,也用别的方法。有的根据算法来判断文件是否被某种病毒感染,一些杀毒软件也用它来检测变形病毒。
病毒扫描从杀毒方式上可以分成两种——“通用”和“专用”。“通用”扫描被设计成不依赖操作系统,可以查各种病毒;而“专用”扫描则被设计用来专查某种病毒,如宏病毒,可以使某些应用软件的病毒防护更加可靠。
病毒扫描也可按照用户操作方式分成实时扫描和请求式扫描,实时扫描能提供更好的系统病毒防护,因为如果有病毒出现,能够立即发现,请求式扫描只在运行时才能检测到病毒。
2)启发式扫描
启发式扫描是通过分析指令出现的顺序,或组合情况来决定文件是否感染,每个对象都要检查,这种方式查毒效果是最高的,但也最可能出现误报。
3)CRC 扫描
CRC扫描的原理是计算磁盘中的实际文件或系统扇区的CRC值(检验和),这些CRC值被杀毒软件保存到它自己的数据库中,在运行杀毒软件时,用备份的CRC值与当前计算的值比较,可以知道文件是否已经修改或被病毒感染。
使用这种算法的CRC扫描是强有力的反病毒工具:100%的病毒都能在进入计算机时被检查出来。但这种杀毒方式天生就有一个缺点——效率很低。CRC扫描在病毒已经渗透到计算机之后,并不能很快的检测到,只有过一段时间病毒开始传播时才会发现,而且不能检测新文件中的病毒(例如邮件、软件文件、备份恢复的文件或解压文件),因为在它的数据库中没有这些文件的CRC值。此外,有的病毒也会利用CRC扫描的这种“弱点”,只在扫描之前感染新创建的文件。
各种扫描都有自己的优缺点,拥有一个病毒库是他们的基本特征,但是如果病毒库过大的话,查毒速度会变得很慢。除了以上的杀毒方法外,还有一些常用技术。
1)行为判断
行为判断就是通过驻留的杀毒软件截获那些对用户有病毒危险的行为,这些病毒可能会在修改可执行文件、引导扇区或MBR时被发现,这种方法的优点在于可以在病毒感染的早期发现并阻止,但有的病毒可以越过这种保护,使得杀毒软件完全失效。
2)病毒免疫
免疫有两种:一种是感染警告,另一种是阻止病毒感染。第一种免疫方式主要是预防那些把自己添加到文件末尾的病毒(通常是文件型病毒),每个文件都会检查。但有一个致命的弱点:无法检测到诡密病毒,所以实际上很少用这种免疫方式。
第二种免疫方式主要是预防系统被某种特定病毒感染,如果文件被病毒修改就可以检测到(例如文件中存在字符串“MsDos”,说明文件可能被“Jerusalem”病毒感染),如果病毒把一个小的TSR程序拷贝到计算机内存中,系统肯定被感染。
由于不可能对所有的病毒采用免疫,所以这种病毒免疫方式并不通用。
哪种杀毒技术更好?
哪种杀毒技术更好?答案是——都好,只要计算机里没有病毒。但是如果要安装新软件、收邮件、使用Word或Excel电子表,需要根据自身的情况选择几种比较合适的杀毒软件。
各种杀毒软件的特点都会有一些不同,它们的质量我想可以肯定,下面说几点相对重要的:可靠性和方便性——杀毒软件会不会经常“挂起”,普通用户使用时是否需要特定的技术知识。
1) 扫描文档、检测各种病毒的性能,能不能修复被感染的文件,扫描引擎能不能及时地更新,处理新病毒的速度。
2) 杀毒软件是否适应各种平台(DOS、Windows、Alpha、Linux等),不仅可以根据用户需要扫描,还要有能实时监控、网络查毒的能力。
3) 查毒速度等其他有用功能。
杀毒软件最重要的是可靠性,虽然没有“绝对的杀毒软件”,但也不能扫描一半文件就挂了,磁盘中剩下的文件还没有扫描完,也没有检测出系统中的病毒;杀毒软件不能要求用户具备特定的知识——许多用户只愿选择杀毒软件弹出简单的[OK]或[Cancel]按钮的消息框,如果杀毒软件经常会询问用户一些复杂的问题,用户肯定不会喜欢这种杀毒软件。
显然,病毒检测能力是第二个重要因素,之所以叫杀毒软件,目的就是检测并清除病毒。任何不能检测到病毒的杀毒软件都是无效的。如果一个杀毒软件不能100%防疫一种变形病毒,那整个系统将会被这种类型的病毒感染,此种杀毒软件只能检测出系统中被感染的部分(99%)文件,剩下的1%被感染文件还是没有查到,这时病毒已经感染计算机了,第二次扫描时,杀毒软件又会留下1%的文件没有扫描,但这次是上次99%中的1%,实际上是1.99%,可以想象最后将是什么样子。
因此病毒检测能力是衡量杀毒软件质量的第二个最重要标准;比支持多平台等其他特点都重要。
当然杀毒软件也不能太敏感,如果经常误报,以致删除了没有感染的文件,用户也会错过真正的病毒警告。
多平台支持也是一个重要的因素,例如"OneHalf"病毒感染Windows95或WindowsNT系统,如果你使用DOS杀毒软件来解密磁盘(这个病毒会加密磁盘扇区),结果会令你很失望:磁盘上的数据可能被毁坏,因为Windows95/NT在扇区加密后不允许杀毒软件直接读/写它的扇区,而用Windows95/NT杀毒软件就能把病毒清除。
对于杀毒软件来说,实时监控能力也是一个相当重要的标准,如果进来的文件和磁盘中有病毒应该能100%的检查到,保证文件服务器的安全(如避免Windows NT遭受宏病毒的攻击,对所有进来的邮件进行扫描)都是必需的。如果杀毒软件在网络管理方面的功能很强,那它的价值也很大。
另一个重要的标准是工作速度。如果全面扫描整个系统需要好几小时才能完成,大多数用户可能不会经常扫描。不同的杀毒软件用不同扫描算法,有的速度快质量好,而有的可能速度慢而且质量也没有那么高,这些要依靠软件开发者的能力。
附加功能作为评价杀毒软件的最后一个标准,因为没有这些功能不会影响整个软件的使用。然而,有的功能对用户来说很方便,做事情会更容易,这样会促使用户经常使用杀毒软件。
杀毒技术发展的趋势
由于Internet的普及,互联网已经成为病毒制作技术扩散、病毒传播的重要途径,病毒开发者之间已经出现了团队合作的趋势,病毒制作技术也在与黑客技术进行融合。他们对现在的病毒对抗技术提出了挑战,因此,病毒防护技术正在发生重大的变化,概括起来说,就是病毒对抗的理论在做从作品对抗到思想对抗的转变,产品形态在从独立软件产品向操作系统的补丁转变。
1)从作品对抗到思想对抗
以前,杀毒软件的理论基础是,首先要发现并确认一个病毒,然后,再进行防范,它的缺点是,对未知病毒的防范能力弱,我们没有有效的办法对付各种病毒的变形,对融合了黑客技术的病毒,不能有效防范。一般是一种新病毒发作后,大家才能开发出查杀该病毒的软件,用户还需要尽快升级自己的防毒软件,因此,可以说以前的方法就好象警察找罪犯,在警察没有看到罪犯犯罪,或得到举报前,即使罪犯犯了罪,警察也没有办法,这是一种病毒制造者与安全专家之间在作品层面的竞赛。而新的理论是基于对大量的病毒的特征、发作过程、传播变化统计的基础上,建立控制策略数学模型,采取分门别类的方法,有效解决应用同种思想开发出的各种病毒,可以极大提高对新病毒的反应时间。由于这种方法是通过抑制病毒设计思想而实现的,因此,这是一种病毒制造者与安全专家之间在整体思想层面的竞赛。
因此,新的杀毒软件不仅仅是依据病毒数据库中的病毒代码对计算机进行扫描,而是对计算机所运行的各种进程、各种操作进行监控,如果发现某个事件或某项操作存在典型的病毒特征,或是对计算机存在危害,那么这些事件或操作就会被阻止,得以更有效地保护计算机不受新型病毒的入侵。
2)从独立产品到操作系统的补丁
杀毒软件作为一个独立的软件产品,已经存在了很久,但是,由于病毒制造者越来越多地利用操作系统的漏洞和黑客技术,因此,与操作系统的紧密结合成为一种必然:一方面,可以帮助操作系统减少漏洞,另一方面,也可以进一步提高运行效率和软件兼容度。从商业角度上来说,安全技术可以融入各种应用系统,减少应用系统自身的安全漏洞,同时,也可以为用户提供更加个性化的安全服务。
科技带来了进步,也带来了计算机病毒,我们与计算机病毒所作的斗争,是一个人、一群人与另一个人、一群人智慧的斗争,因为病毒聪明而有智慧,就像制造病毒的那些人一样,他们发明了新的病毒——我们就不得不小心的对付它;他们发明了一个很高明的病毒——我们还是得更小心的对付它。我们每天坐在计算机前,象个哑巴一样不说话,面对着一个个的病毒妖怪,这样的一个病毒,我们分析需要一天,而编写防病毒算法又得一天,很像活的生物进化历程呢,不是吗?