病毒识别方法及装置的制作方法

文档序号:6560297阅读:119来源:国知局
专利名称:病毒识别方法及装置的制作方法
技术领域
本发明涉及一种识别计算机病毒的方法和实现这种方法的装置,并且尤其涉及识别脚本类计算机病毒的方法和装置。
背景技术
计算机及网络技术的迅猛发展极大地促进了信息交互。但是,与此同时,计算机病毒也伴随技术的发展而不断地演化更新,从初期的恶作剧游戏发展到今日,计算机病毒已经严重威胁到了人们对计算机的正常使用。由此,如何防范病毒侵袭已然成为人们关注的一个焦点。
防范病毒侵袭的一个重要步骤是在病毒运行之前识别出带有病毒的文件,即查毒,从而采取相应的措施遏制其侵害计算机系统。目前的杀毒软件普遍使用的查毒方法为匹配特征串方法。也就是说,利用从病毒样本中提取出来的特征串(一段或多段特定的二进制码流)在被查文件中进行匹配搜索。这种方法能够比较有效地识别出具有固定特征串的病毒,但是对于那些特征串易于变化的病毒,即易于变种的病毒而言,这种查毒方法则近乎虚设,不会起到预期的效果。
近期发展起来的脚本病毒正是这样一种易于变种的病毒,其以破坏力大,感染力强,传播范围大,欺骗性强而成为现今计算机病毒的一个重要分支。脚本病毒以脚本语言编写而成,通常伴随其他文件一同传送到计算机中,再由计算机操作系统自身带有的针对脚本语言的解释器加以解释执行,从而侵害计算机系统。因而,脚本病毒的源码非常易于获取,且其源代码可读性非常强。通常,只需稍微改变一下脚本病毒源码的结构,或者修改一下其特征值就可生成具有不同特征串的新病毒变种。这样,脚本病毒的各种变种就可以轻易骗过常规的匹配特征串的病毒检查。此外,由于脚本病毒编写简单,现在甚至还出现了很多所谓的病毒生产机,其可以按照用户的意愿生成各种脚本病毒。由此,常规的匹配特征串的查毒方法难以根据所生成的脚本病毒文本本身的特点(特征串)来有效地识别出各种脚本病毒。
因此,迫切需要寻找一种病毒识别方法来快速准确地识别出这种易于变种且侵害力极强的病毒,例如脚本类病毒。

发明内容
本发明的目的在于提供一种快速高效地识别各种病毒及其变种的方法。
根据本发明的一个方面,提出了一种用于识别病毒的方法,包括以下步骤(a)对被查文件的文本进行预处理,以提取可执行文本;(b)对所述可执行文本进行语法分析,以得到所述可执行文本的语法特征;(c)将所述得到的语法特征与病毒特征库中病毒的语法特征进行匹配,以判断所述文件是否包含所述病毒。
本发明还提出了实现上述方法的硬件装置以及包含该模块的计算机系统。
由于本发明提出的方法可以根据病毒的行为特征,而并非所生成病毒文本本身的特征来识别病毒,因而能够快速准确地识别出属于同一家族的病毒。本发明提出的这种方法,尤其适用于识别采用解释执行的诸如脚本类的病毒。
参考下面结合附图的说明书及权利要求书,将更全面地了解本发明,而且本发明的这些及其他特点将变得更加显而易见。


以下将结合附图和具体实施例对本发明进行详细描述,其中图1是根据本发明一个实施例的用于实现脚本病毒识别的总体流程图;图2是根据本发明一个实施例的预处理步骤的具体流程图;
图3是根据本发明一个实施例的词法分析步骤的具体流程图;图4是根据本发明一个实施例的语法分析步骤的具体流程图;图5是根据本发明一个实施例的识别病毒装置的结构框图。
具体实施例方式
根据以上对脚本类病毒的总体介绍可知,脚本病毒的一个重要特点在于源码的可读性非常强,并且通常是在目标计算机上对病毒的源码加以解释执行。鉴于脚本病毒解释执行这一特点,本发明提出的识别这类病毒的方法,仿照编译器的基本原理,对文件中的可执行文本进行语法分析,以便分析出该可执行文本所要实现的功能,即分析其行为特点。这种行为特点体现为语法分析所得到的语法特征,例如循环次数,特定函数的调用等等。那些通过变种而生成的同一家族的脚本病毒,其行为特点,也就是语法特征通常是固定不变的。因此,通过匹配被查文件的语法特征可以有效地检测出各种病毒的变种。
下面将参照附图1-4,以识别脚本病毒为例详细描述本发明提出的识别病毒的方法的具体步骤。这里需要指出,本发明所提出的识别病毒的方法还可以应用于与脚本类病毒具有类似特点的其他病毒,而并不仅限于脚本病毒本身。
图1示出了本发明一个实施例中用于识别脚本病毒的方法的总体流程图。
如图1所示,在步骤1001中,开始执行脚本病毒扫描程序。由于本实施例是以识别脚本病毒为例,因而这里的病毒扫描程序仅对脚本类型文件进行扫描。倘若将本发明提出的方法用于识别其他解释执行的病毒类型,则相应地对该类型文件进行扫描。
首先,在步骤1002中,对扫描到的脚本文件进行预处理,以提取其中的可执行文本。继而,在步骤1003中,判断是否成功提取出了可执行文本,若成功则继续执行步骤1004中的词法分析,否则执行步骤1009报告错误并结束此次病毒扫描。这里的预处理操作可以包括为了提取可执行文本所需的所有步骤,例如对加密的文本进行解密等。该预处理步骤的具体描述将在后面结合附图2详细介绍。
在步骤1004中,对经过预处理而生成的可执行文本进行词法分析,以提取单词序列数组。依据编译原理,词法分析是从作为连续的字符串出现的可执行文本中提取出例如作为变量、函数名等的单词,以便在语法分析中获得这些单词间的逻辑关系。在本发明中,词法分析中对单词的提取是根据脚本语言的特点而设计的。此外,为了能够加快扫描速度和可靠性,在本发明中,词法分析步骤还包括检验所提取的可执行文本中是否包含了能被病毒利用的系统调用(步骤1005)。如果不包含这些系统调用,则可放弃此次病毒扫描(行进到步骤1010),认为该提取出的可执行文本不会造成对计算机系统的侵害。否则,继续执行步骤1006中的语法分析。具体的词法分析步骤将在后面结合附图3详细描述。
在步骤1006中,对词法分析生成的单词序列数组进行语法分析,生成语法树,提取语法特征。这里所说的语法特征,例如为最大循环次数、循环语句个数、条件语句层数、条件语句个数、函数调用次数、函数参数个数及类型、函数调用返回值、系统函数调用等等。这里需要指出,由于本发明的目的在于根据可执行文本的行为特点快速识别出脚本病毒,因而本发明中的语法分析步骤不同于传统的编译过程中的处理,它更注重对更能够体现行为特点的函数体的分析。此外,在本发明中为了加快语法分析的速度和准确度,在语法分析过程中采用了分类分析,分类建立语法分析表的思想,具体内容将在后面结合附图4详细介绍。
在获得可执行文本的语法特征之后,在步骤1007中,将提取出的语法特征和病毒特征库中已知或未知病毒的语法特征进行匹配,并且判断二者是否匹配。如果匹配,则执行步骤1008,上报所查文件含有的病毒类型,病毒名称,杀毒方法等特征量;否则表示此文件不包含已知的脚本病毒,直接执行步骤1010。最后,在步骤1010中,结束本次扫描的工作。
在上述结合图1描述的本发明提出的用于识别病毒的方法中,本发明的思想主要体现在预处理操作、词法分析和语法分析三个部分。下面依次描述这三个部分的具体操作。
预处理图2示出了图1所示的预处理步骤的具体流程图。如图2所示,在步骤2001中,开始对脚本文件的预处理操作。在步骤2002中,过滤掉脚本文件中对可执行文本没有任何影响的部分,例如注释内容等。在步骤2003中,判断剩下的可执行文本是否已经加密,若有加密则执行步骤2004,分析加密文本,采取相应的解密方法进行解密,否则执行步骤2006直接提取可执行文本。在步骤2004中,例如通过分析加密的文本,获知其采用了公共加密算法,则采用相应的解密算法得到解密后的文本。或者,如果加密文本本身包含了解密步骤,那么可通过分析而获得相应的解密算法。再者,还可以采用虚拟执行的方式,在内存中生成解密后的临时可执行文本,从而获得解密后的文本。解密后,在步骤2005中,判断解密是否成功,若成功则执行步骤2006提取可执行的文本,否则执行步骤2007报告预处理失败。在步骤2006中,提取出可执行的文本,供后续词法分析使用。最后,在步骤2008中,结束本次脚本文件预处理操作。
词法分析在获得可执行文本后,进行词法分析。图3示出了这一步骤的具体流程图。
在步骤3001中,开始词法分析。在步骤3002中,采用正则式文法分析,通过本发明中一套算符操作码和复合语句操作码,提取单词。该套算符操作码和复合语句操作码是根据脚本语言的特点而设计的,便于从脚本文本中提取特征串,每次调用该算符操作码和复合语句操作码就会得到一个记号(token)特征串(这里需要指明,算符操作码和复合语句操作码可根据token特征串的特点加以设计)。继而,在步骤3003中,累计步骤3002中生成的token特征串,以形成单词序列数组。在本发明中,提取出的token特征串,都要在步骤3004中判断该token特征串是否与某一系统调用相匹配,即,判断是否属于系统调用。若是,则执行步骤3005统计其校验和,否则执行步骤3006。在步骤3005中,参照系统中的关键字列表,获得该系统调用的校验和并与之前获得的其他系统调用校验和累计,从而得到一个统计校验和。继而,在步骤3006中,判断文本是否读完,若未读完则重复执行步骤3002得到下一个token特征串,如此循环,直到读完所有文本。
在读完所有可执行文本后,在步骤3007中,进行系统调用匹配。在本实施例中,预先通过分析系统特点,得出可能被病毒利用的系统调用,换言之,病毒必须至少包括这些系统调用,才有可能侵害系统。然后,计算出这些系统调用的统计校验和,以备在步骤3007中进行系统调用匹配。在词法分析的步骤3007中,将在步骤3005中获得的统计校验和与预先计算出的可能被病毒利用的系统调用的校验和进行匹配,并继而判断是否匹配(步骤3008)。在本实施例中,如果经过词法分析得到的当前文本所包含的系统调用校验和大于该预先计算得到的校验和,则表明系统调用是匹配的,即当前文本包含可被病毒利用的系统调用。此时报告词法分析成功,需要对当前的可执行文本进行进一步的语法分析。如果不匹配,则报告词法分析失败,从而退出本次扫描过程,即认为当前文件不带有病毒(步骤3009)。这样做的优势在于,不会将未进行任何系统调用的脚本误认作携带病毒的文件,从而可提高查毒的准确度,减少误报的几率,同时还能加快病毒扫描速度。最后,在步骤3010中,结束本次词法分析操作。
在本实施例中,仅给出了以上一种判断可执行文本是否包含可被病毒利用的系统调用的方法。在实际应用中,还可以采用多种方法来实现这种判断,并不限于此。此外,根据实际应用的需要,该系统调用匹配的判断步骤也不都是必须的。
以上结合附图3描述的词法分析过程,对于大多数由程序语言编写的可执行文本而言,通常是必须的。但是也不排除某些特定类型的语言采用极其简单的定义和结构,因而可以仅仅通过简单的处理而直接进行语法分析,这要视实际应用而定。
语法分析在以上词法分析成功完成之后,本发明要进行最关键也是最复杂的语法分析过程。
本发明根据脚本病毒的特点将语法分析作了以下的拆分1、将整个词法分析后的源程序看作一个定义链,这一部分称为全局变量与函数定义的分析。2、在函数定义中将参数定义与函数体的定义分出来分别进行语法分析。3、在函数体的分析中再将参数定义与表达式的定义分离出来单独分析。
整个语法分析过程采用SLR(1)分析加上移进规约冲突分析,在表达式分析时采用了算符优先分析法。
图4是这一步骤的流程图。在步骤4001中,开始语法分析。在步骤4002中,确定当前要执行的语法分析的类型,即定义语法分析的类型。在本实施例中,根据脚本语言的特点,将语法分析分为五种类型表达式、函数、参数、全局变量和系统函数分析。例如,在刚刚开始对可执行文本进行语法分析时,通过分析可将其类型定义为全局变量分析。继而,在步骤4003中,判断语法分析的种类以进行相应操作若是全局变量,则在步骤4007中,将全局变量添加到符号表。当然,在语法分析之初,该类型定义还可能是其他类型,或者随着语法分析的逐步深入,该类型定义也会为其他类型。例如若为表达式,则进入步骤4004中,进行表达式分析,其中采用的是算符优先分析法;若为函数,则在步骤4005中,对函数的参数进行函数参数分析;而在步骤4006中,对函数体本身进行函数体分析;若为系统函数,则在步骤4008中,将系统函数添加到符号表。
然后在各个语法分析类中,分别继续进行进一步的分析。例如,在表达式分析之后(步骤4004),在步骤4009中,进一步对表达式中的函数调用进行分析;而函数体分析(步骤4006)之后的步骤4010中,进一步对函数体内局部变量进行分析;并在步骤4011中,将局部变量添加到符号表中。
无论是上述例举的哪一类语法分析,其都要进入步骤4012中,根据语法规定,判断分析操作是否正确,若正确则执行步骤4013,否则执行步骤4014错误出口。随后在步骤4013中,判断分析是否完成,若已经完成则执行步骤4015结束分析,否则执行步骤4002继续分析。例如,在函数体类的分支中,当步骤4012判断出局部变量分析正确后,在步骤4013中发现分析尚未完成。例如,继而需要分析函数体中的表达式,则流程循环至步骤4002,确定下一次语法分析的类型为表达式分析,然后经步骤4003的判别,流程行进到表达式分析的分支继续进行。按照这种方法循环执行图4的流程直到完成所有的分析操作(步骤4015)。
由于本发明的目的在于分析脚本文件的行为特点,因而函数体的分析是本发明的关键。通常函数体的语法分析是非常复杂的,因而在本发明中,将函数体分析与其他类型的语法分析分开进行,并且单独构造一个语法分析表,这样,可便于升级和更新。
在图4所示的语法分析结束后,可以得到语法树,其反映了各个变量、表达式等之间的逻辑关系。下面回到图1,在图1所示的流程中,根据得到的语法树得到可执行文本中最大循环次数,循环语句个数,条件语句层数,条件语句个数,函数调用次数,函数参数个数及类型,函数调用返回值,系统函数调用特征等一系列的语法特征。接下来就是和病毒特征库中病毒的语法特征进行匹配,判断是否含有病毒。例如,扫描得到的语法特征中,系统函数调用,循环跳转次数,函数调用次数以及函数调用的返回值恰好与某个脚本病毒这些语法特征相匹配,则表明该脚本可能含有病毒,因此报告病毒并提供相应的杀毒方法。
这里需要说明,病毒特征库中可以存储已知病毒的语法特征和/或未知病毒的语法特征。其中,已知病毒是指在当前病毒库中已经记录有明确的名称、标识等信息的病毒,而未知病毒则是指尚未记录有明确的名称或标识的病毒。通常,未知病毒的语法特征是根据已知病毒的行为特点,推断出的足以构成病毒行为的语法特征。这种自行定义的未知病毒的语法特征可以通过杀毒软件的学习功能来获得,从而能够在一定程度上实现预防病毒的目的。
以上结合附图1-4描述了本发明提出的识别病毒的方法。本发明提出的方法可以由计算机软件来实现,也可以由硬件来实现,或者采用软硬件相结合的方式实现。
以下示例性地给出一种实现本发明提出的方法的硬件结构,如图5所示。
如图5所示,用于实现本发明提出的识别病毒方法的装置500,包括预处理单元510、分析处理单元520、识别单元530,其中分析处理单元510包括词法分析单元522和语法分析单元526。
具体而言,预处理单元510用于对被查文件的文本进行预处理(解密)以提取可执行文本。分析处理单元520用于对所述可执行文本进行语法分析,以得到所述可执行文本的语法特征。该分析处理单元520具体包括用于对所述可执行文本进行词法分析以提取单词序列的词法分析单元522,以及用于对所述词法分析单元提取出的所述单词序列进行语法分析的语法分析单元526。识别单元530将由语法分析单元得到的语法特征与病毒特征库中病毒的语法特征进行匹配,以判断所述文件是否包含病毒。所述词法分析单元522还包括一个判断单元523用于根据提取出的所述单词序列,判断是否包含可被病毒利用的系统调用(判断方法与图3所示相同);且若不包含可被脚本病毒利用的系统调用,则判断所述文件不包含病毒。
以上结合附图1-5以脚本病毒为例详细描述了本发明提出的通过分析被查文件的行为特点来识别病毒的方法。该方法不仅可以适用于脚本病毒,还可以用于对其他源码文件的分析查毒。
有益数果以上结合本发明实施例对于本发明提出的识别病毒的方法进行了详细的描述。本发明提出的方法,通过语法分析获得被查文件的语法特征,再利用该得到的语法特征与病毒的语法特征的匹配结果,来确定该被查文件是否包含该病毒。
与单纯根据病毒样本中提取的字符串来进行搜索匹配的方法相比,由于本发明提出的方法是以病毒的行为特点为基础来进行查毒,因而大大提高了病毒扫描的准确度,并且可加快扫描速度,避免资源浪费。由于病毒的多种变种体通常具有固定的行为特点,即语法特征,因而采用本发明提出的方法能有效的对付同一病毒家族的不同变种。此外,本发明提出的方法具有很强的灵活性,例如通过将语法分析的拆分,使得将来对语法分析的扩展和升级只需要更改函数体的语法分析部分就可以完成。再者,本发明通过预处理和词法分析将无格式的文件进行了格式化,支持病毒的排序,能够显著提高查杀毒速度。
本领域技术人员应当理解,对上述本发明所公开的用于识别病毒的方法和装置,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
权利要求
1.一种用于识别病毒的方法,包括以下步骤(a)对被查文件的文本进行预处理,以提取可执行文本;(b)对提取出的所述可执行文本进行语法分析,以得到所述可执行文本的语法特征;(c)将所述得到的语法特征与病毒特征库中病毒的语法特征进行匹配,以判断所述文件是否包含病毒。
2.如权利要求1所述的方法,其中步骤(b)还包括(b1)对所述可执行文本进行词法分析,以提取单词序列。
3.如权利要求2所述的方法,其中步骤(b)还包括(b2)对所述提取出的所述单词序列进行语法分析,以得到所述可执行文本的语法树,从而获得所述可执行文本的所述语法特征。
4.如权利要求3所述的方法,其中,所述语法特征包括所述可执行文本中最大循环次数、循环语句个数、条件语句层数、条件语句个数、函数调用次数、函数参数个数及类型、函数调用返回值、系统函数调用中的一个或多个。
5.如权利要求2所述的方法,其中步骤(b1)还包括(b11)根据提取出的所述单词序列,判断是否包含可被病毒利用的系统调用;(b12)若不包含可被脚本病毒利用的系统调用,则判断所述文件不包含病毒。
6.如权利要求5所述的方法,其中步骤(b11)包括根据提出的所述单词序列,判断是否包含系统调用;若包含系统调用,则计算系统调用的校验和;将所述计算出的系统调用校验和与可被病毒利用的系统调用校验和进行比较,以判断是否包含所述病毒可利用的系统调用。
7.如权利要求1所述的方法,其中所述预处理还包括对加密的可执行文本进行解密,以获取解密后的可执行文本。
8.如权利要求1所述的方法,其中所示病毒为脚本病毒,所述可执行文本为脚本文本。
9.如权利要求1所述的方法,其中所述病毒特征库存储有已知病毒的语法特征和/或未知病毒的语法特征。
10.一种识别病毒的装置,包括预处理单元,用于对被查文件的文本进行预处理,以提取可执行文本;分析处理单元,用于对所述可执行文本进行语法分析,以得到所述可执行文本的语法特征;识别单元,用于将所述得到的语法特征与病毒特征库中病毒的语法特征进行匹配,以判断所述文件是否包含病毒。
11.如权利要求10所述的装置,其中所述分析处理单元还包括词法分析单元,用于对所述可执行文本进行词法分析,以提取单词序列;且语法分析单元,用于对所述词法分析单元提取出的所述单词序列进行语法分析,以得到所述可执行文本的语法树,从而获得所述可执行文本的所述语法特征。
12.如权利要求11所述的装置,其中所述语法分析单元对全局变量、函数定义、参数定义和函数体定义分别进行语法分析。
13.如权利要求11所述的装置,其中所述词法分析单元还包括判断单元,用于根据提取出的所述单词序列,判断是否包含可被病毒利用的系统调用;且若不包含可被脚本病毒利用的系统调用,则判断所述文件不包含病毒。
14.如权利要求13所述的装置,其中所述判断单元根据提出的所述单词序列,判断是否包含系统调用;若包含系统调用,则计算系统调用的校验和;将所述计算出的系统调用校验和与可被病毒利用的系统调用校验和进行比较,以判断是否包含所述病毒可利用的系统调用。
15.一种计算机系统,包括如权利要求10-14所述的识别病毒的装置。
16.一种计算机程序产品,包括用于实现如权利要求1-9所述方法的计算机可读代码。
全文摘要
一种快速识别已知或未知病毒及其变种的方法,包括对被查文件进行预处理,提取可执行文本;对可执行文本进行词法分析,得出文本的单词序列数组;对生成的单词序列进行语法分析得出语法树,并提取其语法特征;匹配已知病毒或未知病毒特征库的语法特征进行病毒判定。其中,在词法分析中还包括判断可执行文本中是否包含可被病毒利用的系统调用,若不包含则认为此文件不含有病毒,从而降低误报率。由于本发明提出的方法,通过语法分析将可执行文本的行为特点,即语法特征,与病毒的语法特征相匹配,因而能够识别各种变种的病毒,而且速度快,查毒准确。
文档编号G06F21/00GK1983295SQ20061010597
公开日2007年6月20日 申请日期2006年7月21日 优先权日2005年12月12日
发明者张畅 申请人:北京瑞星国际软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1