一种文件宏病毒的检测方法和装置转让专利

申请号 : CN201210246661.3

文献号 : CN102841999B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 禹建文

申请人 : 北京奇虎科技有限公司奇智软件(北京)有限公司

摘要 :

本发明实施例提供了一种文件宏病毒的检测方法和装置,其中的方法具体包括:将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;依据匹配结果判别所述待检测文件是否感染宏病毒。本发明实施例能够提高对文件宏病毒的检测能力。

权利要求 :

1.一种文件宏病毒的检测方法,其特征在于,包括:将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;

依据匹配结果判别所述待检测文件是否感染宏病毒;

其中,所述依据匹配结果判别所述待检测文件是否感染宏病毒的步骤,进一步包括:在所述匹配结果为匹配成功时,依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒;

所述依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒的步骤,进一步包括:判断所述待检测文件的宏代码中匹配成功的行为代码是否符合预设的危险性条件,若是,则判别所述待检测文件感染宏病毒,否则,判别所述待检测文件未感染宏病毒;

所述预设的危险性条件包括如下条件中的一项或多项:所述待检测文件的宏代码中匹配成功的行为代码的危险系数超过预设的危险系数阈值;所述危险系数阈值为根据宏病毒检出率或宏病毒误杀率的指标得到的阈值;

所述待检测文件的宏代码中匹配成功的行为代码的危险等级超过预设的危险等级;

待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,或者,出现了预设的行为代码组合。

2.如权利要求1所述的方法,其特征在于,所述将待检测文件的宏代码与行为代码库中的行为代码进行匹配的步骤,进一步包括:在所述待检测文件的宏代码中存在匹配成功的行为代码时得到匹配成功的匹配结果,以及,在所述待检测文件的宏代码中不存在匹配成功的行为代码时,得到匹配失败的匹配结果;

则所述依据匹配结果判别所述待检测文件是否感染宏病毒的步骤,还包括:在所述匹配结果为匹配失败时,判别所述待检测文件未感染宏病毒。

3.如权利要求1或2所述的方法,其特征在于,通过如下步骤构造所述行为代码库:收集实现固定的宏病毒行为所需的行为代码;

将所述行为代码保存至行为代码库。

4.如权利要求3所述的方法,其特征在于,所述收集实现固定的宏病毒行为所需的行为代码的步骤,进一步包括:收集宏病毒样本;

依据宏代码的语法,对所述宏病毒样本的宏代码进行语义分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。

5.如权利要求1或2所述的方法,其特征在于,所述行为代码包括函数名、函数变量名或者函数语句。

6.一种文件宏病毒的检测装置,其特征在于,包括:匹配模块,用于将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;及判别模块,用于依据匹配结果判别所述待检测文件是否感染宏病毒;

其中,所述判别模块进一步包括:

第一判别子模块,用于在所述匹配结果为匹配成功时,依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒;

所述第一判别子模块进一步包括:

判断单元,用于判断所述待检测文件的宏代码中匹配成功的行为代码是否符合预设的危险性条件,若是,则判别所述待检测文件感染宏病毒,否则,判别所述待检测文件未感染宏病毒;

所述预设的危险性条件包括如下条件中的一项或多项:所述待检测文件的宏代码中匹配成功的行为代码的危险系数超过预设 的危险系数阈值;所述危险系数阈值为根据宏病毒检出率或宏病毒误杀率的指标得到的阈值;

所述待检测文件的宏代码中匹配成功的行为代码的危险等级超过预设的危险等级;

待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,或者,出现了预设的行为代码组合。

7.如权利要求6所述的装置,其特征在于,所述匹配模块进一步包括:匹配成功子模块,用于在所述待检测文件的宏代码中存在匹配成功的行为代码时得到匹配成功的匹配结果;以及匹配失败子模块,用于在所述待检测文件的宏代码中不存在匹配成功的行为代码时,得到匹配失败的匹配结果;

则所述判别模块还包括:

第二判别子模块,用于在所述匹配结果为匹配失败时,判别所述待检测文件未感染宏病毒。

8.如权利要求6或7所述的装置,其特征在于,还包括:用于构造所述行为代码库的构造模块,所述构造模块包括:收集子模块,用于收集实现固定的宏病毒行为所需的行为代码;

保存子模块,用于将所述行为代码保存至行为代码库。

9.如权利要求8所述的装置,其特征在于,所述收集子模块进一步包括:样本收集单元,用于收集宏病毒样本;

分析提取单元,用于依据宏代码的语法,对所述宏病毒样本的宏代码进行语义分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。

10.如权利要求6或7所述的装置,其特征在于,所述行为代码包括函数名、函数变量名或者函数语句。

说明书 :

一种文件宏病毒的检测方法和装置

技术领域

[0001] 本发明实施例涉及计算机安全技术领域,特别是涉及一种文件宏病毒的检测方法和装置。

背景技术

[0002] 宏语言是一类编程语言,其全部或多数计算是由扩展宏完成的。宏语言在文本处理程序中应用普遍,主要用来扩展文本处理程序的功能,例如,Microsoft Office可采用宏语言实现对表格进行动态计算、设计交互窗口等宏功能。但是,病毒制作者也有可能利用宏语言功能强大、开发简单的优点,将其用于开发宏病毒。
[0003] 宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。
[0004] 由于宏病毒藏于数据文件内,且其使用的脚本语法灵活多变,完成一个功能有很多种写法,故识别一个文件是否有宏病毒非常困难。
[0005] 现有的反病毒软件所采用的反病毒方法几乎都是依赖于病毒特征码。由于计算机病毒通常都具有各自的身份等特征,当一种计算机病毒出现后,首先找到该病毒具有的特征,依据该特征对该特征所表征的病毒进行搜寻和处理;即现有技术对于已知宏病毒有一定的检测能力。
[0006] 但是,由于宏病毒感染、发作在先,反毒在后;而宏语言是一种脚本,稍作修改即可产生变种,甚至可以传播过程中修改自身,每传播一次就变化一次;故现有技术很难跟上宏病毒变化的速度,对未知宏病毒基本无检测能力,反病毒效果较差。
[0007] 总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够提高对未知宏病毒的检测能力。

发明内容

[0008] 本发明实施例所要解决的技术问题是提供一种文件宏病毒的检测方法和装置,能够提高对文件宏病毒的检测能力。
[0009] 为了解决上述问题,本发明实施例公开了一种文件宏病毒的检测方法,包括:
[0010] 将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;
[0011] 依据匹配结果判别所述待检测文件是否感染宏病毒。
[0012] 优选的,所述将待检测文件的宏代码与行为代码库中的行为代码进行匹配的步骤,进一步包括:
[0013] 在所述待检测文件的宏代码中存在匹配成功的行为代码时得到匹配成功的匹配结果,以及,在所述待检测文件的宏代码中不存在匹配成功的行为代码时,得到匹配失败的匹配结果;
[0014] 则所述依据匹配结果判别所述待检测文件是否感染宏病毒的步骤,进一步包括:
[0015] 在所述匹配结果为匹配失败时,判别所述待检测文件未感染宏病毒;
[0016] 在所述匹配结果为匹配成功时,依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒。
[0017] 优选的,所述依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒的步骤,进一步包括:
[0018] 判断所述待检测文件的宏代码中匹配成功的行为代码是否符合预设的危险性条件,若是,则判别所述待检测文件感染宏病毒,否则,判别所述待检测文件未感染宏病毒。
[0019] 优选的,所述预设的危险性条件包括如下条件中的一项或多项:
[0020] 所述待检测文件的宏代码中匹配成功的行为代码的危险系数超过预设的危险系数阈值;
[0021] 所述待检测文件的宏代码中匹配成功的行为代码的危险等级超过预设的危险等级;
[0022] 待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,或者,出现了预设的行为代码组合。
[0023] 优选的,本发明实施例通过如下步骤构造所述行为代码库:
[0024] 收集实现固定的宏病毒行为所需的行为代码;
[0025] 将所述行为代码保存至行为代码库。
[0026] 优选的,所述收集实现固定的宏病毒行为所需的行为代码的步骤,进一步包括:
[0027] 收集宏病毒样本;
[0028] 依据宏代码的语法,对所述宏病毒样本的宏代码进行语义分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。
[0029] 优选的,所述行为代码包括函数名、函数变量名或者函数语句。
[0030] 优选的,所述方法还包括:
[0031] 针对待检测Excel文件的工作表,若其自定义名称中存在Excel保留名称,则判别所述待检测Excel文件感染宏病毒。
[0032] 另一方面,本发明实施例还公开了一种文件宏病毒的检测装置,包括:
[0033] 匹配模块,用于将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;及
[0034] 判别模块,用于依据匹配结果判别所述待检测文件是否感染宏病毒。
[0035] 优选的,所述匹配模块进一步包括:
[0036] 匹配成功子模块,用于在所述待检测文件的宏代码中存在匹配成功的行为代码时得到匹配成功的匹配结果;以及
[0037] 匹配失败子模块,用于在所述待检测文件的宏代码中不存在匹配成功的行为代码时,得到匹配失败的匹配结果;
[0038] 则所述判别模块进一步包括:
[0039] 第一判别子模块,用于在所述匹配结果为匹配失败时,判别所述待检测文件未感染宏病毒;
[0040] 第二判别子模块,用于在所述匹配结果为匹配成功时,依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒。
[0041] 优选的,所述第二判别子模块进一步包括:
[0042] 判断单元,用于判断所述待检测文件的宏代码中匹配成功的行为代码是否符合预设的危险性条件,若是,则判别所述待检测文件感染宏病毒,否则,判别所述待检测文件未感染宏病毒。
[0043] 优选的,所述预设的危险性条件包括如下条件中的一项或多项:
[0044] 所述待检测文件的宏代码中匹配成功的行为代码的危险系数超过预设的危险系数阈值;
[0045] 所述待检测文件的宏代码中匹配成功的行为代码的危险等级超过预设的危险等级;
[0046] 待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,或者,出现了预设的行为代码组合。
[0047] 优选的,所述装置还包括:用于构造所述行为代码库的构造模块,所述构造模块包括:
[0048] 收集子模块,用于收集实现固定的宏病毒行为所需的行为代码;
[0049] 保存子模块,用于将所述行为代码保存至行为代码库。
[0050] 优选的,所述收集子模块进一步包括:
[0051] 样本收集单元,用于收集宏病毒样本;
[0052] 分析提取单元,用于依据宏代码的语法,对所述宏病毒样本的宏代码进行语义分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。
[0053] 优选的,所述行为代码包括函数名、函数变量名或者函数语句。
[0054] 优选的,所述装置还包括:
[0055] 工作表检测模块,用于针对待检测Excel文件的工作表,若其自定义名称中存在Excel保留名称,则判别所述待检测Excel文件感染宏病毒。
[0056] 与现有技术相比,本发明实施例具有以下优点:
[0057] 相对于现有技术依赖于已知宏病毒的特征码进行文件宏病毒的检测,本发明实施例基于“实现固定的宏病毒行为所需的行为代码是相对固定的”这一规律进行文件宏病毒的检测,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;由于无论已知宏病毒还是未知宏病毒都会遵循该规律,故无论宏病毒如何变化及变化的速度如何,这一规律都是不变的,故本发明实施例将待检测文件的宏代码与行为代码库中的行为代码进行匹配,能够对未知宏病毒具备一定的检测能力,因此能够提高未知宏病毒的检测能力,且具备较好的反病毒效果。

附图说明

[0058] 图1是本发明实施例一种文件宏病毒的检测方法实施例的流程图;
[0059] 图2是本发明实施例一种文件宏病毒的检测装置实施例的结构图。

具体实施方式

[0060] 为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
[0061] 现有技术依赖宏病毒的特征码进行宏病毒的检测,对于已知宏病毒有一定的检测能力;但是,由于宏病毒感染、发作在先,反毒在后;而宏语言是一种脚本,稍作修改即可产生变种,甚至可以传播过程中修改自身,每传播一次就变化一次;故现有技术很难跟上宏病毒变化的速度,对未知宏病毒基本无检测能力,反病毒效果较差。
[0062] 本发明实施例发明人在研究中发现如下规律:宏病毒的行为(下面简称宏病毒行为)是相对固定的,实现固定的宏病毒行为所需的行为代码也是相对固定的;如果能够获知实现固定的宏病毒行为所需的行为代码,则将待检测文件的宏代码与所获知的行为代码进行匹配,即可检测所述待检测文件是否感染宏病毒。
[0063] 由于本发明实施例不是依赖于已知宏病毒的特征码进行文件宏病毒的检测,而是基于“实现固定的宏病毒行为所需的行为代码是相对固定的”这一规律进行文件宏病毒的检测;而无论已知宏病毒还是未知宏病毒都会遵循该规律,故无论宏病毒如何变化及变化的速度如何,其都能对未知宏病毒具备一定的检测能力,因此能够具备较好的反病毒效果。
[0064] 参照图1,示出了本发明实施例一种文件宏病毒的检测方法实施例的流程图,具体可以包括:
[0065] 步骤101、将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;
[0066] 本发明实施例可以针对各种带有宏功能的文件,检测其是否感染宏病毒;例如,带有宏功能的文件的一个典型例子是Microsoft Office文件,Microsoft Office文件通常采用宏语言实现对表格进行动态计算、设计交互窗口等宏功能。当然Microsoft Office文件并不作为本发明实施例的应用限制。
[0067] 宏代码也即用宏语言开发的代码,在实际应用中,可以在读取待检测文件后,获取相应的宏代码。在此举一个宏语言的例子,VBA(Visual Basic for Applications)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。当然VBA并不作为本发明实施例的应用限制,实际上,C的宏语言、ARC宏语言(ARC Macro Language)等其它宏语言开发的宏代码也可以适用于本发明实施例。
[0068] 假设待检测文件为Microsoft Word文件,且该Microsoft Word文件使用VBA开发了宏代码以实现相应的扩展功能,则在实际应用中,可以读取该Microsoft Word文件,并在Microsoft Word的Visual Basic编辑器中找到相应的宏代码。
[0069] 本发明实施例中,行为代码库就是用于存储实现固定的宏病毒行为所需的行为代码的一个容器,其可用各种数据结构实现。作为行为代码库的存储内容,行为代码也即实现固定的宏病毒行为所需的行为代码,为简便起见,下面的行为代码均可表示实现固定的宏病毒行为所需的行为代码。
[0070] 在实际应用中,可以通过如下步骤构造所述行为代码库:收集实现固定的宏病毒行为所需的行为代码;将所述行为代码保存至行为代码库。并且,如果不断地收集行为代码,并保存至行为代码库,即可得到不断更新的行为代码库。
[0071] 在本发明实施例的一种优选实施例中,所述收集实现固定的宏病毒行为所需的行为代码的步骤,可以进一步包括:
[0072] 子步骤A1、收集宏病毒样本;
[0073] 子步骤A2、依据宏代码的语法,对所述宏病毒样本的宏代码的语义进行分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。
[0074] 本发明实施例中的宏病毒样本应满足如下条件:1、含有宏代码;2、被确认为宏病毒;这样,宏病毒样本的表现形式可以为文件。在实际应用中,可以不断收集上述表现形式的宏病毒样本。
[0075] 通常可以按宏病毒所在的宿主,将宏病毒样本划分为寄存在Word中的(只有VBA脚本的)和寄存在Excel中的(其中又包括VBA脚本的,和存在工作表中的Macro4.0类型的)宏病毒样本等种类。可以按照类别对其进行收集。
[0076] 在实际应用中,对于反病毒软件扫描出的、确定感染宏病毒的文件,可以直接将其作为宏病毒文件。
[0077] 在本发明实施例的一种示例中,还可以通过用户反馈的方式收集宏病毒样本。例如,用户可以将怀疑感染宏病毒但反病毒软件扫描不出的文件,并上传至服务器,这里的上传的途径可以是反病毒软件的客户端,服务器可以指反病毒软件的服务器;这样,服务器能够收集全部或部分客户端上传的宏病毒样本,并对其进行分析。当然,用户也可以通过其它途径反馈宏病毒样本,例如,Web端的上传接口等等,本发明实施例对具体的上传途径不加以限制。
[0078] 在具体实现中,可以首先获取所述宏病毒样本的宏代码,然后对其进行分析。对于文件形式的宏病毒样本,可以读取宏病毒文件,并从中找到相应的宏代码;具体可以参照上面获取Microsoft Word文件的例子:可以读取该Microsoft Word文件,并在Microsoft Word的Visual Basic编辑器中找到相应的宏代码。
[0079] 欲从所述宏病毒样本的宏代码中提取相应的实现固定的宏病毒行为所需的行为代码,需要首先获取特定的宏病毒行为,因为软件开发中代码就是实现一定功能的代码,如果获取了具体的宏病毒行为,那么就能够找到用于实现特定的宏病毒行为这个功能所需的行为代码。
[0080] 本发明实施例发明人经过对大量Microsoft Office的宏病毒样本的研究,得到如下特定的宏病毒行为:
[0081] 1、修改注册表的行为,目的:降低安全等级设置或将释放的可执行文件写入开机启动项等;
[0082] 2、传播行为,其利用感染模版进行传播,其中,不同的Microsoft office会有不同的感染模版,例如Windows7系统,默认情况下
[0083] MicrosoftWord的感染模板文件是C:\Users\【用户名】\AppData\Roaming\Microsoft\Templates\normal.dot
[0084] Excel的感染模板目录:C:\Users\【用户名】\AppData\Roaming\Microsoft\Excel\xlstart和Excel安装目录\office11\xlstart
[0085] 3、感染行为:用户打开安全文件,自己往安全文件里面复制.给用户邮件联系人发送包括病毒文件的邮件等
[0086] 4、发作时行为,包括:
[0087] 4.1、在某个时间段弹窗;
[0088] 4.2、重复复制工作表,影响软件正常使用
[0089] 4.3、释放可执行文件,具体可以包括:创建文件、写文件、执行文件等等。
[0090] 需要说明的是,上述特定的宏病毒行为是针对Microsoft Office研究得到的,其只是作为本发明实施例的一种示例,并不作为本发明实施例的实施限制。
[0091] 在具体实现中,可以针对所述宏病毒样本的宏代码,依据其语法对其语义进行分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。例如,在本发明实施例的一种应用示例中,所述分析过程可以包括:遍历所述宏病毒样本的宏代码,逐函数、逐语句或者逐变量进行分析,看其是否用于实现特定的宏病毒行为这个功能,若是,则可以将其提取出来,并进行下一函数、语句或变量的分析,否则进行下一函数、语句或变量的分析。总之,本领域技术人员可以使用各种技术或策略,判断函数、语句或变量是否用于实现特定的宏病毒行为这个功能,本发明实施例对具体的判断方式不加以限制。
[0092] 在经过分析和提取后,本发明实施例的行为代码具体可以包括函数名、函数变量名或者函数语句。
[0093] 在本发明实施例的一种优选实施例中,本发明实施例的行为代码可为字符串形式。这样,在文件宏病毒的检测过程中,将待检测文件的宏代码与行为代码库中的行为代码进行匹配的过程就涉及字符串的处理操作。在本发明实施例的一种应用示例中,可以读取待检测文件的宏代码,得到一个大的字符串,然后在这个大的字符串中查找给定字符串,其中给定字符串就是所述行为代码库中存储的行为代码,若查找成功,则表示匹配成功,若查找失败,则进行下一给定字符串的查找,直至所述行为代码库中存储的给定字符串查找完毕。
[0094] 步骤102、依据匹配结果判别所述待检测文件是否感染宏病毒。
[0095] 在本发明实施例的一种优选实施例中,所述将待检测文件的宏代码与行为代码库中的行为代码进行匹配的步骤,可以进一步包括:
[0096] 在所述待检测文件的宏代码中存在匹配成功的行为代码时得到匹配成功的匹配结果,以及,在所述待检测文件的宏代码中不存在匹配成功的行为代码时,得到匹配失败的匹配结果;
[0097] 则所述依据匹配结果判别所述待检测文件是否感染宏病毒的步骤,可以进一步包括:
[0098] 步骤B1、在所述匹配结果为匹配失败时,判别所述待检测文件未感染宏病毒;
[0099] 步骤B2、在所述匹配结果为匹配成功时,依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒。
[0100] 在本发明实施例的另一种优选实施例中,所述步骤B2依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒的步骤,可以进一步包括:
[0101] 判断所述待检测文件的宏代码中匹配成功的行为代码是否符合预设的危险性条件,若是,则判别所述待检测文件感染宏病毒,否则,判别所述待检测文件未感染宏病毒。
[0102] 在本发明实施例的再一种优选实施例中,所述预设的危险性条件具体可以包括如下条件中的一项或多项:
[0103] 危险性条件C1、所述待检测文件的宏代码中匹配成功的行为代码的危险系数超过预设的危险系数阈值;
[0104] 关于如何获取待检测文件的宏代码中匹配成功的行为代码的危险系数,在实际中,可针对所述行为代码库中各行为代码预设相应的危险系数;或者,为了减轻设置的工作量,可对所述行为代码库中各行为代码进行分类,并针对每个类别预设相应的危险系数。
[0105] 可以理解,本领域技术人员采用的分类依据可以是多样化的,在申请的一种优选实施例中,可以病毒行为的种类作为分类依据,例如,针对“修改注册表”的行为对应类别预设的危险系数为10,“传播行为”对应类别的危险系数为5,“感染行为”对应类别的危险系数为8等等。
[0106] 参照上例,由于病毒行为有可能被细分,故可针对被细分的病毒行为预设相应的危险系数,例如,在感染行为这个大类别中,可以针对“复制工作表”的行为对应类别预设的危险系数为5,可以针对“执行文件”的行为对应类别预设的危险系数为10,等等。
[0107] 当然,上述只是作为示例;实际上,本领域技术人员得到的病毒行为是各种各样的,并且可以根据各种病毒行为的危险程度,分别对相应的类别预设不同的危险系数,本发明实施例对具体的危险系数不加以限制。
[0108] 在实际应用中,所述待检测文件的宏代码中匹配成功的行为代码可能不止一个,此时,可以对多个行为代码的危险系数进行求平均、加权平均、叠加等处理,得到综合的危险系数,再将综合的危险系数与预设的危险系数阈值进行比较。
[0109] 本领域技术人员可以根据宏病毒检出率或宏病毒误杀率的指标,预设危险系数阈值。例如,如果欲达到较高的宏病毒检出率,可以预设较小的危险系数阈值;又如,如果欲达到较低的宏病毒误杀率,可以预设较高的危险系数阈值等等。
[0110] 危险性条件C2、所述待检测文件的宏代码中匹配成功的行为代码的危险等级超过预设的危险等级;
[0111] 行为代码的危险系数和危险等级同样用于反映行为代码的危险程度,二者的区别之一在于,危险系数用更具体的数值描述,而危险等级可用简便的数值或文字描述;例如,危险系数的取值范围可以为[0,20],而危险等级的取值范围可以为[1,5]或者[1,3],或者,危险等级的文字范围为[低级、中级、高级]等等。
[0112] 关于如何获取待检测文件的宏代码中匹配成功的行为代码的危险等级,在实际中,可针对所述行为代码库中各行为代码预设相应的危险等级;或者,为了减轻设置的工作量,可对所述行为代码库中各行为代码进行分类,并针对每个类别预设相应的危险等级。
[0113] 对于危险性条件C2而言,由于其采用的分类依据及预设的危险等级与危险性条件C1相似,故相互参照即可,在此不作赘述。
[0114] 危险性条件C3、待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,或者,出现了预设的行为代码组合。
[0115] 危险性条件C3可以规定只要待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,就可以判别所述待检测文件感染宏病毒。
[0116] 在实际中,可以将某些宏病毒行为对应的函数名作为预设的单个行为代码。例如,一旦待检测文件的宏代码中匹配成功的行为代码出现了如下函数名中的一个,则可以判别所述待检测文件感染宏病毒:
[0117] 1=runblackice
[0118] 2=infectdocument
[0119] 3=infectnormal
[0120] 4=Empirical
[0121] 在具体实现中,还可以依据宏病毒行为对应的行为代码,预设行为代码组合,如果待检测文件的宏代码中匹配成功的行为代码出现了预设的行为代码组合,则可判别其感染宏病毒。
[0122] 在本发明实施例的一种应用示例中,宏病毒行为对应的行为代码可用阿拉伯数字编号如下:
[0123] 1=filesystemobject
[0124] 2=wcripting.shell
[0125] 3=createobject
[0126] 4=Application.OnKey"%{F
[0127] 5=normal.dot
[0128] 6=book1.xls
[0129] 7=startup.xls
[0130] 8=normal.xlm
[0131] 9=norma1.xlm
[0132] 10=norma1.dot
[0133] 11=Open
[0134] 12=for
[0135] 13=as
[0136] 14=writefile
[0137] 15=createfile
[0138] 16=Private Declare Function
[0139] 17=lib
[0140] 18=infectnormal
[0141] 19=
[0142] 20=(m1)_(m2)_(m3)
[0143] 21=System.PrivateProfileString
[0144] 22=HKEY_CURRENT_USER
[0145] 23=shell
[0146] 24=Shell
[0147] 25=NormalTemplate.VBProject.VBComponents
[0148] 26=Application.StartupPath
[0149] 那么,可以根据这些行为代码对应宏病毒行为的危险程度,预设如下行为代码组合,并分别用阿拉伯数字编号:
[0150] 1=3,2
[0151] 2=3,1
[0152] 3=21,22
[0153] 4=16,17
[0154] 5=25
[0155] 6=11,12,13
[0156] 总之,本发明实施例基于“实现固定的宏病毒行为所需的行为代码是相对固定的”这一规律进行文件宏病毒的检测;无论已知宏病毒还是未知宏病毒都会遵循该规律,故无论宏病毒如何变化及变化的速度如何,其都能对未知宏病毒具备一定的检测能力,因此能够具备较好的反病毒效果。
[0157] 可以理解,本领域技术人员可以根据不断出现的宏病毒样本,对实现固定的宏病毒行为所需的行为代码进行增加、删除、修改等更新操作。
[0158] 本发明实施例发明人经研究发现,对于Excel文件而言,其除了遵循“实现固定的宏病毒行为所需的行为代码是相对固定的”这一规律外,还具有一种特有的宏病毒寄存方式,那就是,宏病毒代码有可能通过自定义名称(如autoopen,autoclose等)寄存在工作表中。
[0159] “自定义名称”是Excel的一种功能。“自定义名称”的一种形式为:用户自己写了一个公式,给公式起了个名称,因此叫自定义名称,一般这些公式只有用户主动运行时才会执行。例如,自定义名称可以为公式的名称,且公式内容指向工作表的某单元格,这样,在打开Excel文件时,单元格中的内容可当做程序执行,于是宏病毒就会被激活,转移到计算机上。
[0160] 但是,Excel会保留一些自定义名称,以下简称Excel保留名称。如Auto_Open、Auto_Close、Print_Area、Auto_Active等等。
[0161] Excel保留名称相对于自定义名称的区别之一在于,如果Excel文件的工作表的自定义名称中存在Excel保留名称,则自定义名称寄存的公式等宿主中很有可能感染宏病毒,且宿主的运行不再依赖于用户的主动运行,而是可以在某种或某些种事件发生时执行。例如:自定义名称为Auto_Open的公式,会在Excel文件打开的时候自动执行,则宏病毒就会利用此功能执行起来。
[0162] 针对上述规律,在本发明实施例的一种优选实施例中,所述方法还可以包括:针对待检测Excel文件的工作表,若其自定义名称中存在Excel保留名称,则判别所述待检测Excel文件感染宏病毒。这里,Excel保留名称可以对宏病毒样本进行分析得到,本发明实施例对具体的分析的方式不加以限制。
[0163] 另外,Excel文件的工作表的属性通常包括可见、隐藏、绝对隐藏属性;在一个工作表的属性为隐藏时,可以首先通过“取消隐藏”命令获取相应的内容,进一步查看内容中是否存在Excel保留名称,若是,则可判别所述待检测Excel文件感染宏病毒。
[0164] 需要说明时,在判别待检测文件感染宏病毒的情况下,可以不将该待检测文件中的宏代码删除,以清除宏病毒。
[0165] 另外,可以在反病毒软件中集成本发明实施例的文件宏病毒的检测功能,这样,如果用户使用反病毒软件进行文件宏病毒的检测,可以将感染宏病毒的文件作为宏病毒样本上传至服务器端。
[0166] 与前述方法实施例相应,本发明实施例还公开了一种文件宏病毒的检测装置,参照图2所示的结构图,具体可以包括:
[0167] 匹配模块201,用于将待检测文件的宏代码与行为代码库中的行为代码进行匹配;其中,所述行为代码用于表示实现固定的宏病毒行为所需的宏代码;及
[0168] 判别模块202,用于依据匹配结果判别所述待检测文件是否感染宏病毒。
[0169] 在本发明实施例的一种优选实施例中,所述匹配模块202可以进一步包括:
[0170] 匹配成功子模块,用于在所述待检测文件的宏代码中存在匹配成功的行为代码时得到匹配成功的匹配结果;以及
[0171] 匹配失败子模块,用于在所述待检测文件的宏代码中不存在匹配成功的行为代码时,得到匹配失败的匹配结果;
[0172] 则所述判别模块202可以进一步包括:
[0173] 第一判别子模块,用于在所述匹配结果为匹配失败时,判别所述待检测文件未感染宏病毒;
[0174] 第二判别子模块,用于在所述匹配结果为匹配成功时,依据所述待检测文件的宏代码中匹配成功的行为代码,判别所述待检测文件是否感染宏病毒。
[0175] 在本发明实施例的另一种优选实施例中,所述第二判别子模块可以进一步包括:
[0176] 判断单元,用于判断所述待检测文件的宏代码中匹配成功的行为代码是否符合预设的危险性条件,若是,则判别所述待检测文件感染宏病毒,否则,判别所述待检测文件未感染宏病毒。
[0177] 在本发明实施例中,优选的是,所述预设的危险性条件具体可以包括如下条件中的一项或多项:
[0178] 所述待检测文件的宏代码中匹配成功的行为代码的危险系数超过预设的危险系数阈值;
[0179] 所述待检测文件的宏代码中匹配成功的行为代码的危险等级超过预设的危险等级;
[0180] 待检测文件的宏代码中匹配成功的行为代码出现了预设的单个行为代码,或者,出现了预设的行为代码组合。
[0181] 在本发明实施例的一种优选实施例中,所述装置还可以包括:用于构造所述行为代码库的构造模块,所述构造模块具体可以包括:
[0182] 收集子模块,用于收集实现固定的宏病毒行为所需的行为代码;
[0183] 保存子模块,用于将所述行为代码保存至行为代码库。
[0184] 在本发明实施例的另一种优选实施例中,所述收集子模块可以进一步包括:
[0185] 样本收集单元,用于收集宏病毒样本;
[0186] 分析提取单元,用于依据宏代码的语法,对所述宏病毒样本的宏代码进行语义分析,从中提取相应的实现固定的宏病毒行为所需的行为代码。
[0187] 在本发明实施例中,优选的是,所述行为代码具体可以包括函数名、函数变量名或者函数语句。
[0188] 在本发明实施例的一种优选实施例中,所述装置还可以包括:
[0189] 工作表检测模块,用于针对待检测Excel文件的工作表,若其自定义名称中存在Excel保留名称,则判别所述待检测Excel文件感染宏病毒。
[0190] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0191] 本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0192] 本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0193] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0194] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0195] 尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0196] 以上对本发明实施例所提供的一种文件宏病毒的检测方法和装置,进行了详细介绍,本文中应用了具体个例对本发明实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明实施例的限制。