防病毒卡的核心实际上是一个软件,只不过将其固化在ROM中,它的出发点是想以不变应万变,通过动态驻留内存来监视计算机的运行情况,根据总结出来的病毒行为规则和经验来判断是否有病毒活动。
通过截获中断控制权规则和经验可以判定是否有病毒活动,并可以通过截获中断控制权来使内存中的病毒瘫痪,使其失去传染其它文件和破坏信息资料的能力,这就是防病毒卡“带毒运行”功能的基本原理。 防病毒卡的动态监测技术和对病毒行为规则的研究,对于发现计算机病毒起了很大的促进作用,但是作为一个产品而言,只有这部分技术是远远不够的,也是没有太大实际意义的,这是防病毒卡的致命缺陷,也是导致防病毒卡有很多先天性不足的根本原因。
防病毒卡主要的不足是与正常软件特别是国产的软件有不兼容的现象,经常有误报、漏报病毒等现象发生,降低了计算机运行速度,而且升级困难,因此,从防病毒技术上来讲,防病毒卡是不成熟的。目前,人们已经基本上不再使用防病毒卡了。
随着防病毒卡的衰落,反病毒软件日益风行。反病毒软件最重要的功能是能实时拦截病毒并将病毒干净彻底地予以清除。对反病毒技术而言,如果说防病毒卡是治标的话,那么反病毒软件就是治本了,所以现在的反病毒产品基本上都是软件型的反病毒产品(也有硬件芯片的反病毒产品)。
第一代软件反病毒技术是采取单纯的病毒特征判断,将病毒从带毒文件中清除掉。这种方式可以准确地清除病毒,可靠性很高。后来病毒技术发展了,特别是加密和变形技术的运用,使得这种简单的静态扫描方式失去了作用,随之而来的是第二代反病毒技术。
第二代反病毒技术是采用静态广谱特征扫描方法检测病毒,这种方式可以更多地检测出变形病毒,但另一方面误报率也有所增加,尤其是用这种不严格的特征判定方式去清除病毒所带来的风险很大,容易造成文件和数据的破坏,所以,静态防病毒技术也有难以克服的缺陷。
第三代反病毒技术的主要特点是将静态扫描技术和动态仿真跟踪技术相结合,将查找病毒和清除病毒合二为一,形成一个整体解决方案,能够全面实现防、查、杀等反病毒所必备的各种手段。它以驻留内存的方式来防止病毒的入侵,凡是检测到的病毒都能被清除,不会破坏文件和数据,但随着病毒数量的增加和新型病毒技术的发展,静态扫描技术使反病毒软件速度降低,驻留内存的防毒模块也容易产生误报。
第四代反病毒技术则是针对计算机病毒的发展而基于病毒家族体系的命名规则、基于多位CRC校验和扫描机理,启发式智能代码分析模块、动态数据还原模块(能查出隐蔽性极强的压缩加密文件中的病毒)、内存解毒模块、自身免疫模块等先进的解毒技术,较好的解决了以前防毒技术顾此失彼、此消彼长的状态。
病毒检测的方法
在与病毒的对抗中,及早发现病毒很重要。早发现,早处置,可以把病毒的破坏降到最低程度。用来检测病毒的方法有:
特征代码法、校验和法、行为监测法、软件模拟法等
这些方法依据的原理不同,实现时所需开销不同,检测范围不同,各有所长。 特征代码法
特征代码法被早期应用于SCAN、CPAV等著名病毒检测工具中,有国外专家认为特征代码法是检测已知病毒的最简单、开销最小的方法。
特征代码法的实现步骤如下:
采集已知病毒样本;病毒如果既感染COM文件,又感染EXE文件,对这种病毒要同时采集COM型病毒样本和EXE型病毒样本。
在病毒样本中,抽取特征代码,依据如下原则:
抽取的代码比较特殊,不大可能与普通正常程序代码吻合。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间的开销。如果一种病毒的特征代码增长一字节,要检测3000种病毒,增加的空间就是3000字节,在很大程度上降低了病毒检测效率,因此,在保持唯一性的前提下,尽量使特征代码长度短些,以减少病毒检测时时间与空间的开销。
在既感染COM文件又感染EXE文件的病毒样本中,要抽取两种样本共有的代码,将特征代码纳入病毒数据库。
利用特征码来检测病毒:
打开被检测文件,在文件中搜索是否含有病毒数据库中的病毒特征代码,由于特征代码与病毒一一对应,所以只要发现被检测文件中含有病毒特征代码,便可以断定被查文件中带有病毒(严格的所来,也不是没有例外),并可以由特征码所对应的病毒名称知道感被检测染文件的是何种病毒,从而可以进一步找出解除病毒的方法。 采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新版本,否则检测工具便会老化,逐渐失去实用价值。病毒特征代码法对从未见过的新病毒,自然无法知道其特征代码,因而无法去检测这未知病毒。
特征代码法的优点是:
检测准确快速、可识别病毒的名称、误报警率低、依据检测结果,可做解毒处理。
其缺点是:
不能检测未知病毒、搜集已知病毒的特征代码,费用开销大、在网络上效率低(在网络服务器上,因长时间检索会使整个网络性能变坏)。 其特点:
A. 速度慢。
随着病毒种类的增多,检索病毒的时间会变得越来越长。如果检索5000种病毒,必须对5000个病毒特征代码逐一检查,如果病毒数量再增加,检测病毒的时间开销就变得令人难以忍受,要保持这种检测方法的高速性,将变得日益困难。
B.误报警率低。
C.不能检查多形性病毒。
特征代码法是不可能检测多态性病毒的,有国外专家认为多态性病毒是病毒特征代码法的索命者。
D.不能对付隐蔽性病毒。
如果隐蔽性病毒先一步进驻内存,之后才运行病毒检测工具,那么隐蔽性病毒可以在检测工具进行检测之前,把即将要被检测的文件中的病毒代码清除,这样,进行病毒检测时实际上被检测的是一个虚假的“干净文件”,而真正的病毒已经隐藏起来了,当然,也就无法得出真实的检测结果。
校验和法
对正常文件的内容进行校验和计算,将该校验和写入当前文件或存入其它文件中加以保存。可以定期检查现有文件内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否被感染,这种方法叫校验和法。它既可发现已知病毒又可发现未知病毒,在SCAN和CPAV工具的后期版本中除了病毒特征代码法之外,都纳入了校验和法,以提高其检测能力。
虽然这种方法既能发现已知病毒,也能发现未知病毒,但是,它却不能识别病毒种类,也不能识别病毒的名称。
由于文件内容的改变也可能是由正常程序引起的,所以病毒感染也就不能算是文件内容改变的唯一原因,这样,用校验和法检测病毒就常常会有误报现象发生,而且这种方法也影响文件的运行速度。
病毒感染的确会引起文件内容变化,但是校验和法对文件内容的变化太过敏感,而且又不能区分正常与非正常程序所引起的变动,这样就会导致病毒报警过度频繁,因此使用监视文件校验和的方法来检测病毒,不算是很好的方法。
这种方法遇到下述情况都会报警,包括:
已有软件版更新、变更口令、修改运行参数、校验和法都会误报警。
校验和法对隐蔽性病毒无效。隐蔽性病毒进驻内存后,会自动剥去染毒程序中的病毒代码,使校验和法受骗,使其对一个有毒文件算出正常校验和。
运用校验和法查病毒采用三种方式:
①在检测病毒工具中纳入校验和法,对被查的对象文件计算其正常状态的校验和,将校验和值写入被查文件中或检测工具中,待以后进行比较。
②在应用程序中,放入校验和法自我检查功能,将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原校验和值,实现应用程序的自行检测。
③将校验和检查程序常驻内存,每当应用程序开始运行时,自动按应用程序内部或别的文件中预先保存的校验和进行比较和检查。
校验和法的优点是:
方法简单能发现未知病毒、被查文件的细微变化也能发现
其缺点是:
发布通行记录正常态的校验和、会误报警、不能识别病毒名称、不能对付隐蔽型病毒。
行为监测法
利用病毒的特有行为特征性来监测病毒的方法,称为行为监测法。通过长期对计算机病毒的观察与研究会发现,有一些行为是病毒的共同行为,而且比较特殊,在正常程序中,这些行为比较罕见,当程序运行时,监视其行为,如果发现其中含有病毒行为,则立即报警。
这些做为监测病毒的行为特征如下:
A.占有INT 13H
所有的引导型病毒,都攻击Boot扇区或主引导扇区。系统启动时,当Boot扇区或主引导扇区获得执行权时,系统刚刚开工,一般引导型病毒都会占用INT 13H功能,因为其他系统功能未设置好,无法利用,而引导型病毒需要占据INT 13H功能,来放置病毒所需的代码。
B.改DOS系统为数据区的内存总量
病毒常驻内存后,为了防止DOS系统将其覆盖,必须修改系统内存总量。
C.对COM、EXE文件做写入动作
病毒要感染,经常需要对COM、EXE文件进行写操作。 D.病毒程序与宿主程序的切换
染毒程序运行中,先运行病毒,而后执行宿主程序。在两者切换时,有许多特征行为。
行为监测法的长处:
可发现未知病毒、可相当准确地预报未知的多数病毒。
行为监测法的短处:
可能误报警、不能识别病毒名称、实现时有一定难度。
软件模拟法
多态性病毒每次感染都变化其病毒密码,对付这种病毒,特征代码法失效。因为多态性病毒代码实施密码化,而且每次所用密钥不同,把染毒的病毒代码相互比较,也无法找出相同的可能做为特征代码的稳定代码。虽然行为检测法可以检测多态性病毒,但是在检测出病毒后,因为不知病毒的种类,也难以做解毒处理。 为了检测多态性病毒,可应用新的检测方法――软件模拟法。它是一种软件分析器,用软件方法来模拟和分析程序的运行。
新型的病毒检测工具已纳入了软件模拟法,该类工具开始运行时,使用特征代码法检测病毒,如果发现隐蔽病毒或多态性病毒嫌疑时,启动软件模拟模块,监视病毒的运行,待病毒自身的密码译码以后,再运用特征代码法来识别病毒的种类。