未知病毒程序的识别及清除方法

文档序号:6554557阅读:419来源:国知局
专利名称:未知病毒程序的识别及清除方法
技术领域
本发明涉及一种未知病毒程序的识别及清除方法,特别是涉及一种对于未知病毒程序的识别方法以及清除该病毒程序的方法。
背景技术
通常的反病毒程序中,对于病毒程序的识别通常采用特征代码扫描技术。反病毒程序由两部分组成一部分是病毒程序代码库,含有经过特别选定的各种计算机病毒程序的特征代码串;另一部分是利用该代码库对待检测程序进行扫描的扫描程序和清除程序。通过查找待检测程序中是否存在病毒程序代码库中的特征代码串来判断待检测程序是否为病毒程序。病毒程序扫描程序能识别的计算机病毒程序的数目完全取决于病毒程序代码库内所含病毒程序的特征代码串的数量有多少。显而易见,所述病毒程序代码库中病毒程序代码特征代码串的数量越多,扫描程序能识别出的病毒程序就越多。特征码查毒方案实际上是人工查毒经验的简单表述,它再现了人工辨识病毒程序的一般方法,采用了“同一病毒程序或同类病毒程序的某一部分代码相同”的原理,也就是说,如果病毒程序及其变种、变形病毒程序具有同一性,则可以对这种同一性进行描述,并通过对程序体与描述结果(亦即“特征码”)进行比较来查找病毒程序。但是并非所有病毒程序都可以描述其特征码,很多病毒程序都难以描述,甚至无法用特征码进行描述。并且特征码识别方法需要技术人员预先分析得出病毒程序的特征码,所以实际上只能识别已知病毒程序,对未知病毒程序不能进行有效的识别和清除。
申请号为01117726.8号的中国发明专利公开了一种采用病毒程序行为感染实验法诊断病毒程序的方法。该方法是指先运行待检测程序,再运行足够多的确切知道不带毒的正常程序作为诱饵,然后观察这些正常程序的长度和校验和,如果发现有的程序长度增长,或者校验和发生变化等情况,就可以判断出该待检测程序是否为病毒程序。当然,为了保证本计算机系统的安全,一般都会利用程序模拟一个CPU,它可以像真正CPU一样取值,译码,执行,以及模拟一段代码在真正CPU上运行得到的结果。但是由于所述的病毒程序行为感染分析法需要模拟一个CPU,甚至整个操作系统,以及需要采用足够多的诱饵诱发待检测程序,所以会导致所述方法占用较大的系统空间以及识别病毒程序的效率低下。

发明内容
鉴于上述问题,本发明要解决的技术问题是提供一种不仅仅能识别已知病毒程序,也可以识别未知病毒程序的未知病毒程序的识别方法以及清除方法。
为解决上述技术问题,本发明提出了一种未知病毒程序的识别方法,包括获取待检测程序的行为数据;根据获得的所述待检测程序的行为数据或行为数据集合以及预置的病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序。
所述方法还包括建立经验库,用于存储病毒程序的行为数据或者行为数据的集合,以及存储病毒程序从行为数据到结果数据的过程表达式,所述过程表达式包括行为数据和结果数据以及从行为到结果的对应关系数据;以及,将获得的所述待检测程序的行为数据或行为数据集合与所述经验库中的行为数据进行比较,得到所述行为数据或者行为数据集合导致的操作结果数据。
所述方法还包括建立原则库,用于存储病毒程序的破坏性操作结果数据;以及,比较行为数据或者行为数据集合导致的操作结果数据以及所述原则库中的破坏性操作结果数据,判断所述待检测程序是否为病毒程序。
所述方法还可以只包括建立经验库,用于存储病毒程序从行为到结果的过程表达式,所述过程表达式包括病毒程序的行为数据或行为数据集合、结果数据、从行为到结果的对应关系数据以及结果数据的各种排列组合的集合;以及,将获得的所述待检测程序的行为数据或行为数据集合与所述经验库中的行为数据或行为数据集合进行比较,得到所述行为数据或者行为数据集合导致的操作结果数据;以及,将所述操作结果数据与所述经验库中的结果数据、以及结果数据的各种排列组合的集合进行比较,判断所述待检测程序是否为病毒程序。
所述方法还包括对所述待检测程序进行特征码识别,判断所述待检测程序是否为病毒程序。
所述方法还包括将获得的所述待检测程序的行为数据或行为数据集合按照经验库中行为数据或者行为数据集合的顺序进行排列。
本发明可以按照下述步骤获取待检测程序的行为数据获得已知病毒程序的破坏性行为数据;根据所述破坏性行为数据设置对应的控制处理程序;使控制处理程序获得对所述破坏性行为数据操作的控制权;待检测程序的破坏性行为数据调用相应的控制处理程序,由所述控制处理程序记录所述待检测程序的行为数据。
所述方法还包括如果所述待检测程序被判定为病毒程序,则将所述待检测程序的行为数据存储至所述经验库中的行为信息中,将所述待检测程序行为对应的结果数据存储至所述经验库中的结果信息中,并建立所述待检测程序的行为数据和结果数据之间的对应关系。
所述方法还包括如果所述待检测程序被判定为病毒程序,则将所述待检测程序的行为数据或者行为数据集合存储为病毒程序的行为数据或者行为数据集合。
所述方法还包括如果所述待检测程序被判定为病毒程序,存储病毒程序的破坏性操作结果数据或破坏性操作结果数据排列组合后的数据集合。
所述方法还包括建立有害行为库,用于存储病毒程序的行为数据或者行为数据集合。
本发明提供的未知病毒程序的清除方法,包括获取待检测程序的行为数据;根据获得的所述待检测程序的行为数据或行为数据集合以及预置的典型病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序;如果判定所述待检测程序是病毒程序,则清除所述待检测程序。
所述未知病毒程序的清除方法,还包括如果判定所述待检测程序是病毒程序,根据获得的所述待检测程序的行为数据或行为数据集合,建立对应的逆行为操作步骤;执行所述逆行为操作步骤。
与现有技术相比,本发明具有至少以下的优点本发明通过实践中总结,得出一些典型病毒程序的典型行为,获取待检测程序的行为数据,进行行为的比较,从而判断所述待检测程序是否为病毒程序。所以本专利不仅仅能识别已知病毒程序,也可以相当准确的识别多数的未知病毒程序。
本发明通过经验库或者原则库存储病毒程序的一些信息,通过一定的比较或者逻辑分析过程,即同时考虑所述待检测程序的行为和结果,故可以实现未知病毒程序的精确识别,提高未知病毒程序识别的准确度和效率。并且所述的经验库和原则库还可以在识别未知病毒程序的过程中进行自动完善,故可以提高未知病毒程序识别的准确度和效率。
本发明还提供了一种未知病毒程序的清除方法,不仅可以清除病毒程序,并且可以根据所述病毒程序的行为,建立并执行所述病毒程序的逆行为操作,故可以实现对被病毒程序破坏的数据的恢复,以解决虽然清除了病毒程序却不能恢复被破坏的数据的问题。


下面结合附图和具体实施方式
对本发明作进一步详细的说明。
图1是本发明所述未知病毒程序识别方法的第一实施例的步骤流程图;图2是本发明所述未知病毒程序识别方法的第二实施例的步骤流程图;图3是本发明所述未知病毒程序识别方法中的获取待检测程序的行为数据的步骤流程图;图4是本发明所述未知病毒程序识别及清除方法的步骤流程图;图5是系统功能调用表的结构示意图;图6是系统功能调用程序实际存储区的示意图;图7是图5所示的系统功能调用表存储有相应的控制处理程序时的结构示意图;图8是图7所示存储实例的功能调用程序实际存储区的示意图;图9是存储有所述控制处理程序的一个独立的操作行为调用表的结构示意图;图10是将所有控制处理程序存储为另一个独立的操作行为调用表的结构示意图。
具体实施例方式
本发明的核心思想在于获取待检测程序的行为数据,并与已经获得的病毒程序的特殊行为数据,即与破坏性操作有关的行为数据进行比较,从而判断所述待检测程序是否为病毒程序。所以本发明方法不仅仅能识别已知病毒程序,通过行为数据的比较,也可以识别出多数的未知病毒程序。
参照图1,是本发明所述未知病毒程序识别方法的第一实施例的流程图。
图1所述的方法包括以下步骤步骤s1,获取待检测程序的行为数据。所述待检测程序的行为数据,其实质就是一系列能够完成特定功能或结果的源代码序列块,即能够完成特定功能或结果的程序操作指令或以及程序操作指令和操作参数或具体的程序操作指令的集合或程序操作指令以及操作参数的集合。所述的序列块可以由反病毒技术人员人工和借助辅助程序分析得出,采用一般分析病毒程序的方式对该待检测程序进行分析即可。所述分析过程除了反病毒技术人员之外,还需要DEBUG、PROVIEW等分析用工具程序和专用的试验用计算机。因为所述待检测程序为病毒程序,有可能在被分析阶段继续传染甚至发作,把软盘、硬盘内的数据完全破坏,这就要求分析操作必须在专门设立的试验用PC机上进行,一面带来不必要的损失。
通常的分析病毒程序的步骤可以分为动态和静态两种。所述动态分析则是指利用DEBUG等程序调试工具在内存加载病毒程序的情况下,对病毒程序做动态跟踪,观察病毒程序的具体工作过程,以理解病毒程序工作的原理。在病毒程序编码比较简单时,动态分析不是必须的。但当病毒程序采用了较多的技术手段时,则必须使用动、静态相结合的分析方法才能完成整个分析过程。例如F_lip病毒程序采用随机加密的手段,利用对病毒程序解密程序的动态分析才能完成解密工作,从而进行下一步的静态分析。所述静态分析是指利用DEBUG等反汇编程序将病毒程序代码形成反汇编后的程序清单进行分析,看病毒程序可以分为哪些模块,使用了哪些系统调用功能程序,采用了哪些技巧,如何将病毒程序感染文件的过程转化为清除病毒程序、修复文件的过程,哪些代码可被用做特征码以及如何防御这种病毒程序导致的破坏等。
现有技术中,如果进行上述分析,能够获得病毒程序的特征码,存入病毒程序特征码库中,以后即可根据特征码实现病毒程序的识别。由于特征码识别法只能识别已知的病毒程序,因此,为识别出未知病毒程序,在本实施方式中需要分析得出所述待检测程序的行为操作数据,即一系列完成特定功能或结果的源代码序列块,根据所述源代码序列块判断所述待检测程序是否为病毒程序。当然,所述获取待检测程序行为数据的步骤也可以由计算机自行完成,该部分的实施例在后面进行详述。
步骤s2,根据获得的所述待检测程序的行为数据或行为数据集合以及预置的病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序。
所述预置的病毒程序的行为数据或者行为数据集合可以采用数据库的方式进行存储,以方便存储和调用。所述病毒程序的行为数据可以通过上述的人工分析过程或者计算机分析过程得出,也可以直接采用现有的对病毒程序的行为分析结果。所述病毒程序的行为数据也就是符合一定条件的源代码序列块。
将获得的所述待检测程序的行为数据或行为数据集合,与预置的病毒程序的行为数据或者行为数据集合进行比较,就可以判断出所述待检测程序是否为病毒程序。当然,也可以采用其他本领域技术人员熟悉的分析方法,达到判断所述待检测程序是否为病毒程序之目的。所述判断采用的规则可以是本领域技术人员根据经验得出的,可能存在相当的差异,当然,这些规则都可以给出所述待检测程序是病毒程序或者不是病毒程序的判断结果,只不过判断的准确度有一些差异而已。而且由于采用的分析方法的不同肯定会导致判断采用的规则有所不同,所以本文在此不对采用的分析方法和判断的规则作一定的限制,只要利用了本发明所述的行为数据比较的方式就在本发明的构思之内。以下以一种判断规则为例进行说明。
可以通过步骤s1中的人工或者计算机分析的过程,对已知的病毒程序进行分析,得出已知病毒程序的行为数据或者行为数据的集合(下文统一称为行为数据),并可以将所述行为数据存储到数据库中,本文将该数据库称为有害行为数据库。所述有害行为数据库中存储的是各种病毒程序的一系列行为操作数据,所述病毒程序的行为操作数据还可以是经过技术人员依一定规则选出的,例如选择病毒程序要实施破坏时经常执行的操作行为数据。例如采用13H中断写磁盘的操作,是病毒程序的共同行为,而且比较特殊。经过操作行为数据的选择,有害行为数据库可以存储较少的用于判断未知程序的数据量,从而提高病毒程序行为数据的比较速率。当然,也可以通过计算机对已知病毒程序进行自动分析,记录所述病毒程序的所有行为数据,或者通过计算机按照预定义的规则对所述病毒程序的行为数据进行筛选记录。
这样,将所述待检测程序的行为数据和有害行为数据库中的行为数据进行比较,就能够判断出所述待检测程序是否为病毒程序。
判断情况A当所述待检测程序的行为数据与所述有害行为库中存储的病毒程序行为数据相同或者相似,就可以得出待检测程序就是已知病毒程序类型或者已知病毒程序类型的一个变种的结论。所述的相同或者相似,可以预定义一个或者多个参数,当所述待检测程序的行为数据和所述典型行为数据的匹配或者包括程度达到或者超过所述参数时,可以认为相同或者相似。
具体的,在一个实施例中,某待检测程序的行为数据为行为1、行为2、行为3、行为4、行为5、行为6、行为7、行为8。
在有害行为库中存储的某病毒程序的系列行为数据为行为2、行为3、行为4、行为5、行为6。
将上述行为数据比较之后得出所述待检测程序行为完全包含了该病毒程序的行为特征,则可直接判断此待检测程序是该病毒程序的一个变种。
判断情况B当所述待检测程序的行为数据与所述有害行为库中的病毒程序行为数据中的任何一条都不符合,则判定所述待检测程序为合法程序。
具体的,在一个实施例中,某待检测程序的行为数据为行为-1、行为-2、行为-3;在所述有害行为库中的有害行为数据包括行为1、行为2、行为3、行为4、行为5、行为6......行为n(n为自然数);将上述行为数据比较之后得出所述待检测程序行为不包含有害行为库中存储的任何一个行为,认为所述待检测程序合法。
判断情况C当所述待检测程序的行为数据与所述有害行为库中存储的病毒程序行为数据比较之后,不属于上述判断情况A、B中的任何一个,则需要进行进一步识别。当然这样进一步识别的步骤流程,只是为了增加未知病毒程序识别的准确度,也可以判断情况只有两个分支是或者否。
具体的,在一个实施例中,一个待检测程序程序的行为数据为行为1、行为2、行为3、行为4;在所述有害行为库中某病毒程序的系列行为包括行为2、行为3、行为4、行为5、行为6;比较之后得出所述待检测程序行为只具有某种病毒程序的系列行为的一部分,则不能直接判断待检测程序的性质,需要对所述待检测程序作进一步判断。当然,也可以直接给出结论,将该待检测程序视为不是病毒程序或者是病毒程序,但是这样的结论是不够精确的。为了提高病毒程序的识别程度,需要对所述待检测程序作进一步判断,以下步骤是对所述待检测程序的继续识别过程。
步骤s3,建立经验库,所述经验库存储病毒程序的行为数据或者行为数据的集合,以及存储从行为数据到结果数据的过程表达式,所述过程表达式包括行为数据和结果数据以及从行为数据到结果数据的对应关系数据;还可以建立一个原则库,所述原则库用于存储病毒程序的破坏性操作结果数据。
所述经验库用来存储病毒程序的“一个行为导致的结果”或“多个行为按照先后顺序依次完成后导致的结果”的“行为逻辑推理表达式”或“离散数学表达式”的集合。无论采用哪种表达式进行表达,实际上都是说明了所述病毒程序从行为到结果的过程,每一个表达式都是经验库中的一个存储元素,经验库中存储的所有表达式构成了一个完整的集合。
具体的,在一个实施例中行为逻辑推理表达式(行为A)与(行为B)导致(结果AB)以实际程序举例说明病毒程序“自动查找a.exe文件的文件位置,然后将a.exe文件的文件位置添加到注册表相应的启动项里,让操作系统启动后自动运行a.exe文件。”(行为A)等同于“自动查找a.exe文件的文件位置”。
(行为B)等同于“将a.exe文件的文件位置添加到注册表相应的启动项里”。
(结果AB)等同于“操作系统启动后自动运行a.exe文件”。
所述原则库存储病毒程序的破坏性操作结果,所述破坏性操作结果一般可以包括对计算机操作系统被病毒程序破坏后的恶性结果,例如非常规读写操作、删除某系统文件、导致内存冲突、破坏硬盘分区表等等。所述的一个破坏性操作结果就是所述原则库的一个存储元素。当然,所述破坏性操作结果也可以包括可能破坏系统的操作结果,因为病毒程序进行的一些操作单独看来并不一定是具有破坏性的,合法程序也进行这样的操作。在经验库中的每个行为都可以有相对应的结果,行为的组合也可以有相对应的结果。
步骤s4,将获得的所述待检测程序的行为数据进行顺序排列,如<(行为A)与(行为B)....与(行为N)>,并与所述经验库中的行为数据进行比较。这里所述的顺序可以是病毒程序的行为数据在病毒程序中的排列顺序,也可以是经验库中存储的病毒程序的行为数据的顺序排列。所述经验库中的行为数据是指行为逻辑推理表达式中“导致”字段前的信息。所述待检测程序的行为数据按照经验库中行为数据的顺序进行排列,即可以得到一系列的行为序列,依次与所述经验库中存储的行为数据进行比较。如果所述经验库中存在相匹配的行为信息,则执行步骤s5;如果所述经验库中不存在任何相匹配的行为信息,则可以判定所述待检测程序为合法程序。所述将获得的所述待检测程序的行为数据按照顺序进行排列之目的是在于提高比较操作的效率和准确度,当然也可以不排列待检测程序的行为数据直接进行比较。
步骤s5,根据所述经验库中匹配的行为数据所对应的结果数据以及所述原则库中的破坏性操作结果,即比较行为数据或者行为数据集合导致的操作结果数据以及所述原则库中的破坏性操作结果数据,判断所述待检测程序是否为病毒程序。
所述匹配是指步骤s4中比较后的一种结果。所述经验库中匹配的行为数据所对应的结果数据是指行为逻辑推理表达式中“导致”字段后的数据。所述判断所采用的规则可以是本领域技术人员根据经验得出的,可以存在相当的差异,当然,这些规则都可以给出所述待检测程序是病毒程序或者不是病毒程序的判断结果,只不过判断的准确度有一些差异而已。
本实施方式采用将所述经验库中匹配的行为数据所对应的结果数据和所述原则库中的破坏性操作结果进行比较的分析方法,如果比较之后所述原则库中的任何一个存储元素被匹配,则可以判定所述待检测程序为未知的病毒程序;否则,可以判定所述待检测程序为合法程序。
当然,所述步骤s4、s5还可以涉及比较、逻辑分析或者逻辑判断的过程,这些分析方法的加入,都可以完善本实施方式识别未知病毒程序的准确度以及效率。这些分析方法对于本领域一般技术人员来说是熟知的,在此就不再赘述。
对于图1中的步骤s4、步骤s5,参照以下具体例子进行说明。例假设某一个病毒程序的行为是“自动查找a.exe文件的文件位置,然后将a.exe文件的文件位置添加到注册表相应的启动项里,让操作系统启动后自动运行a.exe文件。”那么“自动查找a.exe文件的文件位置”(此为行为A)导致“获取了a.exe文件的文件位置”(此为结果A),“将a.exe文件的文件位置添加到注册表相应的启动项里”(此为行为B)导致“让操作系统启动后自动运行a.exe文件”(此为结果B)假设下述的“行为逻辑推理表达式1”和“行为逻辑推理表达式2”都是经验库中的存储元素,并且假设(结果B)是原则库中的一个存储元素,则行为逻辑推理表达式1(行为A)导致(结果A);行为逻辑推理表达式2(行为B)导致(结果B);步骤s4,将所述病毒程序的“行为”数据与所述经验库里的存储元素进行比较的过程如下<(行为A)>等同或者匹配于<行为逻辑推理表达式1的行为信息,即指“行为逻辑推理表达式1”里“导致”字段前的信息>。
<(行为B)>等同或者匹配于<行为逻辑推理表达式2的行为信息,即指“行为逻辑推理表达式2”里“导致”字段前的信息>。
步骤s5,将所述经验库中匹配的行为信息对应的结果数据,即指“行为逻辑推理表达式”里“导致”字段后的数据,与“原则库”里的存储元素进行比较的过程如下<(结果A)不等同或者匹配于“原则库”中的任何一个存储元素>;<(结果B)等同或者匹配于“原则库”中的其中一个存储元素>;
分析处理的过程情况2(结果A)不是“原则库”中的任何一个存储元素。
(结果B)是“原则库”中的其中一个存储元素。
(结果A)是(结果B)成立的前提条件。所述前提条件的判定可以根据数据读写操作、获取、调用等操作之间的逻辑关系,通过计算机进行判定。
判断结论是病毒程序。
上述的判定规则中,不仅要求(结果B)是“原则库”中的其中一个存储元素,而且要求(结果A)对(结果B)有贡献,满足这两个条件,才能判断所述待检测程序是病毒程序。
当然,所述的判定规则也可以只要求满足(结果A)或者(结果B),其中任何一个是“原则库”中的其中一个存储元素;就可以判定所述待检测程序是病毒程序。由于采用的判定规则的不同,可能会导致判定结果的准确度有所差异,但是只要采用了行为以及结果的共同比较过程,则就属于本发明的构思之一。
另外,也可以仅建立经验库,用于存储病毒程序从行为到结果的过程表达式,这里,所述过程表达式包括病毒程序的行为数据或行为数据集合、结果数据、从行为到结果的对应关系数据以及结果数据的各种排列组合的集合;这样,就可以将获得的所述待检测程序的行为数据或行为数据集合与所述经验库中的行为数据或行为数据集合进行比较,得到所述行为数据或者行为数据集合导致的操作结果数据,进一步将所述操作结果数据与所述经验库中的结果数据、以及结果数据的各种排列组合的集合进行比较,也可以判断出所述待检测程序是否为病毒程序。
具体参照图2,是本发明所述未知病毒程序识别方法的第二实施例的步骤流程图,包括以下步骤步骤21,获取待检测程序的行为数据。所述待检测程序的行为数据,其实质就是一系列能够完成特定功能或结果的源代码序列块,所述的序列块可以预先分析得出,当然,所述获取待检测程序的行为数据的步骤也可以由计算机自行完成,该部分的实施例在后面进行详述。
步骤22,根据获得的所述待检测程序的行为数据以及预置的病毒程序的行为数据,判断所述待检测程序是否为病毒程序。所述预置的病毒程序的行为数据可以采用数据库的方式进行存储,以方便存储和调用。所述病毒程序的行为数据可以通过分析过程得出,也可以直接采用现有的对病毒程序的行为分析结果。所述的病毒程序的行为数据也就是符合一定条件的源代码序列块。
图2所示方法中的大部分步骤和图1所示方法中的步骤相类似,在此不再赘述。图2所示识别方法与图1所示识别方法的主要区别在于提高未知病毒程序识别准确度的步骤23、24、25有所不同,以下对此部分进行说明,未详尽信息请参见图1所示方法的说明。
步骤23,建立经验库,所述经验库用于存储病毒程序从行为到结果的过程表达式,包括行为数据和结果数据以及从行为到结果的对应关系数据;并将所述的结果数据进行排列组合,形成结果数据的排列组合的集合。
步骤24,将获得的所述待检测程序的行为数据按照一定的顺序进行排列如<(行为A)与(行为B)....与(行为N)>,并与所述经验库中存储的行为信息进行比较。所述经验库中的行为数据是指行为逻辑推理表达式中“导致”字段前的信息。所述待检测程序的行为数据按照一定的顺序进行排列后,即可以得到一系列的行为序列,依次与所述经验库中的行为数据进行比较。如果所述经验库中存在相匹配的行为数据,则执行步骤25;如果所述经验库中不存在任何相匹配的行为信息,则可以判定所述待检测程序为合法程序。
步骤25,将所述经验库中匹配的行为数据所对应的结果数据按照一定的顺序进行排列,并与所述经验库中的结果数据排列组合的集合进行比较,就可以判断出所述待检测程序是否为病毒程序。
所述按照一定的顺序还可以是指按照结果产生的顺序,<如(结果A)与(结果B)....与(结果N)>。所述经验库中匹配的行为数据所对应的结果数据是指行为逻辑推理表达式中“导致”字段后的数据。同样,所述判断采用的规则可以是本领域技术人员根据经验得出的,可以存在相当的差异,这些规则都可以给出所述待检测程序是病毒程序或者不是病毒程序的判断结果,只不过判断的准确度有一些差异而已。所述经验库中的结果数据排列组合的集合可以是所有的或者经过初步筛选的结果数据的排列组合;这样可以大大减小集合中排列组合的数量以及提高匹配效率。
所述将获得的所述待检测程序的行为数据按照一定的顺序进行排列,以及将所述经验库中匹配的行为信息所对应的结果信息按照其顺序进行排列,在于提高比较的效率和准确度,当然也可以不经过排列直接进行对比。
本实施方式可以采用将所述经验库中匹配的行为数据对应的结果数据按照一定的顺序进行排列,并与所述经验库中存储的结果数据的排列组合的集合进行比较,如果比较之后符合所述经验库中的结果数据排列组合的集合里的任何一个子集,则可以判定所述待检测程序为未知的病毒程序;否则,可以判定所述待检测程序为合法程序。
当然,所述步骤24、25还可以涉及比较、逻辑分析或者逻辑判断的过程,这些分析方法的加入,都可以完善本专利识别未知病毒程序的准确度以及效率。这些分析方法对于本领域一般技术人员来说是熟知的,在此就不再赘述。
对于步骤24、步骤25,参照以下具体例子进行说明。例假设一个病毒程序的行为“自动查找a.exe文件的文件位置,然后将a.exe文件的文件位置添加到注册表相应的启动项里,让操作系统启动后自动运行a.exe文件。”那么“自动查找a.exe文件的文件位置”(此为行为A)导致“获取了a.exe文件的文件位置”(此为结果A),“将a.exe文件的文件位置添加到注册表相应的启动项里”(此为行为B)导致“让操作系统启动后自动运行a.exe文件”(此为结果B)假设“行为逻辑推理表达式1”和“行为逻辑推理表达式2”都是经验库中的存储元素,假设(结果A)与(结果B)的组合排列是“结果数据排列组合的集合”里的其中一个子集。所述“(结果A)与(结果B)”中的“与”是逻辑上的用语“和”,即“and”。
行为逻辑推理表达式1(行为A)导致(结果A);行为逻辑推理表达式2(行为B)导致(结果B);那么,步骤24“行为”与“经验库”里的存储元素进行比较的过程中,<(行为A)>等同或者匹配于行为逻辑推理表达式1中的行为数据,即指“行为逻辑推理表达式1”里“导致”字段前的信息。
<(行为B)>等同或者匹配于行为逻辑推理表达式2的行为数据,即指“行为逻辑推理表达式2”里“导致”字段前的信息。
步骤25中,所述经验库中匹配的行为数据对应的结果数据,即指“行为逻辑推理表达式”中“导致”字段后的信息,将所述结果数据进行组合排列得到(结果A)与(结果B)。所述“(结果A)与(结果B)”中的“与”是逻辑上的用语。
分析处理的结果是(结果A)与(结果B)的组合排列是“结果数据排列组合的集合”中的一个子集。
进一步得到判断结果该待检测程序是病毒程序。
图1和图2示出的两种实施方式,提高识别未知病毒准确度和效率的方法,当然,还可以采用本领域技术人员熟悉的其他方法,但是由于篇幅有限,在此就不再赘述。当然,也可以将图1和图2示出的两种实施方式的有益部分合并在一起使用。所述的核心步骤是指图1和图2示出的步骤s1、s2和步骤21、22。
本实施方式所述的未知病毒程序的识别方法,还可以包括对所述待检测程序进行特征码识别,判断所述待检测程序是否为病毒程序。因为遇到待检测程序的时候,无法得知是已知病毒程序、合法程序或者未知病毒程序,所以可以先经过特征码识别步骤,已减轻本实施方式所述未知病毒程序的识别步骤的计算量。如果对比之后,所述已知的病毒程序特征码能够被所述待检测程序完全匹配,则说明所述待检测程序为已知病毒程序,这样就可以免除对已知病毒程序进行继续的行为判断,以提高检测效率。一般情况下,病毒程序特征码是连续的若干个字节组成的代码串,在病毒程序特征码中还可以包含有一个或几个“模糊”字节。当与这种类型的病毒程序特征码进行比较时,只要除“模糊”字节之外的字符串都能完好匹配,则说明该待检测程序为病毒程序。
如果所述待检测程序被判定为病毒程序,则将所述待检测程序的行为数据存储至所述经验库中的行为信息中,将所述待检测程序行为对应的结果数据存储至所述经验库中的结果信息中,并建立所述待检测程序的行为数据和结果数据之间的对应关系。这样,就可以实时的完善和增加所述经验库的数据。所述原则库中的存储元素一般可以不进行自动增加或者完善,因为对于计算机系统的破坏性操作结果基本是稳定不变的。
如果所述待检测程序被判定为病毒程序,则将所述待检测程序的行为数据存储为一类病毒程序的行为数据;用于完善预置的所述典型病毒程序的行为数据。
当然,所述获取待检测程序的行为数据的步骤也可以由计算机自行完成,参照图3,示出了一个由计算机自动完成获取待检测程序的行为数据的实施例。
步骤31,获取和分解已知病毒程序的破坏性操作行为。通过对病毒程序多年的观察、研究,发现病毒程序有一些行为,是病毒程序的共同行为,而且比较特殊。所述已知病毒程序的破坏性操作行为的获取和分解可以通过人工完成也可以通过计算机实现。所述的破坏性操作行为一般可以包括对计算机系统的非常规操作或者易造成恶性结果的操作。例如非常规读写操作、删除某系统文件、导致内存冲突、破坏硬盘分区表等等。下面列举一些具体的可以作为监测病毒程序的行为占用INT13H、修改DOS系统数据区的内存总量、对COM和EXE文件做写入动作、病毒程序与宿主程序的切换特征等。除了上述较为明显的破坏性操作行为,病毒程序一般还会包括较为正常的操作行为,如果单独或者组合起来有可能产生破坏数据的危险操作,则也属于本发明所述病毒程序的破坏性操作行为的范围内。
通常,一个病毒程序的破坏行为可以由一系列的执行破坏性操作的指令或指令集以及操作参数构成的,每一个所述的指令或指令集至少产生一个独立的破坏性操作行为。因此,分解现有病毒程序的破坏性操作行为,即是将已经存在的病毒程序中包含的独立的破坏性操作行为涉及的指令或指令集提取出来。例如,假设13H中断的03H或05H号功能调用涉及可能的破坏数据的危险操作,则13H中断的03H或05H号功能调用对应的指令就可以被看作是产生一个独立的破坏性操作行为的指令。假设,10H中断的02H号功能调用和11H的06H号功能调用组合在一起涉及可能的破坏数据的危险操作,则10H中断的02H号功能调用和11H的06H号功能调用对应的指令集合就可以被看作是产生一个独立的破坏性操作行为的指令集。如果一个被检测的程序具有这样的指令代码,就可以得知该被检测程序存在一个可能破坏性其他程序或数据的可疑操作行为,将这些行为收集起来,就可以通过程序的行为集合判断一个程序是否为病毒程序以及如何最大限度地恢复相应的病毒程序破坏的数据。
获取已知病毒程序的破坏性操作行为,也可以通过计算机辅助完成。例如采用申请号为01117726.8、名称为“检测和清除已知及未知计算机病毒的方法、系统和介质”的中国发明专利介绍的,以提供用于诱发病毒感染的感染对象来检测病毒的方法,就可以获得已知和未知病毒程序的破坏性操作行为。由于申请号为01117726.8的发明已经公开,在此不在赘述。
步骤32,根据所述破坏性操作行为设置或编制该操作行为对应的控制处理程序。
为此,当将现有病毒程序的破坏性操作行为分解出来以后,就可以根据所述破坏性操作行为编制该行为对应的控制处理程序,所述控制处理程序用于响应待检测程序的破坏性操作行为涉及的指令和参数,并反馈所述破坏性操作行为成功的信息以诱导该程序的下一个行为,同时记录所述待检测程序的该项破坏性操作行为。
假设,一个程序中的破坏性操作行为涉及的指令和参数为DEL(参数1;参数2;参数3),其中,DEL表示删除,参数1表示被删除的盘号,参数2表示被删除的簇号,参数3表示接受删除是否成功的变量,则该破坏性操作行为对应的控制处理程序可以是(1)WRITE(FILE1,“DEL(参数1;参数2;参数3)”);(2)WRITE(DEL(参数1;参数2;参数3),0,0,0);其中,第(1)行的指令表示将破坏性指令“DEL(参数1;参数2;参数3)”作为字符串记录进文件FILE1中;第(2)行的指令表示向将破坏性指令DEL(参数1;参数2;参数3)反馈操作成功的标志“0”。
步骤33,将所述控制处理程序嵌入操作系统,使控制处理程序获得对所述破坏性操作行为的控制权,这种控制权可以通过使控制处理程序获得优于操作系统的系统控制权而获得。
为了能够自动快速地检测并记录程序中可能出现的破坏性操作行为,以甄别该程序是否为病毒程序,需要所述控制处理程序获得对被检测程序出现的破坏性操作行为的控制权,以获得被检测程序中出现的破坏性操作行为,为此,采用将所述控制处理程序嵌入到操作系统中的办法使控制处理程序获得相应的破坏性操作行为的控制权;当然,也可以通过其他方式使控制处理程序获得系统的监控权从而检测并记录待检测程序的破坏性操作行为。如果采用将所述控制处理程序嵌入到操作系统中的方式,即可以通过将控制处理程序嵌入到操作系统的功能调用表实现;也可以将控制处理程序存储到一个独立的操作行为调用表,使其具有比操作系统的功能调用表更高级的优先权实现。例如任何操作系统中都会存在一个系统功能调用表,系统功能调用表根据需要可以有不同的结构。参考图5,图5所示的系统功能调用表包括两个字段,一个是编号字段,用于存储系统功能调用程序的编号;一个是功能调用地址字段,用于存储系统功能调用程序指针,即地址,该地址通常对应系统功能调用程序的首地址。图6是系统功能调用程序实际存储区的示意图,当需要某个操作系统提供的功能时,例如需要13H中断处理程序提供的写磁盘操作,就需要从图5所示的系统功能调用表中提取出13H中断处理程序的地址,再到图6所示的存储区中的相应地址处读取相应的程序到内存中执行即可获得操作结果。如果将所述控制处理程序嵌入到操作系统中,方法之一就是将相应的控制处理程序存储到系统功能调用表中。假设现在有100H(H表示16进制)个破坏性操作行为被分解出来,而且已经编制好100H个对应的控制处理程序,则,将这100H个控制处理程序的存储地址存入到图5所示表中,存储结果参考图7,图8示出了图7存储实例的功能调用程序实际存储区的示意图。所述控制处理程序的存储地址依次存储到系统功能调用程序地址的后面。
实际中,将所述控制处理程序嵌入到操作系统中的方法实际中不限于图7所示的存储方式,也可以采用图9所示的将所述控制处理程序直接存储为一个独立的操作行为调用表的方式,并使所述控制处理程序获得优于系统功能调用程序的优先权,该步骤的实现方式是将图5中的系统功能调用指针,即功能调用地址字段的系统功能调用程序的地址修改为相应控制处理程序的地址即可。以图7为例,假设编号为0A00的A控制处理程序地址与编号为0003的05H中断相对应,就需要将“功能调用地址”字段存储的“05H中断地址”修改为“A控制处理程序地址”,从而在所述破坏性操作行为涉及的指令调用“05H中断地址”对应的程序时,实际上调用的是“A控制处理程序地址”,从而使“A控制处理程序”获得了优于“05H中断”的系统控制权。继续推广这种思想,就可以将所述控制处理程序嵌入操作系统。
在另外的实施例中,还可以使所述破坏性操作行为对应的系统功能调用程序将其控制权移交给相应的控制处理程序,从而使控制处理程序获得对所述破坏性操作行为的控制权。以图10这种存储方式为例,所有的控制处理程序在系统中形成了另外一张系统功能调用表,只要使该表具有比系统原有的系统功能调用表具有更高的优先级,就可以使控制处理程序获得对所述破坏性操作行为的控制权。例如,在待检测程序调用所述控制处理程序调用系统功能调用程序时,首先调用图10所述的表中的控制处理程序,如果在图10所述的表中不存在被调用的控制处理程序,再去调用图2所述的表中的真正的系统功能调用程序。
由于通过步骤33,已经使控制处理程序获得对所述破坏性操作行为的控制权,因此待检测程序在步骤34,待检测程序调用所述控制处理程序时,就可以由所述控制处理程序对其进行应答并记录所述待检测程序的操作行为。即,所述待检测程序执行时,一旦其中存在的实现破坏性操作行为的指令被执行,即调用相应的系统功能调用程序,就会首先调用相应的控制处理程序,由所述控制处理程序对其进行应答并记录所述待检测程序的破坏性操作行为。
通常的病毒程序需要获得一条破坏性的行为操作结果,在得到成功操作的结果时,才继续后续的操作,因此为了对待检测程序进行进一步的判断,还可以通过所述的控制处理程序对所述待检测程序的调用返回成功应答的信息,从而诱导所述待检测程序继续进行下一行为,而实际上,操作系统的控制权由于在步骤33已由控制处理程序接管,所述待检测程序并没有得到实际运行的效果,其收到的信息是控制处理程序传回的信息,其获得的信息相对于其需求来说是虚假信息,因此待检测程序并没有在操作系统的环境下实际运行,而是在控制处理程序构成主控制权的环境中虚拟运行,从而可以检测和记录所述待检测程序的一系列行为操作,并且不会对系统造成损害。上述的获得病毒程序的可执行的行为操作的方法可以理解为在现实的操作系统内通过软件实现的方法虚拟一个运行环境。这个环境的数据与运行结果与真实的操作系统完全隔离,但是文件或进程的执行过程和结果与在真实的操作系统中运行是完全相同的。
实际中,所述步骤33是一个可选择的步骤,无论所述控制处理程序是否嵌入操作系统,只要其在程序操作行为涉及的指令运行时具有优于操作系统的控制权,即可形成诱发待检测程序行为的虚拟运行环境,从而检测到所述待检测程序的操作行为。
步骤35,所述待检测程序运行结束后,将记录的所述待检测程序的一系列行为数据一并发送输出。
参照图4,是本发明所述未知病毒程序的清除方法的步骤流程图,所述的未知病毒程序识别方法可以采用图1或者图2所示的任一流程。图4所示的清未知病毒程序除方法中在图1或者图2所示检测未知病毒程序方法的基础上还包括如果判定所述待检测程序是病毒程序,则清除所述待检测程序。
图4所示的清除方法在清除病毒程序的基础上,还可以附加恢复被病毒程序破坏的数据的恢复方法,包括以下步骤步骤41、如果判定所述待检测程序是病毒程序,则根据获得的所述待检测程序的行为数据,建立对应的逆行为操作步骤。
由于已经获得病毒程序的可执行的行为操作步骤,因此可以根据所述行为操作步骤建立所述行为操作步骤对应的逆行为操作步骤;例如,建立行为操作步骤1、2、...、N对应的逆操作步骤1、2、...、N。假设行为操作步骤1用于转移存储数据,则对应的逆行为操作步骤1则用于对应的逆行为操作,以恢复数据;如果行为操作步骤2用于删除数据,则对应的逆行为操作步骤2用于完成对应的逆操作,以恢复被删除的数据(例如以冗余校验的方式恢复数据)。所述建立对应的逆行为操作步骤,即生成一个程序源代码指令的集合,所述指令集合相对应的操作步骤与所述行为操作步骤所执行的操作相反。
步骤42、执行所述逆行为操作步骤。
由于所述逆行为操作步骤就是程序源代码指令的集合,所以对所述逆行为操作步骤的执行实际上就是对所述程序源代码指令进行依次分别的调用的过程。根据每个程序源代码指令进行相应的执行操作,从而完成被病毒程序破坏的数据的恢复操作。例如,建立一个执行逆行为操作步骤功能的一个主功能函数,在这个主功能函数里实际上是将所述程序源代码指令进行依次分别调用的过程。
所述的逆行为操作步骤,即程序源代码指令的集合,可以以数据库的方式进行存储或者以大型数据存储表的方式进行存储。例如,将所述的逆行为操作步骤以数据库列表的方式进行存储,则某一个病毒程序的逆行为操作步骤就是该数据库中的一个存储元素(子集)。该数据库可以采用如下的数据结构存储所述的某一个存储元素,即某一个病毒程序的逆行为操作步骤(病毒程序名称)、(逆行为操作步骤1,逆行为操作步骤2,......逆行为操作步骤N)、(附加信息段,删除病毒程序体);其中,所述的1、2......N表示了清除病毒程序步骤的顺序,所述的逆行为操作步骤包括源代码序列块,所述源代码序列块用以完成所述病毒程序行为操作步骤对应的逆操作。上述的逆行为操作步骤信息中还可以包括相关操作参数等。上述的数据结构还可以采用其他方式,例如(病毒程序名称)、(逆行为操作步骤1,逆行为操作步骤2,......逆行为操作步骤N,附加信息段)、(删除病毒程序体);实际上,上述的存储方式以及存储的数据结构只是为了说明本发明的技术思想而举出的一个具体实施例而已,可以采用其他可行的存储方式和数据结构进行替代,只要能够实现所述逆行为操作步骤的存储和调用即可。
由所述行为操作步骤得出对应的逆行为操作步骤,可以通过一对应表来实现预置数据列表,表中对应列出了各种行为操作步骤以及相对应的逆行为操作步骤;当所述病毒程序进行了某个行为操作步骤,则从所述预置的数据列表中比较得出相对应的逆行为操作步骤,例如添加和删除;依次完成所述病毒程序的所有行为操作步骤向逆行为操作步骤的转换。
以上对本发明所提供的一种未知病毒程序的识别及清除方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种未知病毒程序的识别方法,其特征在于,包括获取待检测程序的行为数据;根据获得的所述待检测程序的行为数据或行为数据集合以及预置的病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序。
2.如权利要求1所述的未知病毒程序的识别方法,其特征在于,还包括建立经验库,用于存储病毒程序的行为数据或者行为数据的集合,以及存储病毒程序从行为数据到结果数据的过程表达式,所述过程表达式包括行为数据和结果数据以及从行为到结果的对应关系数据;以及,将获得的所述待检测程序的行为数据或行为数据集合与所述经验库中的行为数据进行比较,得到所述行为数据或者行为数据集合导致的操作结果数据。
3.如权利要求2所述的未知病毒程序的识别方法,其特征在于,还包括建立原则库,用于存储病毒程序的破坏性操作结果数据;以及,比较行为数据或者行为数据集合导致的操作结果数据以及所述原则库中的破坏性操作结果数据,判断所述待检测程序是否为病毒程序。
4.如权利要求1所述的未知病毒程序的识别方法,其特征在于,还包括建立经验库,用于存储病毒程序从行为到结果的过程表达式,所述过程表达式包括病毒程序的行为数据或行为数据集合、结果数据、从行为到结果的对应关系数据以及结果数据的各种排列组合的集合;以及,将获得的所述待检测程序的行为数据或行为数据集合与所述经验库中的行为数据或行为数据集合进行比较,得到所述行为数据或者行为数据集合导致的操作结果数据;以及,将所述操作结果数据与所述经验库中的结果数据、以及结果数据的各种排列组合的集合进行比较,判断所述待检测程序是否为病毒程序。
5.如权利要求1、2、3或4所述的未知病毒程序的识别方法,其特征在于,还包括对所述待检测程序进行特征码识别,判断所述待检测程序是否为病毒程序。
6.如权利要求3或4所述的未知病毒程序的识别方法,其特征在于,包括将获得的所述待检测程序的行为数据或行为数据集合按照经验库中行为数据或者行为数据集合的顺序进行排列。
7.如权利要求1、2、3或4所述的未知病毒程序的识别方法,其特征在于,按照下述步骤获取待检测程序的行为数据获得已知病毒程序的破坏性行为数据;根据所述破坏性行为数据设置对应的控制处理程序;使控制处理程序获得对所述破坏性行为数据操作的控制权;待检测程序的破坏性行为数据调用相应的控制处理程序,由所述控制处理程序记录所述待检测程序的行为数据。
8.如权利要求1、2、3或4所述的未知病毒程序的识别方法,其特征在于,还包括如果所述待检测程序被判定为病毒程序,则将所述待检测程序的行为数据存储至所述经验库中的行为信息中,将所述待检测程序行为对应的结果数据存储至所述经验库中的结果信息中,并建立所述待检测程序的行为数据和结果数据之间的对应关系。
9.如权利要求1、2、3或4所述的未知病毒程序的识别方法,其特征在于,还包括如果所述待检测程序被判定为病毒程序,则将所述待检测程序的行为数据或者行为数据集合存储为病毒程序的行为数据或者行为数据集合。
10.如权利要求9所述的未知病毒程序的识别方法,其特征在于,还包括如果所述待检测程序被判定为病毒程序,存储病毒程序的破坏性操作结果数据或破坏性操作结果数据排列组合后的数据集合。
11.如权利要求1所述的未知病毒程序的识别方法,其特征在于,还包括建立有害行为库,用于存储病毒程序的行为数据或者行为数据集合。
12.一种未知病毒程序的清除方法,其特征在于,包括获取待检测程序的行为数据;根据获得的所述待检测程序的行为数据或行为数据集合以及预置的典型病毒程序的行为数据或者行为数据集合,判断所述待检测程序是否为病毒程序;如果判定所述待检测程序是病毒程序,则清除所述待检测程序。
13.如权利要求12所述的未知病毒程序的清除方法,其特征在于,还包括如果判定所述待检测程序是病毒程序,根据获得的所述待检测程序的行为数据或行为数据集合,建立对应的逆行为操作步骤;执行所述逆行为操作步骤。
全文摘要
本发明公开了一种未知病毒程序的识别方法,包括获取待检测程序的行为数据;根据获得的所述待检测程序的行为数据以及预置的典型病毒程序的行为数据,判断所述待检测程序是否为病毒程序。本发明不仅仅能识别已知病毒程序,也可以相当准确的识别多数的未知病毒程序。本发明还进一步比较行为结果以及行为与结果之间的关系,故可以实现未知病毒程序的精确识别,提高未知病毒程序识别的准确度和效率。本发明还提供了一种未知病毒程序的清除方法,不仅可以清除病毒程序,并且可以根据所述病毒程序的行为,建立并执行所述病毒程序的逆行为操作,故可以实现对被病毒程序破坏的数据的恢复。
文档编号G06F21/56GK1936910SQ200610007610
公开日2007年3月28日 申请日期2006年2月15日 优先权日2005年11月16日
发明者白杰, 鲁征宇, 李薇 申请人:白杰, 李薇, 鲁征宇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1