病毒要进行传染,必然会留下痕迹。生物医学病毒如此,电脑病毒也是一样。检测电脑病毒,就要到病毒寄生场所去检查,发现异常情况,并进而验明“正身”,确认电脑病毒的存在。电脑病毒静态时存储于硬盘中,被激活时驻留在内存中,因此对电脑病毒的检测可以分为对硬盘的检测和对内存的检测。
一般对硬盘进行病毒检测时,要求内存中不带病毒,因为某些电脑病毒会向检测者报告假情况。例如“4096”病毒在内存中时,查看被它感染的文件,不会发现该文件的长度已发生变化,而当在内存中没有病毒时,才会发现文件长度已经增长了4096字节;又例如,“DIR2”病毒在内存中,用Debug程序查看被感染文件时,根本看不到“DIR2”病毒的代码,很多检测程序因此而漏过了被感染的文件;还有引导区型的“巴基斯坦智囊”病毒,当它活跃在内存中时,检查引导区就看不到病毒程序而只看到正常的引导扇区。因此,只有在要求确认某种病毒的类型和对其进行分析、研究时,才能在内存中带毒的情况下作检测工作。从原始的、未受病毒感染的DOS系统软盘启动,可以保证内存中不带病毒。启动必须是上电启动而不是按键盘上的“Alt+Ctrl+Del”三键的那种热启动,因为某些病毒可以通过截取键盘中断,将自己驻留在内存中。检测硬盘中的病毒,启动系统软盘的DOS版本号应该等于或高于硬盘内DOS系统的版本号。如果硬盘上使用了硬盘管理软件DM、ADM,硬盘压缩存储管理软件Stacker、DoubleSpace等,启动系统软盘时应把这些软件的驱动程序包括在软盘上,并把它们写入config.sys文件中,否则用系统软盘引导启动后,将不能访问硬盘上的所有分区,使躲藏在其中的病毒逃过检查。
检测硬盘中的病毒可分成检测引导区型病毒和检测文件型病毒。这两种检测的原理上相同,但由于病毒的存储方式不同,检测方法还是有差别的。主要是基于下列四种方法:比较被检测对象与原始备份的比较法;利用病毒特征代码串进行查找的搜索法;搜索病毒体内特定位置的特征字识别法;运用反汇编技术分析被检测对象,确证是否为病毒的分析法。
比较法
这是用原始备份与被检测的引导扇区或被检测的文件进行比较的方法,可以用打印的代码清单(比如Debug的D命令输出格式)进行比较,也可用程序来进行比较(如DOS的DISKCOMP、COMP或PCTOOLS等其它软件)。比较法不需要专用的查病毒程序,只要用常规DOS软件和PCTOOLS等工具软件就可以进行,而且还可以发现那些尚不能被现有的杀毒软件发现的计算机病毒。因为病毒传播得很快,新病毒层出不穷,而目前还没有能查出一切病毒的通用程序,或通过代码分析,可以判定某个程序中是否含有病毒的查毒程序,所以只有靠比较法和分析法,或这两种方法相结合来发现新病毒。 对硬盘的主引导区或对DOS的引导扇区作检查,用比较法能发现其中的程序源代码是否发生了变化。由于要进行比较,因此保留好原始备份是非常重要的。制作备份时必须在无电脑病毒的环境里进行,制作好的备份必须妥善保管,写好标签,贴好写保护。比较法的好处是简单、方便,不用专用软件;缺点是无法确认病毒的种类名称。另外,造成被检测程序与原始备份之间差别的原因尚需进一步验证,以查明是电脑病毒造成的,还是DOS数据被偶然原因,如突然停电、程序失控、恶意程序等破坏的。这些要用到以后讲的分析法,查看变化部分代码的性质,以此来确认是否存在病毒。
搜索法
这种方法主要是对每一种病毒含有的特定字符串进行扫描,如果在被检测对象内部发现了某一种特定字节串,就表明发现了该字节串所代表的病毒。国外称这种按搜索法工作的病毒扫描软件为“Scanner”。这种病毒扫描软件由两部分组成:一部分是病毒代码库,含有经过特别选定的各种电脑病毒的代码串;另一部分是利用该代码库进行扫描的扫描程序,病毒扫描程序能识别的电脑病毒的数目完全取决于病毒代码库内所含病毒种类的多少。病毒代码串的选择是非常重要的,短小的病毒代码只有一百多个字节,长的也只有10KB字节。一定要在仔细分析程序之后选出最具代表特性的,足以将该病毒区别于其它病毒和该病毒的其它变种的代码串。一般情况下,代码串是由连续若干个字节组成的,但是有些扫描软件采用的是可变长串,即在串中包含有一个到几个“模糊”字节。扫描软件遇到这种串时,只要除“模糊”字节之外的字串都能完好匹配,就也能够判别出病毒。另外,特征串还必须能将病毒与正常的非病毒程序区,不然就会出现“假报、误报”。
特征字识别法
这是基于特征串扫描法发展起来的一种方式,运行速度较快、误报频率较低。特征字识别法只须从病毒体内抽取很少的几个关键特征字,组成特征字库。由于需要处理的字节很少,又不必进行串匹配,因此大大加快了识别速度,当被处理的程序很大时,用这种办法比较合适。由于特征字识别法更注意电脑病毒的“程序活性”,因此减少了错报的可能性。使用基于特征串扫描法的查病毒软件方法与使用基于特征字识别法的查病毒软件方法是一样的,只要运行查毒程序,就能将已知的病毒检查出来。这两种方法的使用,都须要不断地对病毒库进行扩充,一旦捕捉到病毒,经过提取特征并加入到病毒库,就能使查病毒程序多检查出一种新病毒来。
分析法
这种方法一方面可以确认被观察的磁盘引导区和程序中是否含有病毒,另一方面可以辨认病毒的类型和种类,判定是否为一种新病毒,另外还可以搞清楚病毒体的大致结构,提取用于特征识别的字节串或特征字,增添到病毒代码库中供病毒扫描和识别程序使用。同时,详细地分析病毒代码,还有助于制定相应的反病毒方案。与前三种检测病毒的方法不同,使用分析法检测病毒,除了要具有相关的知识外,还需要使用Debug、Proview等分析工具程序和专用的试验用计算机。因为即使是很精通病毒的技术人员,使用性能完善的分析软件,也不能完全保证在短时间内将病毒代码分析清楚;而病毒则有可能在被分析阶段继续传染甚至发作,把软盘、硬盘内的数据完全毁坏掉,所以分析工作必须在专门的试验用PC机上进行,不怕其中的数据被破坏。不具备必要的条件,不要轻易开始分析工作。很多电脑病毒采用了自加密、抗跟踪等技术,使得分析病毒的工作经常是冗长枯燥的。特别是某些文件型病毒的源代码可达10KB以上,与系统的牵扯层次很深,使详细的剖析工作十分复杂。病毒检测的分析法是反病毒工作中不可或缺的重要技术,任何一个性能优良的反病毒系统的研制和开发都离不开专门人员对各种病毒详尽、认真的分析。
分析法分为静态和动态两种。静态分析是指利用Debug等反汇编程序将病毒代码打印成反汇编后的程序清单进行分析,看病毒分成哪些模块,使用了哪些系统调用,采用了哪些技巧,如何将病毒感染文件的过程翻转为清除病毒、修复文件的过程,哪些代码可被用做特征码以及如何防御这种病毒等等。分析人员的素质越高,分析过程就越快,理解也就越深;动态分析则是指利用Debug等程序调试工具在内存带毒的情况下,对病毒作动态跟踪,观察病毒的具体工作过程,以进一步在静态分析的基础上理解病毒工作的原理。在病毒编码比较简单的情况下,动态分析不是必须的。但是,当病毒采用了较多的技术手段时,就必须使用动、静相结合的分析方法才能完成整个分析过程。
综上所述,利用原始备份和被检测程序相比较的方法适合于不用专用软件,可以发现异常情况的场合,是一种简单、基本的病毒检测方法;扫描特征串和识别特性字的方法更适用于广大PC机用户使用,方便而又迅速;但对新出现的病毒会出现漏检的情况,须要与分析和比较法结合使用。
通过采取技术上和管理上的措施,电脑病毒是完全可以防范的。
【编辑推荐】