一种利用动态图注意力网络的恶意软件检测方法

文档序号:32704192发布日期:2022-12-27 23:33阅读:42来源:国知局
一种利用动态图注意力网络的恶意软件检测方法

1.本发明属于网络安全领域,涉及一种利用动态图注意力网络的恶意软件检测方法,具体是利用软件运行过程中产生的api调用序列,通过动态图注意力网络学习其中包含的结构信息与行为信息,根据捕获到的特征信息,完成恶意软件的分类任务,提升恶意软件检测的性能。


背景技术:

2.自计算机诞生以来,恶意软件的威胁就一直存在着。在互联网发展的早期恶意软件主要以文件感染和自我复制等形式存在,因此其文件的结构就比较单一,使得静态特征明显,很容易通过特征码匹配的方式检测出来。然而随着互联网技术的发展,恶意软件的种类与复杂性日益增加,恶意软件检测也变得愈发困难。于是研究者提出了基于行为的动态分析技术,通过对比检测样本与正常软件的行为差别来判断样本是否具有恶意。一般情况下,恶意代码的行为轨迹和良性代码的行为轨迹会有明显的不同,在深度学习模型充分理解了良性代码的行为特征之后,将会形成一套标准和规范,如果待检测软件行为特征有异常,则可判定样本为恶意软件。
3.api是一组由系统预先定义的函数,在恶意软件检测的方法中,api调用序列是十分明显的行为特征,所有程序都可以与windows api交互并通过调用api来访问预定义的函数来访问资源。其是软件在函数层面最基层的操作,同时api是一系列动作的集成,因此api的调用序列是研究软件行为和目的的理想对象。
4.目前研究主要是基于语义的恶意软件检测方法,这种方法不能很好地处理序列数据过长的问题。软件在运行的过程中,api的调用可能是源源不断的。对于如循环神经网络等序列预测的模型,都具有遗忘性的特点,这就可能导致检测的性能大大降低。因此为了应对长序列预测分类效果下降的问题,有的研究方法也考虑将序列转换为图的结构,再用图神经网络来对其分类。因为无论序列再长,转换为图的结构,就是一个由固定节点与若干条边组成的图。但这种方法也有局限性,就是不能充分的提取到行为发生的时序信息。虽然可以通过转换为有向图的方式,使用图注意力网络来学习其中的时序信息,但这种方法只能获取到局部的行为顺序特征。


技术实现要素:

5.本发明的第一个目的是为了解决上述的问题,以提升网络对软件行为特征的捕获能力为目标,提出了一种基于动态图注意力网络的恶意软件检测的方法。该方法在经典图注意力网络的基础之上,加入了门控循环神经网络来理解软件调用图结构的演变过程,更好地捕获软件的行为发生的时序信息,提升恶意软件检测的精度。
6.本发明具体采用的技术方案如下:
7.步骤(1)、数据预处理阶段:
8.1-1.获取待检测软件的api调用序列;对api调用序列进行去重处理,得到真实反
映软件行为的api调用序列;
9.所述去重处理是删除连续调用的相同api函数或相同api序列片段。将这些包含冗余信息试图隐藏代码恶意意图的api片段删除后,将获得真实反映软件行为的api调用序列。
10.3-2.将步骤1-1去重处理后的api调用序列中同一功能的所有api函数名进行去除后缀,使其函数名相同。
11.系统对不同的编码格式会调用不同的函数,但其完成的任务都是一致的。系统中针对unicode编码是使用w结尾的api,对于ascii编码是使用a结尾的api。因此采用去掉api后缀的方式,来对api进行归类,突出软件api与恶意行为之间的关联关系。
12.1-3.将步骤1-2处理后的api调用序列按观察窗口划分,得到t个api子序列。具体是使用一个不断扩大的窗口来截取api调用序列。窗口每次增加的长度为超参数,可以按需选择。
13.1-4.将步骤1-3每个api子序列转换为api调用图的形式。其中子序列中的api作为api调用图的节点,并用有向边代表当前api与其他api节点之间的调用关系,调用的次数作为边的权重。构建出的api调用图用g=(n,e)表示,其中n为节点的集合,e为边集合。
14.1-5.将步骤1-4得到的t个api调用图按照api子序列顺序拼接,得到调用图快照序列,用以表示api调用图的结构变化过程与趋势。
15.步骤(2):使用图注意力网络捕获局部api之间的软件恶意信息。
16.2-1.将步骤1-5图快照序列中的每个api节点使用one-hot编码作为其初始的特征。此外为了减少计算的开销,对初始的特征进行降维的处理,通过embedding函数把api节点的特征向量映射到更低维的向量空间中并记作点的特征向量映射到更低维的向量空间中并记作其中n是api数目,f是api的维数。
17.2-2.初始化共享线性变换矩阵w,其中w∈r
f*f'
,表示将特征矩阵h从f维转换到f'维。利用共享线性变换矩阵w对api节点进行特征转换,同时计算节点间注意力系数。
18.每个api节点i与其邻居节点j的注意力系数的计算公式如下:
[0019][0020]
式中,为节点i和节点j之间注意力系数,代表了邻居api节点对当前目标api节点的重要程度;为节点i的初始特征向量;ni为节点i的所有邻居节点的集合;||表示拼接操作,将向量串联在一起;为单层的前馈神经网络;leakyrelu为激活函数计算节点i和其邻居节点j之间的注意力权重。
[0021]
2-3.根据注意力系数对各节点信息进行加权聚合,其结果作为当前节点的新特征向量进一步得到新特征矩阵f'表示输出节点的特征维度。
[0022][0023]
4-4.为了能从多个潜在的角度去捕捉api节点所包含的行为特征,采用了多头注意力的方式,赋予api节点更强的表达能力。其主要是使用多个相互独立的单头注意力层,
通过拼接或平均结果的方式来更新节点的嵌入。多头的公式采用如下之一:
[0024][0025][0026]
其中,||表示级联操作,表示由第k个注意力机制计算出的节点i和j之间的归一化注意力系数,wk表示对应的输入线性变化权重矩阵,表示k个头注意力层的特征输出。
[0027]
2-5.将每个调用图快照中的api节点的特征向量展平串联在一起,得到代表当前调用图快照的特征向量xi,作为门控循环神经网络模块的输入。图快照序列的特征表示为x={x1,x2,...,x
t
},其中t表示快照数。
[0028]
步骤(3):使用门控循环神经网络学习软件调用图结构的演变过程,捕获软件的行为发生的长远时序信息。
[0029]
3-1.将图注意力网络输出的所有调用图快照的特征向量x作为门控循环神经网络的输入,并根据上一个时刻传递下来的隐藏状态h
t-1
和当前时刻的输入x
t
来计算当前时刻更新门与重置门的状态信息。更新门与重置门每个时刻的状态可以表示为:
[0030]rt
=σ(w
xr
x
t
+w
hrht-1
+br)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0031]zt
=σ(w
xz
x
t
+w
hzht-1
+bz)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0032]
其中x
t
表示特征向量x的第t个元素;h
t-1
表示在t-1时刻的隐藏层状态;r
t
表示重置门,用于控制前一个时刻隐藏层状态h
t-1
对当前输入x
t
的影响;z
t
表示更新门,用于决定是否忽略当前输入的x
t
;σ为sigmoid激活函数。
[0033]
3-2.在计算出门控信号后,使用重置门来控制候选状态是否依赖于上一时刻的状态h
t-1
。具体将重置之后的数据与当前时刻的输入x
t
进行拼接或相加,然后通过一个tanh激活函数将数据缩放到(-1,1)的范围内,得到表示当前时刻的隐藏信息具体的计算公式如下:
[0034][0035]
3-3.使用更新门来控制历史信息的保留程度。更新门的信息大小越接近于1,代表记忆的信息越多;越接近0,代表遗忘的信息越多。具体的计算公式如下:
[0036][0037]
步骤(4):将门控循环神经网络的输出结果输入至分类器,以实现待测软件的恶意情况。
[0038]
分类器计算方法如下所示:
[0039][0040]
其中b是偏置,ws是一个线性变换权值矩阵,用于将gru输出的隐藏特征映射成二维的输出,其中第一位代表样本为恶意软件的概率,第二位代表样本为良性样本的概率。
[0041]
本发明的第二个目的是提供一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实
现权利要求1-4任一项所述方法。
[0042]
本发明的第三个目的是提供一种机器可读存储介质,存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现权利要求1-4任一项所述方法。
[0043]
本发明的有益效果:
[0044]
本发明将通过图注意力神经网络模块更新注意力系数,同时通过门控循环神经网络模块更新隐藏状态,使得模型能捕获调用图局部恶意行为信息与调用图结构的演变过程,更加适应非典型的恶意软件检测。
[0045]
本发明使用动态图注意力网络来提升恶意软件的检测效果。本发明对api序列进行分段,构建api图快照序列,使用多个快照记录了软件api调用图的变化过程,以此间接表示软件行为动作发生的顺序与过程,使模型能更好地理解软件行为。本发明将通过图注意力神经网络模块更新注意力系数,同时通过门控循环神经网络模块更新隐藏状态,使得模型能捕获调用图局部恶意行为信息与调用图结构的演变过程,更加适应非典型的恶意软件检测。
附图说明
[0046]
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍:
[0047]
图1是模型的架构图。
[0048]
图2是构建图快照序列的过程图。
[0049]
图3是门控循环单元的结构图。
[0050]
图4是本发明与lstm算法、gru算法、gat算法的混淆矩阵对比图。其中(a)、(b)、(c)、(d)分别对应lstm、gat、gru和本发明模型。
[0051]
图5是本发明在不同窗口大小下四种性能评价指标对比图。
具体实施方式
[0052]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明进行进一步详细说明。
[0053]
如图1所示,本发明是一种基于动态图注意力网络的恶意软件检测方法,包括以下步骤:
[0054]
步骤(1)、数据预处理阶段:
[0055]
1-1.获取待检测软件的api调用序列;对api调用序列进行去重处理,得到真实反映软件行为的api调用序列;
[0056]
所述去重处理是删除连续调用的相同api函数或相同api序列片段。将这些包含冗余信息试图隐藏代码恶意意图的api片段删除后,将获得真实反映软件行为的api调用序列。
[0057]
1-2.将步骤1-1去重处理后的api调用序列中同一功能的所有api函数名进行去除后缀,使其函数名相同。
[0058]
系统对不同的编码格式会调用不同的函数,但其完成的任务都是一致的。系统中
针对unicode编码是使用w结尾的api,对于ascii编码是使用a结尾的api。因此采用去掉api后缀的方式,来对api进行归类,突出软件api与恶意行为之间的关联关系。
[0059]
1-3.如图2所示,将步骤1-2处理后的api调用序列按观察窗口划分,得到t个api子序列。具体是使用一个不断扩大的窗口来截取api调用序列。窗口每次增加的长度为超参数,可以按需选择。
[0060]
1-4.将步骤1-3每个api子序列转换为api调用图的形式。其中子序列中的api作为api调用图的节点,并用有向边代表当前api与其他api节点之间的调用关系,调用的次数作为边的权重。构建出的api调用图用g=(n,e)表示,其中n为节点的集合,e为边集合。
[0061]
1-5.将步骤1-4得到的t个api调用图按照api子序列顺序拼接,得到调用图快照序列,用以表示api调用图的结构变化过程与趋势。
[0062]
步骤(2):使用图注意力网络捕获局部api之间的软件恶意信息。
[0063]
2-1.将步骤1-5图快照序列中的每个api节点使用one-hot编码作为其初始的特征。此外为了减少计算的开销,对初始的特征进行降维的处理,通过embedding函数把api节点的特征向量映射到更低维的向量空间中并记作点的特征向量映射到更低维的向量空间中并记作其中n是api数目,f是api的维数。
[0064]
2-2.初始化共享线性变换矩阵w,其中w∈r
f*f'
,表示将特征矩阵h从f维转换到f'维。利用共享线性变换矩阵w对api节点进行特征转换,同时计算节点间注意力系数。
[0065]
每个api节点i与其邻居节点j的注意力系数的计算公式如下:
[0066][0067]
式中,α
ij
为节点i和节点j之间注意力系数,代表了邻居api节点对当前目标api节点的重要程度;为节点i的初始特征向量;ni为节点i的所有邻居节点的集合;||表示拼接操作,将向量串联在一起;为单层的前馈神经网络;leakyrelu为激活函数计算节点i和其邻居节点j之间的注意力权重。
[0068]
2-3.根据注意力系数对各节点信息进行加权聚合,其结果作为当前节点的新特征向量进一步得到新特征矩阵f'表示输出节点的特征维度。
[0069][0070]
2-4.为了能从多个潜在的角度去捕捉api节点所包含的行为特征,采用了多头注意力的方式,赋予api节点更强的表达能力。其主要是使用多个相互独立的单头注意力层,通过拼接或平均结果的方式来更新节点的嵌入。多头的公式采用如下之一:
[0071][0072][0073]
其中,||表示级联操作,表示由第k个注意力机制计算出的节点i和j之间的归一
化注意力系数,wk表示对应的输入线性变化权重矩阵,表示k个头注意力层的特征输出。
[0074]
2-5.将每个调用图快照中的api节点的特征向量展平串联在一起,得到代表当前调用图快照的特征向量xi,作为门控循环神经网络模块的输入。图快照序列的特征表示为x={x1,x2,...,x
t
},其中t表示快照数。
[0075]
步骤(3):使用门控循环神经网络学习软件调用图结构的演变过程,捕获软件的行为发生的长远时序信息。
[0076]
3-1.如图3所示,将图注意力网络输出的所有调用图快照的特征向量x作为门控循环神经网络的输入,并根据上一个时刻传递下来的隐藏状态h
t-1
和当前时刻的输入x
t
来计算当前时刻更新门与重置门的状态信息。更新门与重置门每个时刻的状态可以表示为:
[0077]rt
=σ(w
xr
x
t
+w
hrht-1
+br)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0078]zt
=σ(w
xz
x
t
+w
hzht-1
+bz)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0079]
其中x
t
表示特征向量x的第t个元素;h
t-1
表示在t-1时刻的隐藏层状态;r
t
表示重置门,用于控制前一个时刻隐藏层状态h
t-1
对当前输入x
t
的影响;z
t
表示更新门,用于决定是否忽略当前输入的x
t
;σ为sigmoid激活函数。
[0080]
3-2.在计算出门控信号后,使用重置门来控制候选状态是否依赖于上一时刻的状态h
t-1
。具体将重置之后的数据与当前时刻的输入x
t
进行拼接或相加,然后通过一个tanh激活函数将数据缩放到(-1,1)的范围内,得到表示当前时刻的隐藏信息具体的计算公式如下:
[0081][0082]
3-3.使用更新门来控制历史信息的保留程度。更新门的信息大小越接近于1,代表记忆的信息越多;越接近0,代表遗忘的信息越多。具体的计算公式如下:
[0083][0084]
步骤(4):将门控循环神经网络的输出结果输入至分类器,以实现待测软件的恶意情况。
[0085]
分类器计算方法如下所示:
[0086][0087]
其中b是偏置,ws是一个线性变换权值矩阵,用于将gru输出的隐藏特征映射成二维的输出,其中第一位代表样本为恶意软件的概率,第二位代表样本为良性样本的概率。
[0088]
实施例
[0089]
本发明实现了基于动态图注意力网络进行恶意软件检测的tgat模型,使用软件的api调用序列数据作为数据集,其中取一万个序列数据作为样本数据。所有样本数据按照6:2:2的比例划分为训练集、验证集和测试集。其中验证集是为了使用早停机制来防止模型过拟合。在学习阶段,首先初始化环境参数和网络参数。环境参数主要包括序列选取的最大长度,每个快照选取的长度范围。网络参数主要包括门控循环神经网络以及图注意力网络中的初始参数。
[0090]
本实施例的剩余步骤与具体实施方式相同,在此不再进行赘述。下面就对比算法
的实施和实施结果进行展示:
[0091]
本发明将实现的tgat模型与lstm模型,gru模型以及gat模型进行对比。在训练的过程中,本发明的tgat能在更少的迭代次数下达到最低的损失值,以及最高的准确度,最终的检测效果使用混淆矩阵(confusion matrix)来评价。如图4所示,tgat模型能正确分类出良性或恶意样本的比例都为96%,相比于其它模型,拥有更好的检测性能。
[0092]
此外,为了研究不同窗口大小对检测性能的影响,我们分别选取了200、300、500、700、900、1000六种大小的窗口。使用准确率(accuracy)、精准率(precision)、召回率(recall)以及f1-score四种评价指标来表示检测的性能。如图5所示,检测的性能根据选取的窗口大小而变化,其中在窗口大小设置为900个长度单位时性能最好。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1