Google
 

2007年4月1日星期日

盘点杀毒软件“过期药”

因为对“病毒”的恐惧,基本上没有人不用着杀毒软件,它是我们维系网络安全的一个重要工具。另一方面,除了专门的从业者,多数一般网民对杀毒软件的了解恐怕也还只是停留在感性层面上或者仅限于在厂家的广告宣传中了解的信息。

随着网络化程度的加深以及国内软件行业环境的成熟,目前我们能经常见到的本土以及洋品牌杀毒软件已经不下十余种。或许是由于存在着巨大的市场潜能,就连一些尚未进入中国市场的品牌也是磨刀霍霍。对于一般网民来说,能够遇到同一种软件能有十多种选择的情况还真是不多见。
水浒梁山的一百零八位好汉中—虽然都是好汉,但是武技其实差异甚殊,至少风格各自大不相同。由于信息的严重不对称,当用户面对林林总总的杀毒软件显得无所适从时,类似“杀毒软件到底哪个好”这样的问题,便总是层出不穷。

虽说“不怕不识货,就怕货比货”,不过如果我们能够在“识货”的基础上再去“比货”,显然就可以得出更为理性的结果。为了便于大家能够迅速获得一个直观的印象,我们就一起对目前反病毒软件所采用的主流技术先做一个横向快速扫描。

一、特征码检测技术

几乎目前所有杀毒软件都是采用以特征码检测为主的病毒检查技术。所谓特征码检查技术,原理并不复杂,就是在每个已经获得并且确定是病毒的文件内提取一段或多段足以表征该病毒文件的字符串,然后把这些字符串在一起就组成了所谓的“病毒库”。而我们之所以强调杀毒软件要升级,就是指升级最新的特征码,这样才能查杀新的病毒。尽管各个杀毒软件厂家提取特征的方式都不太一致,但是基本原理都是肯定大致相仿的。

对于一些“新概念”,比如有些厂家提出的所谓“广谱查杀”,“数据流查毒”等看似新颖的提法,其实也并未超出特征码检测技术的范畴,只是提取的特征不同或者提取方式有些改进罢了。换言之,只要是采用特征码查杀技术的杀毒软件,即便是翻新出了什么叫法,充其量也只是豆腐三碗和三碗豆腐的区别而已,并没有什么本质上的技术突破。

曾几何时,坊间流传过“杀毒软件卖过期药”的说法。这个说法炮轰的就是特征码检测技术。是的,站在反病毒/病毒技术发展的角度来衡量,特征码检测技术的确已经可以说是廉颇老矣,强弩之末。原因在于特征码检测技术是基于已知病毒(即一个已经得到的病毒文件样本)来提取特征查杀,这样就从根本原理上造成了三个最主要的先天不足:是随着新病毒特征的不断加入,杀毒软件病毒库将向着无穷增大的方向发展,这样会带来更多的资源消耗。是不能查杀未知新病毒(即尚未得到病毒文件样本的病毒),也就是说即便厂家升级反应速度再快,特征发布也是在病毒流行之后,因此这在本质上也还是属于被动防御。是不能应对某些病毒新技术,比如“多态技术(Polymorphism)”,采用这种编程技术的病毒每次运行的代码都会不同,因此特征查杀便完全失效。

但是,作为一种目前应用最有效、最成熟、最稳定、最可靠的病毒检测技术,特征查杀技术还是目前反病毒技术的中流砥柱。而且,在反未知病毒技术没有有效突破之前,可以预计传统的特征查杀技术还会存在相当一段时间。

二、未知病毒检测技术

作为对特征查杀技术不足的弥补,或者也可以说是反病毒技术的必然发展方向,一些未知计算机病毒检测技术已经开始相继应用。如果以当前的主流反病毒软件所采用的技术作为统计标准,启发式(Heuristic)查毒和行为监控两大类技术是目前采用较多的两种未知病毒检测和防御方式。
启发式扫描技术,一般又称为虚拟机技术。区别于传统的单纯搜索一个病毒文件体内的特征码,代之以把静态扫描技术和软件动态仿真结合起来。动态仿真就是仿真某种CPU(通常如X86)指令用以“虚拟”执行病毒体,带病毒的程序自然会表现出其固有特征,这样可以比较准确地发现病毒的行为。当然,最重要的是这个模拟的过程仅仅并且必须限定在虚拟执行的范畴,否则就成了真的运行病毒(曾有某设计不完善的反病毒产品发生过此先例)。

启发式技术描述起来并不困难。我们知道病毒的行为与一般正常计算机文件的行为是迥异的,比如对可执行文件进行读写、复制自身、hookAPI、添加自动启动项目这些通常只有病毒文件才会发生的行为正常文件是不会有的。此时把这些可疑行为分别设定一个权值,如文件读写为1,复制自身为2,hookAPI为2,添加自动启动项目为2,那么当发现任意一个文件的权值为7时,我们就可以判定该文件可能是病毒。

由此,牵出了一个“虚拟机”的概念。如上描述,我们知道虚拟机应该可以理解为一个“迷你CPU”,而最近比如国内的安全产品主要厂家瑞星,其07新品也在大张旗鼓地宣传“虚拟机查毒”,并号称是“世界级的杀毒软件”。

作为商业机密,笔者自然无法了解到瑞星虚拟机技术的细节。但从其已发布的资料描述来看,瑞星的虚拟机技术是侧重于“脱壳”解密功能的。如上所述,虚拟机本该是为启发式查毒做准备的,“脱壳”又是怎么回事呢?

为了逃避杀毒软件的特征查杀,目前采取修改特征码以及通过特定加壳软件“改装”病毒在网络上已呈泛滥之势。对于一个病毒,很容易下载到各种加壳软件,然后通过几乎傻瓜的操作方式瞬间就可以得到一个特征码技术不能查杀的“新病毒”。而虚拟机则正好可以还原病毒的加密过程,也即“脱壳”的叫法。这是无疑具有相当积极意义的一个反病毒技术发展。

而行为监控则似乎是成了自06年下半年以来反病毒行业技术的发展指向。其中比较典型的比如卡巴斯基,在其最新发布的6.0系列产品中,已经加入了完整的针对常见可疑操作(如越界访问)或行为(如修改注册表敏感位置)的拦截功能。如果说传统的特征码查杀是一种“被动防御”,那么这种能够拦截系统可疑动作并发出告警的功能已经被冠之以“主动防御”的称号。

显见,主动防御是指能够在病毒(或可疑行为)运行前就拦截并交给用户判断选择是否允许通过,而显然不是类似特征码查杀这种先有病毒后提取特征的被动防御方式—即便你的升级速度再快,升级频率再高,也永远不过是“马后炮”,跟主动防御在性质上是完全不同的两回事。
但是,不论是启发式查毒还是行为监控,以及其他一些本文未提到的已知、未知病毒查杀技术,它们都不可避免的会遇到误报的问题。大家或许已经想到,比如启发式查毒,一些相当多的合法程序在一定情况下也会出现采用一些病毒所用的技术来实现合法目的。

特征查杀业已老迈,未知病毒防御尚不能尽如人意。同时,不能不提到的是病毒技术却依旧似乎走在了反病技术的前面,目前几乎所有杀毒软件对Rootkit的处理能力还很难令人满意。

虽然从一些因素来看,在对“毒”斗争中,杀毒软件的力量似有悲观。但是总体上还是可以完全肯定当今杀毒软件在控制病毒上的作用,而且是值得用户信赖和依靠的。最重要的是,杀毒软件只是工具,维系网络安全的核心还在于使用者的技能和素质。

另外,杀毒软件是一个技术积累特征很明显的领域,不同品牌的杀毒软件之间的技术差别和差距的确很大。借此“博”地,盘点一下当下主流杀毒软件采用的技术,希望能给各位在选择杀毒软件的时候起到一定的“扫盲”作用。

没有评论: