一种基于关联规则的图卷积网络恶意软件检测模型及方法

文档序号:31707869发布日期:2022-10-01 12:42阅读:90来源:国知局
一种基于关联规则的图卷积网络恶意软件检测模型及方法

1.本发明涉及软件检测技术领域,具体地说,一种基于关联规则的图卷积网络恶意软件检测模型及方法,利用process monitor捕捉软件在cuckoo sandbox中运行的api调用序列作为特征,利用软件的api调用序列的跨域耦合,结合图卷积神经网络(gcn,graph convolutional network)挖掘api调用函数的隐藏转换关系,从而解决恶意软件开发人员利用插入、删除和替换无用的api调用函数逃避检测问题。


背景技术:

2.随着信息时代的发展和智能终端设备的普及,恶意软件在互联网及移动通信系统上的传播呈现愈演愈烈的趋势。计算机系统受到恶意软件攻击后,可能导致破坏计算机资源、窃取机密数据、非法获取经济利益、以使服务对系统不可用等。因此,恶意软件的检测与分类不仅是学术展望,也是现实需求。
3.而恶意软件多样性和复杂性的不断增加,新兴的恶意软件对检测系统构成了越来越大的挑战。恶意软件开发人员利用复杂的技术制造恶意软件变体,例如通过插入、删除和替换无用的api调用函数,实现在不影响恶意软件的原始功能的基础上应对检测机制,从而逃避检测。而近年来图神经网络(gnn,graph neural network)的提出能够较好地聚合节点特征和拓扑结构之间的关系,在处理序列问题中利用构建图结构从而能够挖掘节点间潜在的关联信息,具有其独特的优势。恶意软件检测领域利用软件的api调用序列作为切入点开展研究时也开始考虑利用图结构进行分析,但是已提出的方法可能依赖于预先的状态而不会表示出恶意软件随着时间的推移恶意行为的演变,或者仅考虑到数据集中包含的恶意软件的api调用的子序列而未考虑非连续的api函数转换潜在行为,对于混淆技术和逃避检测行为并没有较好的解决。


技术实现要素:

4.本发明的目的在于为了克服恶意软件开发人员插入、删除和替换无用的api调用函数而造成的逃避检测,提出了一种基于图卷积网络的恶意软件检测模型及方法,考虑软件api调用序列的跨域耦合联系构建图结构,利用图卷积神经网络充分挖掘api调用函数间的潜在转换关系以避免逃避检测。
5.本发明采用的具体技术方案如下:
6.一种基于关联规则的图卷积网络恶意软件检测模型,包括4个模块:软件api调用序列特征提取模块、api调用序列关联规则挖掘模块、利用图卷积神经网络训练恶意软件分类器模块、预测分类结果并优化模块。
7.利用上述模型的进行恶意软件检测方法,具体包括以下步骤:
8.s01、软件api调用序列特征提取,该模块包括两个部分:在虚拟环境沙箱cuckoo sandbox动态运行软件,获得软件的动态特征;利用自动化工具获得软件的api调用序列。
9.s02、api调用序列关联规则挖掘,该模块包括两个部分:根据api调用序列长度选
定跨域步长,将不同步长的api调用子序列放入集合s中;根据集合中的子序列的关联规则构建图结构。
10.s03、利用图卷积神经网络训练恶意软件分类器。本发明利用软件的api调用序列的子序列集构造图进行标签分类,故使用整图分类。通过api调用序列的子序列集构造图用于构建分类模型,该分类模型输入为图g=(v,e),其中v表示节点的集合,而e表示边的集合。每个节点代表两种api调用函数组,图中的每个边缘代表根据时间关系api转换之间的连接;提取图的嵌入向量x,经过训练得到分类器。
11.s04、预测分类结果并优化。将将权重矩阵与提取后的图的嵌入向量x做向量积得到预测结果,根据概率输出分类标签,并构造损失函数来更新参数优化模型。
12.本发明的进一步改进,所述步骤s01具体包括:
13.s11、恶意软件调用windows api时会自动触发虚拟化环境设置的hook机制,故将恶意软件放置于虚拟的沙箱环境并记录恶意软件运行时调用api的时间以及传递的参数。目前开源的沙箱工具中,cuckoo sandbox融合了众多的恶意软件测试功能,可以提取恶意软件运行时的windows api调用信息。
14.s12、通过自动化测试工具对恶意软件的动态特征进行提取并分析。然后使用process monitor自动扫描分析系统当前程序的运行情况,用于提取api调用序列特征。
15.本发明的进一步改进,所述步骤s02具体包括:
16.s21、利用api调用函数的跨域耦合挖掘所获得api序列的关联规则。
17.在api序列中很容易监测并获得api调用函数之间的潜在联系。针对api调用函数之间的转换关系对其进行分析,为避免恶意软件开发人员利用插入、删除和替换无用的api调用函数逃避检测问题,对api调用序列中的函数进行跨域耦合。假定所获得的api调用序列为apis={api1,api2,api3...,api
n-1
,apin},在插入、删除或替换了无用api例如某些nativeapi(如ntopenfile、ntreadfile、ntwritefile、ntcreatefile等等)后序列变为api
s’={api1,ntopenfile,api2,ntreadfile,api3,...,api
n-1
,ntcreatefile,apin},相对于原序列的转换方式,对于其本身的恶意行为具有隐藏和混淆性。故根据api调用函数的长度api_len确定步长sp,其中sp={1,2,3,...,api_len/2},提取不同步长下的子序列集合s={sub1,sub2,sub3,...,sub
api_len/2
},通过跨域耦合的方式挖掘原本的api调用函数转换方式。对于每个步长,在步长为1(sp=1)的情况下,所考虑的api调用函数的转换是连续的,即使用两个相邻的api调用函数用于构建规则。在步长为2(sp=2)中,所考虑的api调用函数的转换都是通过跳过一个元素来创建的,即使用两个间隔一个api调用函数的api调用函数用于构建规则,以api
s’={api1,ntopenfile,api2,ntreadfile,api3,...,api
n-1
,ntcreatefile,apin}为例,根据关联规则得到的子序列为{api1_api2,ntopenfile_ntreadfile,api2_api3,...,api
n-1
_apin}。
18.s22、为了使用api之间的结构依赖性,应该将上一步所得到的子序列集合中的各个api子序列转换关系构建为图结构。
19.对于每个软件运行后生成的api序列,得到给定的api子序列集合s后,可以根据每个子序列对应的转换关系将其表示为图g=(v,e),其中v表示节点的集合,而e表示边的集合。每个节点代表两种api调用函数的耦合,图中的每个边缘代表根据时间关系api转换之间的连接。当出现重复的转换方式时,则利用已出现过的节点并增加对应边的权重,避免节
点过多而导致图的复杂性过大。
20.本发明的进一步改进,所述步骤s03具体包括:
21.s31、对得到的api调用子序列集合转换图,通过使用gcn模型公式(1),得到每层卷积后节点的信息更新:
22.h
l+1
=f(h
l
,a)
ꢀꢀ
(1)
23.具体的,将ah
l
做矩阵相乘,就是把通过邻接矩阵的方式,快速将相邻的节点的信息相加得到自己下一层的输入,然后再通过一个权重矩阵w
l
做线性变换,之后再经过非线性激活函数,比如说relu,最后得到下一层的输入,为了不忽略节点自身特征并避免与特征矩阵相乘会改变特征原本的分布进行标准化处理:
[0024][0025]
其中a是图的邻接矩阵,in是单位矩阵,是度矩阵,h
l
为特征矩阵,w
l
为权重矩阵。
[0026]
s32、对卷积后的结果进行全局池化,对池化层的结果进行readout操作。代表api调用函数组特征经过词嵌入得到的向量,其中n代表api调用函数组的个数,r代表api调用函数组经过嵌入后的向量维度,对构建的图使用gcn进行半监督学习,将不同节点关系映射到一个向量中。经过gcn训练得到图的整体嵌入x。
[0027]
本发明的进一步改进,所述步骤s04具体包括:
[0028]
s41、将权重矩阵与提取后的图的嵌入向量x做向量积,得到预测结果为:
[0029][0030]
其中,取值为0代表良性软件,取值为1代表恶意软件,接着采用softmax将结果结构映射到{0,1}中。
[0031]
s42、通过损失函数进行反向传播来更新参数优化模型,损失函数可以表示为如下公式:
[0032][0033]
与现有的技术比,本发明的有益效果包括:
[0034]
本发明通过从软件动态运行提取的api调用函数图分析,利用word2vec提取函数调用图中的每个块语义信息,再利用gcn网络提取函数调用图的结构信息,得到每个软件的语义和图结构嵌入,能够有效的反应软件在运行过程中执行真实调用行为。
[0035]
本发明使用api调用序列的跨域链接构造子序列集合,通过集合中每个子序列构建图结构,利用图卷积神经网络训练分类器,充分考虑了恶意软件开发人员对api调用序列插入、删除或替换无用api调用函数的混淆行为从而逃避检测的情况,对于具有混淆行为的恶意软件能够具有很好的检测效果。
附图说明
[0036]
图1是本发明基于关联规则的图卷积网络恶意软件检测模型结构图。
[0037]
图2是本发明中api调用序列关联规则构建结构图。
[0038]
图3是本发明中api调用序列转换图特征提取结构图。
具体实施方式
[0039]
为了便于本领域普通技术人员理解和实施本发明,下面结合实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
[0040]
实施例:如图1所示,一种基于关联规则的图卷积网络恶意软件检测模型,包括4个模块:软件api调用序列特征提取模块、api调用序列关联规则挖掘模块、利用图卷积神经网络训练恶意软件分类器模块、预测分类结果并优化模块。
[0041]
利用上述模型的进行恶意软件检测方法,具体包括以下步骤:
[0042]
s01、软件api调用序列特征提取,该模块包括两个部分:在虚拟环境沙箱cuckoo sandbox动态运行软件,获得软件的动态特征,利用自动化工具获得软件的api调用序列。
[0043]
具体地,s01软件api调用序列特征提取包括以下几个步骤:
[0044]
s11、恶意软件调用windows api时会自动触发虚拟化环境设置的hook机制,故将恶意软件放置于虚拟的沙箱环境并记录恶意软件运行时调用api的时间以及传递的参数。目前开源的沙箱工具中,cuckoo sandbox融合了众多的恶意软件测试功能,可以提取恶意软件运行时的windows api调用信息。
[0045]
s12、通过自动化测试工具对恶意软件的动态特征进行提取并分析。然后使用process monitor自动扫描分析系统当前程序的运行情况,用于提取api调用序列特征。
[0046]
s02、api调用序列关联规则挖掘,该模块包括两个部分:根据api调用序列长度选定跨域步长,将不同步长的api调用子序列放入集合s中;根据集合中的子序列的关联规则构建图结构。
[0047]
具体地,api调用序列关联规则挖掘包括以下几个步骤:
[0048]
s21、利用api调用函数的跨域耦合挖掘所获得api序列的关联规则。在api序列中很容易监测并获得api调用函数之间的潜在联系。针对api调用函数之间的转换关系对其进行分析,为避免恶意软件开发人员利用插入、删除和替换无用的api调用函数逃避检测问题,对api调用序列中的函数进行跨域耦合。假定所获得的api调用序列为apis={api1,api2,api3...,api
n-1
,apin},在插入、删除或替换了无用api例如某些native api(如ntopenfile、ntreadfile、ntwritefile、ntcreatefile等等)后序列变为api
s’={api1,ntopenfile,api2,ntreadfile,api3,...,api
n-1
,ntcreatefile,apin},相对于原序列的转换方式,对于其本身的恶意行为具有隐藏和混淆性。故根据api调用函数的长度api_len确定步长sp,其中sp={1,2,3,...,api_len/2},提取不同步长下的子序列集合s={sub1,sub2,sub3,...,sub
api_len/2
},通过跨域耦合的方式挖掘原本的api调用函数转换方式。对于每个步长,在步长为1(sp=1)的情况下,所考虑的api调用函数的转换是连续的,即使用两个相邻的api调用函数用于构建规则。在步长为2(sp=2)中,所考虑的api调用函数的转换都是通过跳过一个元素来创建的,即使用两个间隔一个api调用函数的api调用函数用于构建规则,以api
s’={api1,ntopenfile,api2,ntreadfile,api3,...,api
n-1
,ntcreatefile,apin}为例,根据关联规则得到的子序列为{api1_api2,ntopenfile_ntreadfile,api2_api3,...,api
n-1
_apin}。
[0049]
s22、为了使用api之间的结构依赖性,应该将上一步所得到的子序列集合中的各个api子序列转换关系构建为图结构。对于每个软件运行后生成的api序列,得到给定的api子序列集合s后,可以根据每个子序列对应的转换关系将其表示为图g=(v,e),其中v表示节点的集合,而e表示边的集合。每个节点代表两种api调用函数的耦合,图中的每个边缘代表根据时间关系api转换之间的连接。当出现重复的转换方式时,则利用已出现过的节点并增加对应边的权重,避免节点过多而导致图的复杂性过大。
[0050]
s03、利用图卷积神经网络训练恶意软件分类器。本发明利用软件的api调用序列的子序列集构造图进行标签分类,故使用整图分类。通过api调用序列的子序列集构造图用于构建分类模型,该分类模型输入为图g=(v,e),其中v表示节点的集合,而e表示边的集合。每个节点代表两种api调用函数组,图中的每个边缘代表根据时间关系api转换之间的连接;提取图的嵌入向量x,经过训练得到分类器。
[0051]
所述步骤s03具体包括:
[0052]
s31、对得到的api调用子序列集合转换图,通过使用gcn模型公式(1),得到每层卷积后节点的信息更新:
[0053]hl+1
=f(h
l
,a)
ꢀꢀ
(1)
[0054]
具体的,将ah
l
做矩阵相乘,就是把通过邻接矩阵的方式,快速将相邻的节点的信息相加得到自己下一层的输入,然后再通过一个权重矩阵w
l
做线性变换,之后再经过非线性激活函数,比如说relu,最后得到下一层的输入,为了不忽略节点自身特征并避免与特征矩阵相乘会改变特征原本的分布进行标准化处理:
[0055][0056]
其中a是图的邻接矩阵,in是单位矩阵,是度矩阵,h
l
为特征矩阵,w
l
为权重矩阵。
[0057]
s32、对卷积后的结果进行全局池化,对池化层的结果进行readout操作。代表api调用函数组特征经过词嵌入得到的向量,其中n代表api调用函数组的个数,r代表api调用函数组经过嵌入后的向量维度,对构建的图使用gcn进行半监督学习,将不同节点关系映射到一个向量中。经过gcn训练得到图的整体嵌入x。
[0058]
s04、预测分类结果并优化。将将权重矩阵与提取后的图的嵌入向量x做向量积得到预测结果,根据概率输出分类标签,并构造损失函数来更新参数优化模型。
[0059]
所述步骤s04具体包括:
[0060]
s41、将权重矩阵与提取后的图的嵌入向量x做向量积,得到预测结果为:
[0061][0062]
其中,取值为0代表良性软件,取值为1代表恶意软件。接着采用softmax将结果结构映射到{0,1}中。
[0063]
s42、通过损失函数进行反向传播来更新参数优化模型,损失函数可以表示为如下公式:
[0064]
[0065]
以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1