七招教你如何发现病毒
1 比较法
比较法是用原始备份与被检测的引导扇区或被检测的文件进行比较。比较时可以靠打印的代码清单(比如Debug的D命令输出格式)进行比较,或用程序来进行比较(如DOS的DISKCOMP、FC或PCTOOLS等其他软件)。这种比较法不需要专用的查计算机病毒程序,只要用常规DOS软件和PCTOOLS等工具软件就可以进行。而且用这种比较法还可以发现那些尚不能被现有的查计算机病毒程序发现的计算机病毒。因为计算机病毒传播得很快,新的计算机病毒层出不穷,由于目前还没有做出通用的能查出一切计算机病毒,或通过代码分析,可以判定某个程序中是否含有计算机病毒的查毒程序,发现新计算机病毒就只有靠比较法和分析法,有时必须结合这两者来一同工作。
使用比较法能发现异常,如文件的长度有变化,或虽然文件长度未发生变化,但文件内的程序代码发生了变化。对硬盘主引导扇区或对DOS的引导扇区做检查,比较法能发现其中的程序代码是否发生了变化。由于要进行比较,保留好原始备份是非常重要的,制作备份时必须在无计算机病毒的环境里进行,制作好的备份必须妥善保管,写好标签,并加上写保护。
比较法的好处是简单、方便,不需专用软件。缺点是无法确认计算机病毒的种类名称。另外,造成被检测程序与原始备份之间差别的原因尚需进一步验证,以查明是由于计算机病毒造成的,或是由于DOS数据被偶然原因,如突然停电、程序失控、恶意程序等破坏的。这些要用到以后讲的分析法,查看变化部分代码的性质,以此来确证是否存在计算机病毒。另外,当找不到原始备份时,用比较法就不能马上得到结论。从这里可以看到制作和保留原始主引导扇区和其他数据备份的重要性。
2 加总比对法
根据每个程序的档案名称、大小、时间、日期及内容,加总为一个检查码,再将检查码附于程序的后面,或是将所有检查码放在同一个数据库中,再利用此加总对比系统,追踪并记录每个程序的检查码是否遭更改,以判断是否感染了计算机病毒。一个很简单的例子就是当您把车停下来之后,将里程表的数字记下来。那么下次您再开车时,只要比对一下里程表的数字,那么您就可以断定是否有人偷开了您的车子。这种技术可侦测到各式的计算机病毒,但最大的缺点就是误判断高,且无法确认是哪种计算机病毒感染的。对于隐形计算机病毒也无法侦测到。
3 搜索法
搜索法是用每一种计算机病毒体含有的特定字符串对被检测的对象进行扫描。如果在被检测对象内部发现了某一种特定字节串,就表明发现了该字节串所代表的计算机病毒。国外对这种按搜索法工作的计算机病毒扫描软件叫Virus Scanner。计算机病毒扫描软件由两部分组成:一部分是计算机病毒代码库,含有经过特别选定的各种计算机病毒的代码串;另一部分是利用该代码库进行扫描的扫描程序。目前常见的防杀计算机病毒软件对已知计算机病毒的检测大多采用这种方法。计算机病毒扫描程序能识别的计算机病毒的数目完全取决于计算机病毒代码库内所含计算机病毒的种类多少。显而易见,库中计算机病毒代码种类越多,扫描程序能认出的计算机病毒就越多。计算机病毒代码串的选择是非常重要的。短小的计算机病毒只有一百多个字节,长的有上万字节的。如果随意从计算机病毒体内选一段作为代表该计算机病毒的特征代码串,可能在不同的环境中,该特征串并不真正具有代表性,不能用于将该串所对应的计算机病毒检查出来。选这种串做为计算机病毒代码库的特征串就是不合适的。
另一种情况是代码串不应含有计算机病毒的数据区,数据区是会经常变化的。代码串一定要在仔细分析了程序之后才选出最具代表特性的,足以将该计算机病毒区别于其他计算机病毒的字节串。选定好的特征代码串是很不容易的,是计算机病毒扫描程序的精华所在。一般情况下,代码串是连续的若干个字节组成的串,但是有些扫描软件采用的是可变长串,即在串中包含有一个到几个“模糊”字节。扫描软件遇到这种串时,只要除“模糊”字节之外的字串都能完好匹配,则也能判别出计算机病毒。
除了前面说的选特征串的规则外,最重要的是一条是特征串必须能将计算机病毒与正常的非计算机病毒程序区分开。不然将非计算机病毒程序当成计算机病毒报告给用户,是假警报,这种“狼来了”的假警报太多了,就会使用户放松警惕,等真的计算机病毒一来,破坏就严重了;再就是若将这假警报送给杀计算机病毒程序,会将好程序给“杀死”了。
使用特征串的扫描法被查计算机病毒软件广泛应用。当特征串选择得很好时,计算机病毒检测软件让计算机用户使用起来很方便,对计算机病毒了解不多的人也能用它来发现计算机病毒。另外,不用专门软件,用PCTOOLS等软件也能用特征串扫描法去检测特定的计算机病毒。
这种扫描法的缺点也是明显的。第一是当被扫描的文件很长时,扫描所花时间也越多;第二是不容易选出合适的特征串;第三是新的计算机病毒的特征串未加入计算机病毒代码库时,老版本的扫毒程序无法识别出新的计算机病毒;第四是怀有恶意的计算机病毒制造者得到代码库后,会很容易地改变计算机病毒体内的代码,生成一个新的变种,使扫描程序失去检测它的能力;第五是容易产生误报,只要在正常程序内带有某种计算机病毒的特征串,即使该代码段已不可能被执行,而只是被杀死的计算机病毒体残余,扫描程序仍会报警;第六是不易识别多维变形计算机病毒。不管怎样,基于特征串的计算机病毒扫描法仍是今天用得最为普遍的查计算机病毒方法。
4 分析法
一般使用分析法的人不是普通用户,而是防杀计算机病毒技术人员。使用分析法的目的在于:
1. 确认被观察的磁盘引导扇区和程序中是否含有计算机病毒;
2. 确认计算机病毒的类型和种类,判定其是否是一种新的计算机病毒;
3. 搞清楚计算机病毒体的大致结构,提取特征识别用的字节串或特征字,用于增添到计算机病毒代码库供计算机病毒扫描和识别程序用;
4. 详细分析计算机病毒代码,为制定相应的防杀计算机病毒措施制定方案。
上述四个目的按顺序排列起来,正好是使用分析法的工作顺序。使用分析法要求具有比较全面的有关计算机、DOS、Windows、网络等的结构和功能调用以及关于计算机病毒方面的各种知识,这是与其他检测计算机病毒方法不一样的地方。
要使用分析法检测计算机病毒,其条件除了要具有相关的知识外,还需要反汇编工具、二进制文件编辑器等分析用工具程序和专用的试验计算机。因为即使是很熟练的防杀计算机病毒技术人员,使用性能完善的分析软件,也不能保证在短时间内将计算机病毒代码完全分析清楚。而计算机病毒有可能在被分析阶段继续传染甚至发作,把软盘硬盘内的数据完全毁坏掉,这就要求分析工作必须在专门设立的试验计算机机上进行,不怕其中的数据被破坏。在不具备条件的情况下,不要轻易开始分析工作,很多计算机病毒采用了自加密、反跟踪等技术,使得分析计算机病毒的工作经常是冗长和枯燥的。特别是某些文件型计算机病毒的代码可达10Kb以上,与系统的牵扯层次很深,使详细的剖析工作十分复杂。
5 人工智能陷阱技术和宏病毒陷阱技术
人工智能陷阱是一种监测计算机行为的常驻式扫描技术。它将所有计算机病毒所产生的行为归纳起来,一旦发现内存中的程序有任何不当的行为,系统就会有所警觉,并告知使用者。这种技术的优点是执行速度快、操作简便,且可以侦测到各式计算机病毒;其缺点就是程序设计难,且不容易考虑周全。不过在这千变万化的计算机病毒世界中,人工智能陷阱扫描技术是一个至少具有主动保护功能的新技术。
宏病毒陷阱技术(MacroTrap)是结合了搜索法和人工智能陷阱技术,依行为模式来侦测已知及未知的宏病毒。其中,配合OLE2技术,可将宏与文件分开,使得扫描速度变得飞快,而且更可有效地将宏病毒彻底清除。
6 软件仿真扫描法
该技术专门用来对付多态变形计算机病毒(Polymorphic/MutationVirus)。多态变形计算机病毒在每次传染时,都将自身以不同的随机数加密于每个感染的文件中,传统搜索法的方式根本就无法找到这种计算机病毒。软件仿真技术则是成功地仿真CPU执行,在DOS虚拟机(Virtual Machine)下伪执行计算机病毒程序,安全并确实地将其解密,使其显露本来的面目,再加以扫描。
7 先知扫描法
先知扫描技术(VICE,Virus Instruction Code Emulation)是继软件仿真后的一大技术上突破。既然软件仿真可以建立一个保护模式下的DOS虚拟机,仿真CPU动作并伪执行程序以解开多态变形计算机病毒,那么应用类似的技术也可以用来分析一般程序,检查可疑的计算机病毒代码。因此先知扫描技术将专业人员用来判断程序是否存在计算机病毒代码的方法,分析归纳成专家系统和知识库,再利用软件模拟技术(Software Emulation)伪执行新的计算机病毒,超前分析出新计算机病毒代码,对付以后的计算机病毒。
此文章节选自《计算机病毒与木马程序剖析》