转:杀毒软件基本技术
1、什么是病毒码 (Virus Pattern)?所谓的病毒码其实可以说成病毒的"指纹",当杀毒软件公司收集到一只新的病毒时,他们就会从这个病毒程序中截取一小段独一无二而且足以表示这只病毒的二进制程序代码 (Binary Code) ,来当做查毒程序辨认此病毒的依据,而这段独一无二的二进制程序代码就是所谓的病毒码。二进制程序代码是计算机的最基本语言 -- 机械码,在计算机中所有可以执行的程序 (如 *.EXE,*.COM) 几乎都是由二进制程序代码所组成。就连宏病毒,虽然它只是包含在Word文件档案中的宏,可是它的宏程序也是以二进制代码的方式存在于Word文件档中。病毒码是如何产生的? 其实病毒码必须依照各种不同格式的档案及病毒感染的方式来取得。举例来讲,如果有一个Windows的程序被病毒感染,那么杀毒软件公司就必须先研究出Windows档案的格式,看看Windows档案是怎么被系统执行,以便找出Windows程序的进入点,因为病毒就是藏身在这个地方来取得控制权并进行传染及破坏,知道病毒程序在一个Windows档案中所存在的位置之后,就可以从这个区域中来找出一段特殊的病毒码供查毒程序使用。
在杀毒软件公司中都有技术员专门在为各种不同类型的病毒提取病毒码,可是当病毒愈来愈多,要找出每一只病毒都独一无二的病毒码可能就不太容易,有时后甚至这些病毒码还会误判到一些不是病毒的正常档案,所以通常杀毒软件公司在将病毒码送给客户前都必须先经过一番严格的测试,才放在Internet或BBS上供使用者自由 Download。
2、何谓扫描引擎(Scan Engine)?
扫描引擎可以说是杀毒软件中最精华的部份。当您使用一套杀毒软件时,不论它的画面是否精美,操作是否简便,功能是否完善,这些其实都还不足以证明一套杀毒软件的好坏,事实上,当您操作杀毒软件去扫描某一个磁盘驱动器或目录时,它其实是把这个磁盘驱动器或目录下的档案一一送进扫描引擎来进行扫描,也就是说您所看到的漂亮画面其实只是一个使用者接口 (UI,User Interface),真正影响扫描速度及侦测率的因素就是查毒引擎,查毒引擎是一个没有画面,没有包装的核心程序,它被放在杀毒软件所安装的目录之下,就好象汽车引擎平常是无法直接看见的,可是它却是影响汽车性能最主要的关键。有了病毒码,有了查毒引擎,再配合一个精美的操作画面,就成了市面上您所看到的杀毒软件。
3、为什么要更新扫描引擎和病毒码?
在一开始提到过绝大多数的人都以为安装了一套杀毒软件之后,就可以从此高枕无忧,这是一个绝对错误的观念,因为病毒的种类及型态一直在改变,新病毒也每天不断的被产生,如果不经常更换最新的病毒码以及查毒引擎,再强悍的杀毒软件也会有失灵的一天。举个最明显的例子来说,在还没有出现宏病毒以前,全世界没有任何一家杀毒软件厂商支持宏病毒扫描能力,当然如果您还在沿用数年前的杀毒软件,就无法侦测到宏病毒了,所以您必须使用能扫到到宏病毒的病毒码及支持宏病毒的扫描引擎。
若只单单更换病毒码或扫描引擎还是不够的,因为旧的病毒码文件可能还没加入宏病毒的病毒码,或者是旧的查毒引擎跟本还没支持文件档的查毒,因此这样的组合还是没办法发挥杀毒的效果。病毒码和扫描引擎是杀毒工作中相当重要的一环,目前一些比较大的杀毒软件(比如KV3000、金山毒霸等)厂商都有将病毒码及查毒引擎放在网站上供人免费下载,请记得定期下载最新的病毒码或扫描引擎。
4、常见的病毒防治技术
(1)病毒码扫描法
将新发现的病毒加以分析后,根据其特征,编成病毒码,加入数据库中。以后每当执行查毒程序时,便能立刻扫描程序档案,并与病毒码对比,即能侦测到是否有病毒。病毒码扫描法又快又有效率( 例如PC-cillin,就是利用深层扫描技术,在实时扫描各个或大或小的档案时,平均只需1/20秒的时间),目前大多数杀毒软件均采用这种方式,但其缺点是无法侦测到未知的新病毒及以变种病毒。
(2)加总比对法(Check-sum)
根据每个程序的文件名称、大小、时间、日期及内容,加总为一个检查码,再将检查码附于程序的后面,或是将所有检查码放在同一个数据库中,再利用此Check-sum系统,追踪并记录每个程序的检查码是否遭更改,以判断是否中毒。这种技术可侦测到各式的病毒,但最大的缺点就是误判断高,且无法确认是哪种病毒感染的。对于Stealth Virus病毒,是无法侦测到。
(3)人工智能陷阱(Rule-based)
人工智能陷阱是一种监测计算机行为的常驻式扫描技术。它将所有病毒所产生的行为归纳起来,一旦发现内存的程序有任何不当的行为,系统就会有所警觉,并告知使用者。这种技术的优点是执行速度快、手续简便,且可以侦测到各式病毒;其缺点就是程序设计难,且不容易考虑周全。不过在这千变万化的病毒世界中,人工智能陷阱扫描技术是一个至少具有保全功能的新观点。
(4)软件仿真扫描法
软件仿真技术专门用来对付千面人病毒(Polymorphic /Mutation Virus)。千面人病毒在每次传染时,都以不同的随机随机数加密于每个中毒的档案中,传统病毒码比对的方式根本就无法找到这种病毒。软件仿真技术则是成功地仿真CPU执行,在其设计的DOS虚拟机器(Virtual Machine)下假执行病毒的变体引擎译码程序,安全并确实地将多型体病毒解开,使其显露原本的面目,再加以扫描。
(5)VICE(Virus Instruction Code Emulation)先知扫描法
VICE先知扫描技术是继软件仿真后的一大技术上突破。既然软件仿真可以建立一个保护模式下的DOS虚拟机器,仿真CPU动作并假执行程序以解开变体引擎病毒,那么应用类似的技术也可以用来分析一般程序检查可疑的病毒码。因此VICE将工程师用来判断程序是否有病毒码存在的方法,分析归纳成专家系统知识库,再利用软件工程的仿真技术(Software Emulation)假执行新的病毒,则可分析出新病毒码对付以后的病毒。
(6)实时的I/O扫描(Realtime I/O Scan)
Realtime I/O Scan的目的在于实时地对资料的输入/输出动作做病毒码对比的动作,希望能够在病毒尚未被执行之前,就能够防堵下来。理论上,这样的实时扫描程序虽然会影响到整体的数据传输速率,但是使用Realtime I/O scan,档案传送进来之后,就等于扫过了一次毒,整体来说,是没有什么差别的。
(7)宏病毒陷阱(MacroTrapTM)
MacroTrapTM 是结合了病毒码比对与人工智能陷阱的技术,依病毒行为模式(Rule base) 来侦测已知及未知的宏病毒。其中,配合OLE2技术,可将宏与文件分开,使得扫描速度变得飞快,而且更可有效地将宏病毒彻底清除!
(8)空中抓毒(On the flyTM)
就是在数据传输过程中所会经过的一个节点(Node,就是一台计算机)上设计一套杀毒软件,可以把网络中所有可能带有病毒的信息进行扫描,全过程分为四个步骤:
A、 接收从网络中送来的资料。
B、 把要扫描的资料在这台计算机中暂时储存起来。
C、 扫描所储存的资料,并根据管理者的设定处理中毒的档案。
D、 把检查过或处理过的资料继续送到它原来要传送的计算机。
页:
[1]