主动防御电脑病毒并非天方夜谭
近日,反病毒领域展开的反病毒产业发展趋势大讨论引起了各方关注。一方面,杀毒软件厂商承认当前反病毒技术落后于病毒是不争的事实,另一方面,又用病后就医的逻辑解释传统的滞后杀毒方法。那么,主动防御新病毒的道路究竟是否可行?反病毒领域能否实现重大突破?
长期以来,人们把杀毒软件作为最主要的反病毒工具,杀毒软件几乎成了所有反病毒产品的代名词,杀毒软件赖以生存的“特征值扫描技术”也几乎成了所有反病毒技术的代名词。正因如此,杀毒软件对新病毒的防范始终滞后于病毒出现的重大缺陷,似乎成为既合情又合理的逻辑,导致人们普遍认为反病毒产品不可能主动防御新病毒,甚至有人认为,想研制一种主动防御的反病毒产品,就如同要为一种未知的疾病制作特效药一样异想天开。
焦点一:人能否发现新病毒
杀毒软件本身基本上不能发现新病毒,是众所周知的客观事实。但是,如果人不能发现新病毒,同为自然人的反病毒公司研发人员也就不可能发现新病毒,由此带来的问题是,杀毒软件每天升级的是什么,反病毒公司每次宣称发现的新病毒又是谁来发现的?回答是肯定的,人可以发现新病毒。新病毒一定是人通过相应的方法判断出来的。
焦点二:人如何判断新病毒
从上个世纪八十年代病毒出现后,反病毒技术就有两种思路,一种是采用静态扫描方式,即特征值扫描技术,另一种采用动态分析方法。特征值扫描是目前国际上反病毒公司普遍采用的查毒技术。其核心是从病毒体中提取病毒特征值构成病毒特征库,杀毒软件将用户计算机中的文件或程序等目标,与病毒特征库中的特征值逐一比对,判断该目标是否被病毒感染。反病毒公司把捕获到并已处理的病毒称为已知病毒,否则就称为未知病毒。只有采用特征值扫描技术时,才区分已知和未知病毒。
业界常常有人用人类病毒的医治来解释计算机病毒防范。然而,与生物界的病毒复杂性不同,计算机病毒是人编写的,远比生物界的病毒简单。计算机病毒概念是人依据程序行为来定义的,因此识别病毒的另一种方法是采用动态分析,直接通过程序的行为判断它是否是病毒。
尽管杀毒软件主要采用静态扫描方式,但是反病毒公司发现新病毒并不是采用静态扫描方式,而恰恰是采用动态分析方法。即便是反病毒公司收集到可疑程序时,也不能确定是不是新病毒,为了做出准确判断,必须先运行可疑程序,然后再根据程序的行为判断是否是病毒。
焦点三:识别新病毒有多难
反病毒领域从未向业界公开过一个“秘密”——虽然病毒越来越多,但真正有创意的、技术上有突破的病毒很少,不到总数的1%。而且这类病毒通常是概念病毒,一般破坏性不大。绝大多数病毒都是模仿其他病毒编写的,这些病毒的传播、感染、加载、破坏等行为特点都可以从已经存在的病毒找到,一个计算机本科毕业生经过短期培训,通常都可胜任人工识别这类新病毒的工作。因此人工识别绝大多数新病毒,并不是一件很难的事。
焦点四:病毒主动防御是否可行
在反思国际国内反病毒领域的思维模式的基础上,笔者认为,将现有病毒的行为进行分析、归纳、总结,通过对反病毒专家分析判断新病毒的经验科学提炼,实现软件自动识别病毒是可行的。
例如,我们定义这样一条病毒判断规则:如果MSN接收的某个文件运行后,模拟键盘或鼠标动作,自动点击MSN的“发送文件”命令,把它或它的生成物自动发送给其他MSN联系人,则这个文件就是MSN蠕虫病毒。
此规则可用于发现“性感烧鸡”MSN蠕虫病毒,以及所有采用这种传播方式的MSN蠕虫病毒,而不论该病毒是什么时候编的,也不论是已知的还是未知的。
十多年来,反病毒技术的研究主要禁锢于特征值扫描法,很少对病毒主动防御技术进行深入的探讨和研究。从反病毒领域的实践和计算机技术的发展趋势可以看出,开发病毒主动防御系统不仅是可能的,而且是可行的。因此,跳出传统技术路线,尽快研制以行为自动监控、行为自动分析、行为自动诊断为新思路的主动防御型产品,从根本上克服现有杀毒软件的重大缺陷,建立主动防御为主、结合现有反病毒技术的综合防范体系,实现反病毒技术的革命性飞跃和反病毒产业的升级,是全球反病毒领域共同面临的巨大挑战,具有极现实的信息安全急迫性。