查看: 5670|回复: 56
收起左侧

[已解决] 好杀软,引擎是关键

  [复制链接]
ApplePig
发表于 2010-1-7 11:32:53 | 显示全部楼层 |阅读模式
许多PC用户都在选择杀软上有很多疑惑:XX杀毒软件好么?占用资源高不高?杀毒速度快不快?等等。这些问题虽然出于不同的角度,其实这些问题都可以归结到一个问题上:它的杀毒引擎好不好?
      杀毒软件与病毒之间永远是互相博弈的关系,这种情况已经持续了几十年。随着病毒不断的进化与增多,反病毒产品也变得更加丰富起来。以至于出现了现在群雄割据的局面,而每个杀软厂家之间的区别,就在于其杀毒软件所使用的杀毒引擎上。
      一个好的杀毒引擎,需要具备判断病毒的能力、足够的病毒清理技术和环境恢复技术,否则就成了只能查出病毒而不能清除、或者无法将被病毒破坏的系统环境恢复的鸡肋软件。

      那么让我们先从杀毒引擎的三要素说起

一、程序行为捕获
      每个程序运行时都需要进行各种交互动作,如收发网络数据、响应某个触发事件、文件读写操作等,这些交互都被称为“行为”(Action),而行为周期是可以被跟踪并记录的。而这也是杀毒引擎在查杀病毒时要做的第一步,杀毒引擎需要嵌入操作系统接口,任何操作系统核心程序进程、杀软自身进程除外的其他所有进程都被列入监测范围,一般的杀软品牌所采用的方式是利用HOOK挂钩来实现对每个进程的访问,这种方案通过在系统底层与应用程序之间嵌入一个全局钩子DLL模块达到目的,这种做法的好处是在不开放源码的操作系统层面上是非常容易实现的做法。但他的安全性与稳定性却不能让人放心。
      而一些与操作系统厂商有合作关系的杀软厂家,获得了比其他厂家更高的操作系统特权(以windows系统为例,特权级的划分是从最高的ring0到最低的ring3)。因此这部分厂家就可以采用基于系统最底层核心驱动的方法来达到hook技术无法达到的层面,比如rootkit。这种方法是最安全且最有效的,相对来说是最高级的方法。在过去只有诺顿才具备此特权,然而随着09年卡巴斯基与微软的一系列合作,卡巴斯基的用户也将享受到这种高级的杀毒方法。
      但现阶段很多软件所采用的方法走的是另一条思路。那就是硬件抽象层(HAL)。众所周知,在OS中只有驱动模块才能通过HAL的通讯接口达到系统底层,如今让一些技术人员谈虎变色的rootkit木马也是采用驱动形式来进入系统核心。因此这些杀毒引擎采用了一种“软件驱动”的手法,来实现监测底层的目的。这种方法比HOOK更有效,但随之而来的也出现了一些问题,比如偶尔蓝屏或者出现“程序遇到一个未知错误,即将关闭“的提示。
      通过以上的描述我们了解了,当行为捕获发现一个代码执行后试图将自己写入用户请求执行的程序文件体内、或进行特定的复制动作和添加注册表操作,就会将其怀疑为病毒,移交给查毒过程的第二步进行判断处理。

二、程序行为判断
      在第二阶段,被怀疑为病毒的程序会被杀毒引擎进行分析及判断,而这一阶段也分为两个部分:
      1、基于引擎机制的规则判断
      每个杀毒软件厂商都会预先设定一套病毒行为判断规范,即在一个已定的范围和信任度下,判断相关操作是否为合法。优秀的杀毒引擎可以在第二阶段识别出相当数量的病毒。主要是因为杀毒引擎会内置一部分病毒特征码,就是所谓的“基于特征码的静态扫描技术”,利用这个技术杀毒引擎会在这一阶段尽可能多的查出病毒。很多老PC用户都知道,最早的杀毒软件并没有很大的病毒特征数据库,即便是现今以300万病毒库闻名于世的卡巴斯基,在3年前的病毒库数量也仅有26万。
      但随着现在病毒的数量呈爆炸性增长趋势,如果依然只靠扩展杀毒引擎来解决问题,那么杀毒软件的程序体积必然会过于臃肿而无法保证运行效率,因此杀毒厂商不得不将病毒特征库从杀毒引擎中剥离出来,成为了基于特征码的静态扫描技术的衍生物,病毒特征代码数据库,也就是人们天天都要升级的“病毒库”。
      2、杀毒引擎与病毒库的交互
      病毒特征代码数据库中以特定格式储存了各种病毒的行为标识和静态代码,而杀毒引擎要做的就是将捕获到的程序行为转换为杀毒软件自身可以识别的行为标识和静态代码,然后进入病毒库中查询并等待查询结果,这个步骤是整个杀毒过程中最慢的,但是当今的杀毒软件对大多数病毒的识别都是在这个阶段完成的。因此一个足够庞大的病毒库往往能够弥补杀毒引擎的不足之处,但是前文说到的病毒库体积问题是杀软发展的最大瓶颈,要解决这个问题,只能在核心技术上尽量实现将病毒检测工作在第二步完成,只可惜以现在的技术水平还没有能够实现这个想法的杀毒引擎技术,因此如今的杀毒软件或多或少都依赖着一个几十KB或者十几MB的病毒特征库来维持日常工作,杀毒厂商在杀毒引擎核心未进行关键修改时发布的病毒更新变种其实也就是为了往这个特征数据库中添加最新发现的病毒数据,以达到查杀新病毒的作用(卡巴斯基的启发式杀毒,云计算的应用都起到这个作用)
      然而“基于特征码的静态扫描技术”的最大弱点在于它无法发现和查杀“未知”的病毒,由于它的大部分判断依据来自病毒特征代码数据库,一旦用户被感染了病毒中的“0day”或“后门”,杀毒软件就无能为力,甚至落得个被病毒终结运行的下场,如何判断阻止由病毒发出的关闭指令,而不影响用户正常点击杀毒软件自身提供的“退出”功能,这也是个难题。举个简单的例子:AV终结者曾经成为了许多杀软的噩梦,当时拥有自我保护功能的杀毒软件屈指可数,并且很巧合的都是那些拥有自主研发杀毒引擎的厂家。

三、病毒查杀和系统环境恢复
      当杀毒引擎检测到病毒后,根据情况有两种处理办法:如果发现的是尚未进行感染或破坏行为的病毒,这样的话杀毒引擎只需要删除文件就解决了问题。但是大多数的情况是用户已经被病毒感染破坏后的系统环境。在这种情况下,杀毒引擎必须在使用适当的方式查杀病毒后,根据病毒特征库中记录的病毒行为来智能判断当前系统环境遭受破坏的程度并进行恢复,例如对于受病毒感染的文件,杀毒引擎必须根据一定的算法在文件体内找出病毒代码寄生的部分并给予清除,这个过程必须非常谨慎,否则直接的后果就是导致原文件被破坏,这样的无异于杀鸡取卵。而对于非文件型的木马和恶意程序,由于它们会通过各种方式篡改系统注册表甚至系统文件来达到加载自身之目的,杀毒引擎在清除了这些病毒后能否准确有效的恢复受破坏的系统环境,是杀毒引擎技术能力的体现。再加上病毒隐藏技术已经从最初的简单加载单一启动项,演化到今天的多重启动项、进程互相保护、线程监视、远程注射、可执行文件关联、服务项目加载、驱动形式加载等方式,甚至采用多项结合的方法,使得查杀工作变得十分困难,甚至只要遗漏了一个文件未能清除,病毒便能卷土重来,如何有效准确的判断和修复受损环境,也是衡量杀毒引擎优劣的关键。

      通过上面的叙述,我们明白了杀毒引擎的作用及其重要性。在杀软行业中曾有过5大杀毒引擎之说。虽然现在杀软界人才辈出,杀毒引擎也越来越多,但AVP(也就是现在的卡巴斯基)、Dr.web(大蜘蛛)、诺顿、麦咖啡、熊猫,在技术与产品理念方面依旧领先其他同类产品一筹。其中卡巴斯基因为其严谨的结构与强大的虚拟机+实时监控技术,曾被多家杀软厂商所借鉴(包括一些知名的杀软公司)。由此可见独立开发杀毒引擎并非易事。
      杀毒引擎是反病毒厂商技术是否成熟可靠的标准,也是一款反病毒软件含金量的体现。从上述拥有自主研发的引擎的杀毒厂家所推出的产品中我们可以找到几个共性:引擎架构和杀毒方法更严谨、误杀出现的概率更低,与病毒库交互的能力更强、杀毒的效果和速度更快,行为捕获技术更高级、安全性和稳定性更高。
      因此当我们在遇到杀毒软件产品这道选择题时,杀毒引擎应该成为做出最终决定的重要因素。

      转自“精睿”,谢谢JordanC
秋季里的风
发表于 2010-1-7 11:39:24 | 显示全部楼层
好文章,分析得很透彻。值得阅读。
saga3721
发表于 2010-1-7 11:54:00 | 显示全部楼层
完全的空谈,所推崇的所谓依然的五大引擎的低误杀简直是盲人摸象,其中想找出一个没杀过系统的都难!所谓大家终于能享受到的rootkit扫描其实大家都只恨关不掉……这种假大空的东西少重复一遍对大家都有好处
minchaovip
发表于 2010-1-7 11:58:15 | 显示全部楼层
转帖   不标注有点对不起人家的
嘁。不稀罕~
发表于 2010-1-7 11:59:28 | 显示全部楼层
本帖最后由 嘁。不稀罕~ 于 2010-1-7 12:01 编辑

标题中的论点都有失偏颇,正文中的论述基本就没什么意义了,原帖作者白白码了这么多字,幸苦了。。。

如果病毒库(特征码)脱离引擎(或引擎脱离病毒库)就无法有效检测威胁,那么就不存在孰轻孰重之分。

一个杀软能成功的运行并阻止威胁入侵,是一个“团队(各组件)”合作的结果,缺一不可,都是“关键”。
cc56cc56
发表于 2010-1-7 12:02:37 | 显示全部楼层
没有病毒库和完善的病毒入库程序,再好的引擎,也只像一把没有子弹的好枪~~~
ApplePig
 楼主| 发表于 2010-1-7 12:03:03 | 显示全部楼层
转帖   不标注有点对不起人家的
minchaovip 发表于 2010-1-7 11:58



    有标注,谢谢
easybeing
头像被屏蔽
发表于 2010-1-7 12:19:13 | 显示全部楼层
病毒库也很重要
xlht
发表于 2010-1-7 13:06:39 | 显示全部楼层
我觉得不能孤立地谈某一个组件。
ApplePig
 楼主| 发表于 2010-1-7 13:26:31 | 显示全部楼层
标题中的论点都有失偏颇,正文中的论述基本就没什么意义了,原帖作者白白码了这么多字,幸苦了。。。

如 ...
嘁。不稀罕~ 发表于 2010-1-7 11:59

也许是我描述的确实不太清楚!
我写这篇文章的时候,出发点都是在杀软其他环节水平相同的情况下,杀毒引擎的差距就直接影响杀软表现。
我知道现阶段杀毒软件想要做到仅靠病毒引擎自行只能判断还非常困难,病毒库有着不可忽视的地位。
但是毕竟现在病毒的发展速度太快了,总不可能永远一成不变的以添加病毒库作为杀软的发展方向吧!
毕竟谁也不愿意下个杀毒软件光病毒库就几百MB甚至几个GB。
现在世界上的杀毒引擎已经不是几大杀软引擎可以概括的了。
我只是想说,这五家不论从技术从资历现阶段还都是杀软界的翘楚,能够先一步出现革新厂家的我认为在他们中出现的可能性最大。
毕竟要让一个只发展了一两年的小公司进行技术革新,也许他们有新的想法,但实力不足就会成为最大的绊脚石!
最后关于ROOTKIT的问题,的确现在的rootkit扫描让很多人也包括我十分恼火,动辄几十上百MB的内存占用和很高的CPU占用率实在让人慎得慌!
可是我觉得如果能保证计算机系统的安全,牺牲一些效率还是值得的。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-1 19:39 , Processed in 0.141856 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表