恶意代码典型攻击行为检测方法及系统转让专利

申请号 : CN202010826647.5

文献号 : CN112115465B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 薛静锋韩伟杰王勇张继单纯

申请人 : 北京理工大学中国人民解放军战略支援部队航天工程大学

摘要 :

本发明公开了恶意代码典型攻击行为检测方法及系统,属于网络安全技术领域,能够实现对恶意代码典型恶意行为攻击过程的全面表征。本发明的技术方案为:在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列。针对每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,得到恶意性排序序列。顺次选取API作为搜索起点,在原始本体知识序列中找到搜索起点所处的位置A,在原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串。以本体知识串所代表的恶意代码典型攻击行为作为检测结果。

权利要求 :

1.恶意代码典型攻击行为检测方法,其特征在于,包括如下步骤:

S1、在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列;

S2、针对所述动态系统调用API序列中的每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,即为恶意性排序,得到恶意性排序序列S3、按照所述恶意性排序序列 顺序,顺次选取API作为搜索起点;

S4、在所述原始本体知识序列中找到所述搜索起点所处的位置A,在所述原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与所述搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串;

S5、以所述本体知识串所代表的恶意代码典型攻击行为作为检测结果。

2.如权利要求1所述的方法,其特征在于,所述动态系统调用API序列包括所述恶意代码运行过程中系统调用的所有API;

所述原始本体知识序列由每个API对应的本体知识元组组成;每个本体知识元组包含API及其操作对象。

3.如权利要求1所述的方法,其特征在于,所述前向遍历搜索具体为:

取位置A的前一位置对应API,若前一位置对应API的行为类型与所述搜索起点对应API的行为类型一致,则将前一位置对应API的本体知识元组添加到前向本体知识子串中,并更新位置A为前一位置,重复执行前向遍历搜索,直至前一位置对应API的行为类型与所述搜索起点对应API的行为类型不一致为止;

所述后向遍历搜索具体为:

取位置A的后一位置对应API,若后一位置对应API的行为类型与所述搜索起点对应API的行为类型一致,则将后一位置对应API的本体知识元组添加到后向本体知识子串中,并更新位置A为后一位置,重复执行后向遍历搜索,直至后一位置对应API的行为类型与所述搜索起点对应API的行为类型不一致为止;

所述前向遍历搜索和后向遍历搜索结束后,得到的前向本体知识子串和后向本体知识子串组合为本体知识串。

4.如权利要求1、2或3所述的方法,其特征在于,所述S3中,顺次取恶意性第i位API作为搜索起点,i初始值为1;

所述S4中,增加对所述本体知识串中本体知识元组数量的判断,若所述本体知识串中本体知识元组数量小于设定阈值,则i自增1,返回S3;

所述设定阈值依据经验进行设定。

5.如权利要求1、2或3所述的方法,其特征在于,API的行为类型主要包括文件操作、系统操作、进程/线程操作、注册表操作、存储操作、内核操作、网络操作、设备操作、窗口操作以及文本操作。

6.恶意代码典型攻击行为检测系统,其特征在于,包括数据采集模块、数据预处理模块、本体知识串提取模块以及行为检测模块;

所述数据采集模块,用于在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列,送入所述数据预处理模块;

所述数据预处理模块,用于针对所述动态系统调用API序列中的每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,即为恶意性排序,得到恶意性排序序列送入所述本体知识串提取模块;

所述本体知识串提取模块,用于按照所述恶意性排序序列 顺序,顺次选取API作为搜索起点;在所述原始本体知识序列中找到所述搜索起点所处的位置A,在所述原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与所述搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串,送入所述行为检测模块;

所述行为检测模块,用于以所述本体知识串所代表的恶意代码典型攻击行为作为检测结果。

7.如权利要求6所述的系统,其特征在于,所述动态系统调用API序列包括所述恶意代码运行过程中系统调用的所有API;

所述原始本体知识序列由每个API对应的本体知识元组组成;每个本体知识元组包含API及其操作对象。

8.如权利要求6所述的系统,其特征在于,所述前向遍历搜索具体为:

取位置A的前一位置对应API,若前一位置对应API的行为类型与所述搜索起点对应API的行为类型一致,则将前一位置对应API的本体知识元组添加到前向本体知识子串中,并更新位置A为前一位置,重复执行前向遍历搜索,直至前一位置对应API的行为类型与所述搜索起点对应API的行为类型不一致为止;

所述后向遍历搜索具体为:

取位置A的后一位置对应API,若后一位置对应API的行为类型与所述搜索起点对应API的行为类型一致,则将后一位置对应API的本体知识元组添加到后向本体知识子串中,并更新位置A为后一位置,重复执行后向遍历搜索,直至后一位置对应API的行为类型与所述搜索起点对应API的行为类型不一致为止;

所述前向遍历搜索和后向遍历搜索结束后,得到的前向本体知识子串和后向本体知识子串组合为本体知识串。

9.如权利要求6、7或8所述的系统,其特征在于,所述本体知识串提取模块中,顺次取恶意性第i位API作为搜索起点,i初始值为1;

所述本体知识串提取模块中,增加对所述本体知识串中本体知识元组数量的判断,若所述本体知识串中本体知识元组数量小于设定阈值,则i自增1,更新搜索起点,重新获取新的本体知识串,送入所述行为检测模块;

所述设定阈值依据经验进行设定。

10.如权利要求6、7或8所述的系统,其特征在于,API的行为类型主要包括文件操作、系统操作、进程/线程操作、注册表操作、存储操作、内核操作、网络操作、设备操作、窗口操作以及文本操作。

说明书 :

恶意代码典型攻击行为检测方法及系统

技术领域

[0001] 本发明涉及网络安全技术领域,具体涉及恶意代码典型攻击行为检测方法及系统。

背景技术

[0002] 在当前的网络空间环境下,恶意代码已成为攻击者发起网络攻击所主要依赖的武器,并且其攻击机理越发复杂,破坏功能越发强大,由此成为网络空间面临的主要威胁。针对恶意代码造成的严重挑战,研究人员主要采取机器学习方法开展自动化的分析与检测。在检测过程中,研究人员主要采取静态、动态或混合分析的方式提取恶意代码的相关特征,然后采用机器学习的方法训练分类器而开展自动化的检测与分类。
[0003] 当前针对恶意代码的研究工作主要侧重于对恶意代码的准确检测,即通过提取其相关特征最后给出其是否恶意性的判断结果。当前的研究虽然能够实现对恶意代码的有效检测,但在建立对恶意代码的全面理解和认知方面仍存在明显不足。
[0004] 因为当前研究仅是提供了一个判断程序是否为恶意代码的结果,未对恶意代码典型恶意行为的攻击过程进行全面分析,从而缺乏对恶意代码典型攻击行为的挖掘和认知,难以实现对恶意代码的全面理解,也不利于制定有针对性的防护措施。

发明内容

[0005] 有鉴于此,本发明提供了恶意代码典型攻击行为检测方法及系统,通过构建表征恶意代码典型攻击行为的本体知识串,能够实现对恶意代码典型恶意行为攻击过程的全面表征,实现对恶意代码典型攻击行为的全面的挖掘和认知。
[0006] 为达到上述目的,本发明的技术方案包括如下步骤:
[0007] S1、在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列。
[0008] S2、针对动态系统调用API序列中的每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,即为恶意性排序,得到恶意性排序序列
[0009] S3、按照恶意性序列 顺序,顺次选取API作为搜索起点。
[0010] S4、在原始本体知识序列中找到搜索起点所处的位置A,在原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串。
[0011] S5、以本体知识串所代表的恶意代码典型攻击行为作为检测结果。
[0012] 进一步地,动态系统调用API序列包括恶意代码运行过程中系统调用的所有API;原始本体知识序列由每个API对应的本体知识元组组成;每个本体知识元组包含API及其操作对象。
[0013] 进一步地,前向遍历搜索具体为:取位置A的前一位置对应API,若前一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将前一位置对应API的本体知识元组添加到前向本体知识子串中,并更新位置A为前一位置,重复执行前向遍历搜索,直至前一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0014] 后向遍历搜索具体为:取位置A的后一位置对应API,若后一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将后一位置对应API的本体知识元组添加到后向本体知识子串中,并更新位置A为后一位置,重复执行后向遍历搜索,直至后一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0015] 前向遍历搜索和后向遍历搜索结束后,得到的前向本体知识子串和后向本体知识子串组合为本体知识串。
[0016] 进一步地,S3中,顺次取恶意性第i位API作为搜索起点,i初始值为1;S4中,增加对本体知识串中本体知识元组数量的判断,若本体知识串中本体知识元组数量小于设定阈值,则i自增1,返回S3;设定阈值依据经验进行设定。
[0017] 进一步地,API的行为类型主要包括文件操作、系统操作、进程/线程操作、注册表操作、存储操作、内核操作、网络操作、设备操作、窗口操作以及文本操作。
[0018] 本发明另外一个实施例提供了恶意代码典型攻击行为检测系统,包括数据采集模块、数据预处理模块、本体知识串提取模块以及行为检测模块;
[0019] 数据采集模块,用于在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列,送入数据预处理模块。
[0020] 数据预处理模块,用于针对动态系统调用API序列中的每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,即为恶意性排序,得到恶意性排序序列 送入本体知识串提取模块。
[0021] 本体知识串提取模块,用于按照恶意性序列 顺序,顺次选取API作为搜索起点;在原始本体知识序列中找到搜索起点所处的位置A,在原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串,送入行为检测模块。
[0022] 行为检测模块,用于以本体知识串所代表的恶意代码典型攻击行为作为检测结果。
[0023] 进一步地,动态系统调用API序列包括恶意代码运行过程中系统调用的所有API;原始本体知识序列由每个API对应的本体知识元组组成;每个本体知识元组包含API及其操作对象。
[0024] 进一步地,前向遍历搜索具体为:取位置A的前一位置对应API,若前一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将前一位置对应API的本体知识元组添加到前向本体知识子串中,并更新位置A为前一位置,重复执行前向遍历搜索,直至前一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0025] 后向遍历搜索具体为:取位置A的后一位置对应API,若后一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将后一位置对应API的本体知识元组添加到后向本体知识子串中,并更新位置A为后一位置,重复执行后向遍历搜索,直至后一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止;
[0026] 前向遍历搜索和后向遍历搜索结束后,得到的前向本体知识子串和后向本体知识子串组合为本体知识串。
[0027] 进一步地,本体知识串提取模块中,顺次取恶意性第i位API作为搜索起点,i初始值为1;本体知识串提取模块中,增加对本体知识串中本体知识元组数量的判断,若本体知识串中本体知识元组数量小于设定阈值,则i自增1,更新搜索起点,重新获取新的本体知识串,送入行为检测模块。设定阈值依据经验进行设定。
[0028] 进一步地,API的行为类型主要包括文件操作、系统操作、进程/线程操作、注册表操作、存储操作、内核操作、网络操作、设备操作、窗口操作以及文本操作。
[0029] 有益效果:
[0030] 本发明提供的恶意代码典型攻击行为检测方法及系统,基于动态系统调用信息能够有效表示恶意代码行为特征的基础,对恶意代码开展动态分析,提取动态系统调用API序列,计算API的贡献度并对API序列排序;此外,基于本体知识可以有效描述程序行为过程的特点,引入本体论模型构建恶意代码的知识表示框架;在此基础上,基于动态系统调用的分类贡献度和API所属行为类型信息,遍历恶意代码的本体知识序列,从恶意代码的原始本体知识序列中抽取有意义的本体知识串。提取的本体知识串可以有效反映恶意代码典型恶意行为的实施过程,构建恶意代码典型恶意行为的本体知识表示框架,实现对恶意代码典型攻击行为的系统认知。

附图说明

[0031] 图1为本发明一个实施例提供的一种恶意代码典型攻击行为检测方法流程图;
[0032] 图2为本发明一个具体实例提供的基于API和本体知识关联生成本体知识序列过程;
[0033] 图3为本发明另一个实施例提供的一种恶意代码典型攻击行为检测系统组成框图。

具体实施方式

[0034] 下面结合附图并举实施例,对本发明进行详细描述。
[0035] 本发明的提供了一种恶意代码典型攻击行为检测方法,其流程如图1所示。
[0036] 本发明的原理为:
[0037] API信息可以有效表征程序的行为特点,所以常用来刻画程序的行为特征。此外研究发现,通过计算API的分类贡献度可以找出恶意性更为明显的API来描绘程序行为特征,分类贡献度越高的API,其恶意性表现越明显。并且我们研究发现,恶意程序在执行恶意操作过程中,通常会连续执行同类型的系统调用。也即是,那些连续的系统调用序列通常会是典型恶意操作的具体体现。
[0038] 所以,本发明首先计算系统调用API的分类贡献度,挑选出分类贡献度较高的API,然后基于这些API所属的行为类型对原始本体知识序列进行遍历搜索。API的行为类型主要包括文件操作、系统操作、进程/线程操作、注册表操作、存储操作、内核操作、网络操作、设备操作、窗口操作、文本操作等。按照API的行为类型,本发明从本体知识序列中选取同属一个行为类型的本体知识子串,所摘取的本体知识串即能够表示恶意代码一个完整的典型攻击行为操作过程。
[0039] 如图1所示,该方法,包括如下步骤:
[0040] S1、在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列。
[0041] 动态系统调用API序列包括恶意代码运行过程中系统调用的所有API。
[0042] 例如:动态系统调用API序列可以表示为:
[0043]
[0044] api1为API序列中的第i个API;n为API序列中API总数。;
[0045] 原始本体知识序列由每个API对应的本体知识元组组成;每个本体知识元组包含API及其操作对象。即每一个元组表示恶意代码的API序列中一个API的操作信息,元组形式化表示如下:
[0046] Ontoi=[apii,objecti](1≤i≤n)
[0047] 其中,apii表示API序列中的第i个API,objecti表示apii的操作对象。由此,可建立如下所示与动态系统调用API序列对应的本体知识序列:
[0048]
[0049] S2、针对动态系统调用API序列中的每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,即为恶意性排序,得到恶意性排序序列
[0050]
[0051] S3、按照恶意性序列 顺序,顺次选取API作为搜索起点。
[0052] S4、在原始本体知识序列中找到搜索起点所处的位置A,在原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串。
[0053] 即恶意代码在执行恶意操作过程中,通常会连续执行同类型的系统调用。也即是,那些连续的系统调用序列通常会是典型恶意操作的具体体现。为此,为生成有意义的本体知识序列,本发明基于API的分类贡献度和行为类型信息,从原始生成的本体知识序列中抽取同属一个行为类型的API所对应的本体知识元组构建本体知识串,抽取的本体知识串能够准确反映程序典型恶意行为的操作过程,建立起恶意代码典型恶意行为的本体知识表示框架。
[0054] 本发明实施例中,前向遍历搜索具体为:
[0055] 取位置A的前一位置对应API,若前一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将前一位置对应API的本体知识元组添加到前向本体知识子串中,并更新位置A为前一位置,重复执行前向遍历搜索,直至前一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0056] 后向遍历搜索具体为:
[0057] 取位置A的后一位置对应API,若后一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将后一位置对应API的本体知识元组添加到后向本体知识子串中,并更新位置A为后一位置,重复执行后向遍历搜索,直至后一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0058] 前向遍历搜索和后向遍历搜索结束后,得到的前向本体知识子串和后向本体知识子串组合为本体知识串。
[0059] S5、以本体知识串所代表的恶意代码典型攻击行为作为检测结果。基于S4提取的本体知识串,有效表示恶意代码典型攻击行为的实施过程,实现对恶意代码典型攻击行为的表示,辅助研究人员建立对恶意代码典型攻击行为的系统认知。
[0060] 本发明实施例中,由于针对恶意性较高的API,其提取的本体知识串若所包含的本体知识元组较少,可能无法进行恶意代码典型攻击行为的检测,因此本发明一个实施例中,在S3中,顺次取恶意性第i位API作为搜索起点,i初始值为1;在S4中,增加对本体知识串中本体知识元组数量的判断,若本体知识串中本体知识元组数量小于设定阈值,则i自增1,返回S3;设定阈值依据经验进行设定,例如可以设定为3或4等较小的数值。
[0061] 如图2所示是一个生成本体知识串的具体示例。该本体知识串表示的是恶意代码生成恶意可执行文件的过程。该具体示例的提取过程详细解释如下:
[0062] (1)基于分类贡献度,选取分类贡献度较高的SetFilePointer作为当前分析API,其行为类型属于文件操作类。在原始的本体知识序列中,找到SetFilePointer所对应的本体知识语句,然后对原始本体知识序列进行前向和后向遍历;
[0063] (2)在前向遍历过程中,发现GetFileType、NtCreateFile和SetFilePointer的行为类型一致,所以将这些API所对应的本体知识语句添加到前向本体知识子串中;
[0064] (3)在后向遍历过程中,发现NtAllocateVirtualMemroy、NtReadFile、NtCreateFile、GetFileType、NtWriteFile的行为类型与SetFilePointer一致,将这些API所对应的本体知识语句添加到后向本体知识子串中;
[0065] (4)将前向本体知识子串和后向本体知识子串合并形成完整的本体知识表示子串。
[0066] (5)在具体分析过程中还需要辅以人工支持,我们发现在该样本的本体知识序列中,在此文件操作之后连接的是进程操作,操作目的是执行文件操作过程中所创建的恶意性文件。所以,将此进程操作与文件操作过程合并构成一个完整的恶意行为过程。
[0067] 本发明另外一个实施例还提供了一种恶意代码典型攻击行为检测系统,其组成如图3所示,包括数据采集模块、数据预处理模块、本体知识串提取模块以及行为检测模块。
[0068] 数据采集模块,用于在沙箱环境中运行恶意代码,从生成的动态分析报告中提取动态系统调用API序列以及原始本体知识序列,送入数据预处理模块。
[0069] 数据预处理模块,用于针对动态系统调用API序列中的每个API均计算分类贡献度,并按照分类贡献度从大到小进行排序,即为恶意性排序,得到恶意性排序序列 送入本体知识串提取模块。
[0070] 本体知识串提取模块,用于按照恶意性序列 顺序,顺次选取API作为搜索起点;在原始本体知识序列中找到搜索起点所处的位置A,在原始本体知识序列中,从位置A开始,分别进行前向遍历搜索和后向遍历搜索,提取出与搜索起点同属于一个行为类型的API对应本体知识元组,组成本体知识串,送入行为检测模块。
[0071] 行为检测模块,用于以本体知识串所代表的恶意代码典型攻击行为作为检测结果。
[0072] 本发明实施例中,动态系统调用API序列包括恶意代码运行过程中系统调用的所有API;原始本体知识序列由每个API对应的本体知识元组组成;每个本体知识元组包含API及其操作对象。
[0073] 本发明实施例中,前向遍历搜索具体为:取位置A的前一位置对应API,若前一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将前一位置对应API的本体知识元组添加到前向本体知识子串中,并更新位置A为前一位置,重复执行前向遍历搜索,直至前一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0074] 后向遍历搜索具体为:取位置A的后一位置对应API,若后一位置对应API的行为类型与搜索起点对应API的行为类型一致,则将后一位置对应API的本体知识元组添加到后向本体知识子串中,并更新位置A为后一位置,重复执行后向遍历搜索,直至后一位置对应API的行为类型与搜索起点对应API的行为类型不一致为止。
[0075] 前向遍历搜索和后向遍历搜索结束后,得到的前向本体知识子串和后向本体知识子串组合为本体知识串。
[0076] 本发明实施例中,本体知识串提取模块中,顺次取恶意性第i位API作为搜索起点,i初始值为1;本体知识串提取模块中,增加对本体知识串中本体知识元组数量的判断,若本体知识串中本体知识元组数量小于设定阈值,则i自增1,更新搜索起点,重新获取新的本体知识串,送入行为检测模块;设定阈值依据经验进行设定。
[0077] 本发明实施例中,API的行为类型主要包括文件操作、系统操作、进程/线程操作、注册表操作、存储操作、内核操作、网络操作、设备操作、窗口操作以及文本操作。
[0078] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。