7.4.2 常见恶意代码的检测技术

7.4.2 常见恶意代码的检测技术

以上介绍的病毒的检测方法可以针对所有的病毒。但是因为引导型病毒和文件型病毒具有不同的感染和表现方法,所以对于引导型病毒和文件型病毒也可分为不同的检测技术。

1.引导型病毒的检测技术

对于引导型病毒,根据它们感染硬盘的主引导扇区或DOS分区引导扇区、软盘的引导扇区,修改内存、FAT、中断向量表、设备驱动程序头等系统数据的特点,前面介绍的检查常规内存法和系统数据对比法基本上就能查出它们的存在。

例“小球”病毒的检测。

检测磁盘是否已被感染上“小球”病毒的方法,主要是针对“小球”病毒的特征而进行的,检测的范围主要是磁盘引导扇区和文件分配表,检测的工具可以是PCTOOLS,也可以是DEBUG。

PCTOOLS检测法如下。

进入PCTOOLS,查看引导扇区前256 B的前两字节是否为“EB 1C”,然后再看引导扇区的后256 B,注意查看最后的4个字节是否为“57 13 55 AA”。如果查看的结果发现引导扇区的相应偏移地址处有病毒的特征字符串,就可以判定该磁盘已被感染了“小球”病毒。

DEBUG检测法如下。

运行DEBUG程序后,执行下列DEBUG命令:

上述命令执行吋,屏幕即显示出A驱动器上磁盘引导扇区的内容,可以根据上述检查病毒程序特征字符串的方法,对该引导扇区进行检查。如果要检查硬盘引导扇区的内容,则执行如下命令:

2.文件型病毒的检测技术

前面介绍的各种方法都可以用来对文件型病毒进行检测,除此之外,还可以根据文件型病毒感染和表现的特点,用下面一些方法进行检测。混合型病毒由于既有引导型病毒的特点,又有文件型病毒的特点,所以一般用任一种方法都能检测出它们的存在。

(1)文件完整性对比法

对于那些执行文件的判定,可采用比较法,即最好掌握原系统可执行文件的长度和日期等参数,通过判断其有无变化,推断文件是否感染病毒。这需要事先对可执行文件进行备份。

(2)文件基本属性对比法

文件的基本属性包括文件长度、文件创建日期和时间、文件属性(一般属性、只读属性、隐含属性、系统属性)、文件的首簇号、文件的特定内容等。如果文件的这些属性值的任何一个值发生了异常变化,则说明极有可能病毒攻击了该文件(感染或是毁坏)。

下面以长度检测法来说明文件基本属性对比法的优缺点。所谓长度检测法,就是以字节为单位记录文件的长度,在运行中定期检查文件长度的变化,即字节数的变化,并将此变化值与已知的某个值相对比,以此来确定病毒的种类。将文件长度的变化作为检测病毒的依据,在一般情况下是有效的。但是,长度检测法也有局限性:一方面,并不是只有病毒才能改变程序的长度,正常程序长度的变化也可能是合法的,这时会出现误报;另一方面,越来越多的病毒感染宿主程序时,并不会使宿主程序的长度增加。它们采用零长度感染方式,或覆盖式感染方式,即在感染宿主程序时,病毒程序被放入宿主程序的“空洞”中,在感染病毒后,程序长度不发生变化,或病毒程序硬性地将宿主程序的一部分内容不做保留地覆盖掉,染毒后的程序长度也不会变化。在这种情况下,长度检测法就会漏报。

(3)校验和对比

对文件内容的全部字节进行某种函数运算,这种运算所产生的适当字节长度的结果就叫作校验和。这种校验和在很大程度上代表了原文件的特征。例如,校验和长度取为1 B,则平均257个文件才有两个文件的校验和相同;校验和长度取为2 B,则平均65 537个文件才有两个文件的校验和相同。常用校验和以及计算方法如下:(假设程序为代码串“abcdef…”)

累加校验和=(a+b+c+…)MOD 256(校验和长度取为1 B)

异或校验和=(ab XOR cd XOR ef XOR…)MOD 65536(校验和长度取为2 B)

其他还有计算方法较繁杂的CRC冗余校验和等。

将正常文件的内容计算其校验和,将该校验和写入该文件中或写入别的文件中保存。在文件使用过程中,定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否感染病毒,这种方法叫校验和法。一般反病毒软件会将校验和法与病毒特征代码法结合使用,以提高其检测能力。校验和法既能发现已知病毒,又能发现未知病毒,但是,它不能识别病毒类,不能确认出病毒名称。由于病毒感染并非文件内容改变的唯一的非他性原因,文件内容的改变有可能是正常程序引起的,所以校验和法常常误报警,而且此种方法也会影响文件的运行速度。病毒感染的确会引起文件内容变化,但是校验和法对文件内容的变化太敏感,又不能区分正常程序引起的变动,而造成频繁报警,所以用监视文件的校验和来检测病毒,不是最好的方法。这种方法遇到下述情况:已有软件版本更新、变更口令、修改运行参数,校验和法都会误报警。校验和法对隐蔽性病毒无效,在隐蔽性病毒进驻内存后,会自动剥去染毒程序中的病毒代码,使校验和法受骗,对一个带病毒文件算出正常的校验和。运用校验和法检查病毒采用三种方式:①在检测病毒工具中纳入校验和法,对被检查的对象文件计算其正常状态的校验和,将校验和值写入被检查文件中或检测工具中,而后进行比较;②在应用程序中,放入校验和法自我检查功能,将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原校验和值,实现应用程序的自检测;③将校验和检查程序常驻内存,每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预先保存的校验和。校验和法的优点是方法简单,能发现未知病毒,被查文件的细微变化也能发现。其缺点是发布通行记录正常态的校验和,会误报警,不能识别病毒名称,不能清除隐蔽型病毒。

(4)文件头部字节对比

计算文件的校验和要花费较多时间,实际上现有文件型病毒都是通过改变宿主程序的开头部分,来达到先于宿主程序执行的目的。在病毒感染可执行文件时,一般采用链接的方式,病毒链接的位置可能在正常程序的首部、尾部或中间。对于链接首部的病毒,感染后的程序一开始就是病毒代码,对于链接程序尾部或中间的病毒,虽然病毒代码在文件的尾部或中间,但文件开始必须有一条跳转指令(对.com文件)或文件头部的程序入口指针被改变(对.exe文件)。因此,病毒对宿主程序数据真实性的破坏必然体现在宿主程序的头部。所以,对应用程序的完整性校验(直接对比或求校验和)只要针对其头部的5~20 B即可,这既能保证准确性,又能极大地减少检测时间。

3.宏病毒的检测技术

由于宏病毒的运行特点——离不开可供其运行的系统软件(MS Word、Power Point等Office软件)——所以宏病毒的检测其实非常容易。只要留意一下常用的Office系统软件是不是出现了一些不正常的现象,就能大概知道计算机是不是感染上了宏病毒。如费力精心编排的文件不知何时变得乱七八糟;明明计算机有很大的内存,打开文档时却提示“内存不够”;修改好的文档不能以其他名字或其他格式存盘;原来普通的文档格式(.doc)变成了模板格式(.dot);屏幕上的文章显示没有任何问题,但打印时却千呼万唤不出来;更有甚者,硬盘上的文件不翼而飞。诸如此类的“奇怪”现象告诉我们,计算机可能已感染上了宏病毒。

特别是与Office系统软件有关的异常现象,能更准确地反映出宏病毒的存在。下面仍以Word宏病毒为例,介绍一些与宏病毒有关的“奇怪”现象。

通用模板中出现宏。大多数宏病毒是通过感染通用模板Normal.dot进行传播的。当使用“工作”-“宏”菜单命令时,在通用模板上发现有AutoOpen等自动宏,File-Save等标准宏或一些怪名字的宏,而用户又没有使用特殊的宏时,用户文档很有可能感染上了宏病毒,因为大多数用户的通用模板中是没有宏的。

同样也可以通过“工具”-“模板和加载项”中的“管理器”-“宏方案项”来查看Word文档中的宏代码。要查看文档中的宏病毒而又不激活它们(不感染系统和文档,也不发作),必须先退出Word,然后在没有打开任何文件(文档文件或模板文件)的情况下,重新启动Word。如果怀疑通用模板文件Normal.dot,或者其他的模板文件可能染毒,这时需要将它们重新命名,使它们不是.doc或.dot格式,这样Word便可在一个无毒的环境下启动。在启动Word后,进入“工具”-“模板和加载项”的“管理器”,并选择“宏方案项”选项卡,单击“关闭文件”按钮,使其转变为“打开文件”按钮。再单击“打开文件”按钮,得到“打开文件”对话框,可以从中选择打开可疑文档,这时如果有宏存在,宏的名字会被列在提示框内。

采用这种方法查看宏是安全的,如果文档中有宏病毒,其形迹将暴露出来,而又不会被激活,避免了病毒感染系统,但是一些病毒还是可以通过删除“工作”-“模板和加载项”功能隐藏起来,还有另外一个问题,如果用户对Word Basic或Visual Basic不熟悉,用此方法虽然可查出文档中的宏,但不能确定是不是宏病毒。

无故出现存盘操作。当打开一个Word文档,并且文档没有经过任何改动,立刻就有存盘操作。

Word功能混乱,无法使用。一些病毒能够破坏Word的运行机制,使文档的打开、关闭、存盘等操作无法正常进行。最常见的是原Word文档无法另存为其他格式文件。如Word的.doc文件感染病毒后,属性已发生了变化,只能以模板文件方式存盘。

Word菜单命令消失。一些病毒感染系统时,出于隐形或自我保护目的,会关闭Word菜单的某些命令。如Phardera病毒,病毒发作时只弹出一个对话框,干扰用户的正常操作,同时,病毒去掉“工具”菜单中的“宏”和“自定义”命令,阻止手动查杀病毒。

Word文档的内容发生变化。例如,文档中加入陌生的信息,Wazzu病毒感染文档后,会打乱原格式,加入“Wazzu”;文档的内容被替换,Concept.F病毒是Concept病毒的变种,文档染毒后,原文档中的“,”“e”“not”会被“。”“a”“and”所代替。