qnqq 发表于 2009-6-2 22:25:50

选购杀毒软件之引擎技术篇

一. 群雄逐鹿的杀毒软件市场
  面对市场上众多品牌的杀毒软件,该选择哪一种呢?
  二. 从病毒原理说开去
  病毒的定义和行为特征。在这个年代里,计算机病毒(Computer Virus)已经是家喻户晓的名词了,而其在业界里也早已有了定义:计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据影响计算机使用,并能够自我复制的一组计算机指令或者程序代码,它可以是一个程序,一段执行代码,像生物病毒一样有独特的复制能力,可以很快蔓延。他们能把自身附着在各种类型的文件上,随文件的传播而蔓延。现在随着计算机网络的发展,病毒和网络技术结合,蔓延的速度更加迅速。计算机病毒具有可执行性、寄生性、传染性、破坏性、欺骗性、隐蔽性、潜伏性、衍生性。
  以上便是早期就已经定义好的计算机病毒概念,而如今可称为病毒的,还有各种不会感染文件的特洛伊木马程序(后门)等(Trojan、BackDoor),大部分特洛伊木马除了不具备对文件的传染性以外,其他特征均与病毒符合,而且一部分文件型特洛伊木马还可感染文件。此外,还有一种通过系统漏洞进行传播的恶意程序或“蠕虫”(Worm),利用系统自带的脚本语言功能实现破坏效果的宏病毒和恶意脚本(Macro Virus、Evil Script),因此,文中将把木马后门、蠕虫、宏病毒和传统文件型病毒等统称为“病毒”。
  自我复制   寄生    欺骗   破坏
 
  三. 剖析杀毒软件的心脏——引擎技术
  病毒和反病毒产品是天生的冤家,由于病毒永无休止的存在,反病毒产品这片领域自然也会出现众多厂商来分割的局面,因此也就衔生出了多种杀毒引擎技术。
杀毒引擎是决定一款杀毒软件技术是否成熟可靠的关键,什么是杀毒引擎呢?简言之,它就是一套判断特定程序行为是否为病毒程序或可疑程序的技术机制,引擎不仅需要具备判断病毒的能力,还必须拥有足够的病毒清理技术和环境恢复技术,如果一款杀毒产品能查出病毒但是却无法清除、或者无法将被病毒破坏的系统环境成功恢复,那它也只能是鸡肋。为了达到查杀病毒的目的,杀毒引擎自身要实施的行为就要比病毒还病毒,例如,为了及时获得环境变动的监控数据,一些杀毒引擎采用DLL的钩子技术将自身注入系统进程中,这一行为和DLL木马无异;而为了成功拦截查杀驱动级别木马Rootkit,杀毒引擎更需要将自身的一部分作为驱动形式运行,以便进入系统内核领域……说到这里,一些计算机配置较低的用户应该能明白,为什么自己安装杀毒软件后计算机速度明显变慢了,这多半是因为杀毒软件的“文件监控”等功能导致的,因为这一功能的实现原理就如文件型病毒的寄生过程一样,只不过文件型病毒是守候在内存中伺机感染每一个打开的文件,而“文件监控”功能是时刻驻守在内存里检查每一个打开的文件是否存在病毒,两者导致的后果都是程序载入内存的时间增加,在低配置的计算机表现得比较明显罢了。
  由于以上提到的原因,杀毒软件是会不可避免的对用户计算机运行速度造成一定影响的,但是为了安全,大部分用户只能牺牲一点工作效率来换取安全了,那么,杀毒引擎的具体实现过程又是如何呢?且让我们来对其窥探一番。
 1.守住每一个关卡——程序行为捕获
  每个程序运行时都需要进行各种交互动作,如收发网络数据、响应某个触发事件、文件读写操作等,这些交互都被称为“行为”(Action),这个周期过程是可以被跟踪记录的,这就是杀毒引擎必须干涉的第一步,当杀毒软件的环境监视模块启动后,它会嵌入系统的操作接口,使得任何非核心程序和除了杀毒软件自身程序的运作过程都要被它实时监视,这一技术通常通过钩子技术和驱动层挂载实现,每个杀毒软件厂商都预先定义了一套病毒行为判断规范,即在一个给定的范围和置信度下,判断相关操作是否为合法。例如一个代码执行后被发现试图将自己写入用户请求执行的程序文件体内、或进行特定的复制动作和添加注册表操作,则可将其怀疑为病毒,移交给查毒过程的第二步进一步判断处理。
  为了实现行为捕获操作,杀毒软件引擎必须将自身模块嵌入系统底层,在这个实现方法上,各大厂商都有自己的一套方案,一般厂商普遍采用的是中间件技术,即通过Hook挂钩方式实现对每个进程的访问,这种方案通过在系统底层与应用程序之间嵌入一个全局钩子DLL模块达到目的,从严格上来说,它的相对安全和稳定性较低,但是在源代码不开放的操作系统层面上,这是最简单的方法。
  一部分厂商因为与操作系统厂商存在合作关系,因而获得了较其他厂商杀毒产品要高的操作系统特权,所以他们采用的方案是基于系统最底层的系统核心驱动,这种实现方式是最安全的,或者说最高级的实现方式,至今只有Norton获得了这个特权。随着病毒技术逐渐渗透到Rootkit层次,过去的Hook技术逐渐有点力不从心,于是杀毒厂商开始转入驱动方案,当然,由于没有操作系统厂商的授权,他们并无法实现最底层的核心驱动解决方案,于是杀毒厂商编写了一个称为“软件驱动”的中间件,用于在系统中产生一个虚拟硬件。众所周知,在操作系统中,只有驱动模块能通过一个“硬件抽象层(HAL)”的通讯接口而到达系统底层,如今流行的Rootkit木马也是采用驱动形式进入系统核心的,因此杀毒厂商使用“软件驱动”来实现底层监视的方案是要比一般的Hook技术效果显著的,但是这也不可避免会出现一些问题,如果这个“软件驱动”存在缺陷或者被某些程序异常终止(例如出现未预料的错误),在系统底层无任何保护措施的环境下,最直接的一个后果就是系统蓝屏崩溃,造成可能的损失。
 
  1.虚拟机技术
  一提起虚拟机,部分读者可能就会联想到VMWare去了,然而这里提到的虚拟机并非如此。在反病毒界里,虚拟机也被称为通用解密器,已经成为反病毒软件中最重要的部分之一。杀毒引擎的虚拟机技术并非是为病毒提供一套计算机仿真系统,让其在内部折腾直到暴露出病毒行为特征,在这里的虚拟机是指杀毒引擎模拟出一个仿真CPU,这个“CPU”具备和真正CPU等同的指令分析功能,杀毒引擎将待检测的程序代码读入“CPU”中逐条指令循环执行,直到出现特定情况才结束工作,在这个过程中探知程序是否具备病毒行为特征或者暴露出病毒特征码。这就是杀毒引擎的“虚拟机技术”,它的目的就是让程序文件在没有实际运行的情况下得到运行后的结果,最初虚拟机技术是为了对付变形病毒而产生的,因为变形病毒会将自身代码以一定的方式进行多次变换,这样传统静态特征码扫描技术就对其无能为力,因为它根本无法确认特征码,但是即使再强悍的变形病毒也不可避免在运行时出现一段相对固定的机器码,否则它自身也无法正常运行完成变形过程,而由于这段机器码只有在运行时才能被捕获到,因此工程师开发了“虚拟机技术”诱使病毒在杀毒引擎产生的“CPU”里尽情运行,而后根据其固定机器码匹配病毒特征数据库中的静态特征来判断这个程序是否病毒。虽然这个技术可能会导致误报,但是仍不能否认其是一种有效的方法。
  2.实时监控技术
  实时监控技术,说白了其实就是一个文件监视器,它会在文件打开、关闭、修改等操作时将其拦截并送入查毒模块进行分析,而在如今的操作系统中要实现对所有文件操作的拦截并非易事,这需要涉及系统核心,因此,这里所采取的方案原型,就是“软件驱动”。通过驱动进入核心,便能获知每个文件的操作情况并做出反应了。这项技术的难度在于驱动代码的编写,由于内核没有异常处理过程,在这里执行的代码稍有一点错漏都能直接导致系统崩溃,且驱动与用户层的实时交互也需要一套复杂的实现方案,因此只有一定实力的厂家才实现这项技术,且实现了这项技术的厂家大部分都会连同虚拟机技术、静态特征码扫描技术一起结合起来,最终形成自己的产品。
  四. 结语
  许多用户都在挑选杀毒软件时犯难,实际上,如果抛开许多表面上的东西,杀毒软件的引擎实现技术也就那么几个,关键在于杀毒厂商的研发能力和实际工作效率,也不能只凭杀毒软件在对付某种病毒的差别上就断定它们之间的地位差异。符合自己使用的,就是最好的
页: [1]
查看完整版本: 选购杀毒软件之引擎技术篇