一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于图神经网络的恶意代码家族分类方法、装置和存储介质与流程

2022-02-20 13:22:41 来源:中国专利 TAG:


1.本发明计算机软件技术领域,具体是一种基于图神经网络的恶意代码家族分类方法、装置和存储介质。


背景技术:

2.随着恶意代码使用加壳混淆等变种技术产生恶意代码的变体来规避检测引擎的检测,传统的检测方法已经不足以对恶意代码进行防御,容易产生漏报的情况。然而,变种前后的恶意代码之间具有高度的相似性,因此可以利用恶意代码变种的这一特性,将单一恶意代码检测任务转换为对同一家族的防御,因此需要对同家族的内在关联关系进行深入挖掘,进而实现恶意代码的家族分类。
3.现有的恶意代码家族分类方法大致可以分为两种,即动态检测和静态检测,然后采用机器学习或深度学习算法对数据进行进一步的处理或者学习。
4.具体地,常用的恶意代码的静态特征包括关键api出现次数、关键特殊字符个数、指令码频数、指令码n-gram特征和字节序列n-gram特征等,之后使用随机森林以及支持向量机等传统机器学习算法训练恶意代码分类模型,进而对未知样本进行分类。恶意代码的静态分析技术依赖于特定工程,需要大量的先验知识作为支撑,特征的准确选择对于分类效果有着重大影响。对于特征函数高度相似的家族容易造成误判,不适合大批量样本。
5.常用的恶意代码的动态分析通过模拟恶意代码的真实运行环境来获取动态特征,是一种基于代码行为特征分析的技术,常用的恶意代码的动态特征包括api调用依赖图、系统调用依赖图和控制流图等,进而挖掘出存在的恶意行为的动态行为模式作为检测和分类恶意代码的依据。基于动态特征的检测方法对一部分恶意代码束手无策,比如,部分恶意样本会对自身所在的运行环境进行检测,一旦检测到了虚拟机,恶意代码会停止运行或者表现异常,从而无法获取行为特征;因此基于动态特征的检测方法适用性较弱。
6.总之,无论恶意代码的静态分析还是恶意代码的动态分析方法,普遍具有成本高、效率低、误判率高、适用性较弱的问题。


技术实现要素:

7.针对现有技术中存在的问题,本发明实施例提供了一种基于图神经网络的恶意代码家族分类方法、装置和存储介质,来解决现有技术中存在的一个或更多个问题。
8.本发明的一个方面,提供了一种基于图神经网络的恶意代码家族分类方法,该方法包括以下步骤:
9.提取恶意代码的动态特征中的系统调用特征,并基于所述系统调用特征建立恶意代码无向图,所述恶意代码无向图中每一个节点代表一个恶意代码;
10.提取恶意代码的静态特征作为对应节点的属性;
11.基于建立的无向图和提取到的节点属性构建带有节点属性的恶意代码关系图;
12.将样本集合中的样本和生成的恶意代码关系图输入图神经网络模型,对图神经网
络模型分别进行训练和测试,以基于经训练的图神经网络模型获得恶意代码家族分类结果。
13.在本发明一些实施方式中,所述系统调用特征为动态系统调用依赖图;所述基于所述系统调用特征建立恶意代码无向图包括以下步骤:基于动态特征中的调用特征获得各恶意代码节点的调用频数向量特征;基于每一个的恶意代码的调用频数向量特征,采用相似度算法计算各恶意代码节点与其余恶意代码节点的相似度;基于各恶意代码节点与其余恶意代码节点的相似度构建相似度矩阵;根据构建的相似度矩阵获得邻接矩阵;基于获得的邻接矩阵获得恶意代码节点的无向边集合,从而获得恶意代码无向图,所述恶意代码无向图包括恶意代码节点集合和恶意代码无向边集合。
14.在本发明一些实施方式中,所述动态特征中的调用特征为动态系统调用依赖图、恶意代码样本所有使用到的动态链接库或恶意代码样本所调用的应用程序接口序列,获得的各恶意代码节点的调用频数向量特征为系统调用频数向量特征、动态链接库调用频数向量特征或应用程序接口调用频数向量特征。
15.在本发明一些实施例中,所述静态特征包括以下特征中的一个或多个特征:关键api出现次数、关键特殊字符个数、指令码频数、指令码n-gram特征和字节序列n-gram特征。
16.在本发明一些实施例中,在对图神经网络模型分别进行训练和测试的过程中,使用所述图神经网络模型捕获一跳或者多跳的邻居关系。
17.在本发明一些实施例中,所述根据构建的相似度矩阵获得邻接矩阵包括:通过将邻接矩阵的与相似度矩阵中值小于预定阈值的元素对应的元素值设置为1,将邻接矩阵的其他元素的值设为0,来获得邻接矩阵。
18.在本发明一些实施例中,所述图神经网络模型为以下图神经网络模型中的一种或多种:图卷积神经网络gcn模型、graphsage模型和图注意力网络gat模型。
19.在本发明一些实施例中,所述方法还包括:利用多种图神经网络模型进行混合训练;通过投票表决获得各图神经网络的得票数,按多票数优先的方式选取图神经网络模型进行恶意软件家族分类。
20.本发明的另一方面,提供了一种基于图神经网络的恶意代码家族分类装置,该装置包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
21.本发明的又一方面,还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前所述方法的步骤。
22.本发明实施例提供的基于图神经网络的恶意代码家族分类方法和装置,解决了恶意代码动态和静态特征孤立分析的问题和没有考虑恶意代码样本之间的结构特征的问题,从而比传统方法更加合理,不仅可以降低训练集中的训练样本数,相比现有的方法,还可以提高恶意软件家族分类的准确度。此外,本发明一些实施例还可以将新提取的静态统计特征也可添加至节点属性,可以实现较好的灵活性和扩展性。
23.本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在书面说明及其权利要求书以及附图中具体指出的
结构实现到并获得。
24.本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
25.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。在附图中:
26.图1为本发明一实施例中基于图神经网络的恶意代码家族分类方法流程示意图。
27.图2为本发明另一实施例中基于图神经网络的恶意代码家族分类方法的流程示意图。
具体实施方式
28.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
29.在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
30.应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
31.为了解决现有技术中存在的问题,本发明提出了一种基于图神经网络的恶意代码家族分类方法,该方法用于解决传统方法中动态和静态特征孤立分析的问题,使得分类模型不完全依赖于某单一特征。进一步地,本发明还用于解决传统方法中没有考虑恶意代码之间的关联关系,即没有考虑的恶意代码样本之间的结构特征问题。此外,本发明的模型还可以适用于新提取的特征,即可以还可以将有新提取的特征也可囊括至本模型中,实现较好的灵活性和扩展性。
32.图1为本发明一实施例中基于图神经网络的恶意代码家族分类方法流程示意图。如图1所示,该方法包括以下步骤:
33.步骤s110,提取恶意代码的动态特征中的调用特征(如系统调用特征),并基于所述调用特征建立无向图。
34.在本发明实施例中,提取的动态特征中的系统调用特征为动态系统调用依赖图(system-call dependency graphs)特征,记为scd图,scd图的顶点集表示为v(scd)={s1,s2,s3,

,sm},其由某一程序执行期间调用的所有系统调用组成,m为所有系统调用的数量,scd图的边集e(scd)包含在执行期间交换参数的系统调用对,这些参数表示系统调用之间的数据流依赖关系。
35.基于所述系统调用特征建立无向图可建立无向图,其中,无向图可以定义为g1=(v,e),其中v={v1,v2,

,vi,

,vn}可以是恶意代码节点集合,其中vi表示id为i的恶意代码(恶意软件);e={e
ij
}是无向边集合,若vi和vj有关系,则e
ij
=1,否则e
ij
=0。
36.在本发明一些实施例中,基于所述系统调用特征建立无向图的步骤可包括:
37.步骤s111,基于动态系统调用依赖图获得各恶意代码节点的系统调用频数向量特征。
38.为了正确的对动态系统调用依赖图进行系统调用分组,可使用动态函数系统调用分组工具(如nttrace,本发明并不限于此)提供的数个(如30个,但并不限于此)系统调用组,即为每个系统调用指明它所属的组,可表示为c*,c*∈(c1,c2,

,ck,

,c30),k为系统调用组编号;也就是说如果给定程序p的动态系统调用依赖图有n个系统调用s1,s2,

,sn;可为每个系统调用si(1≤i≤n)找到一个对应的分组cj,1≤j≤30。
39.为每一个恶意软件统计各个系统调用分组的数量,生成一个长度为30的频数向量,于是得到各恶意代码节点的系统调用频数向量形式的特征(频数向量特征)。
40.在本发明另选实施例中,提取的恶意代码的动态特征中的调用特征也可以是恶意代码样本所有使用到的动态链接库,此时,可基于动态链接库获得各恶意代码节点的动态链接库调用频数向量特征。
41.此时,动态链接库调用频数向量特征的生成步骤可包括:
42.(1)使用dependency walker工具提取恶意代码样本所有使用到的动态链接库。
43.(2)根据微软visual c 所支持的三种dll对每个样本的动态链接库进行分类,生成一个成都为3的频数向量,得到每一个恶意样本动态链接库调用频数向量。
44.在本发明另选实施例中,提取的恶意代码的动态特征中的调用特征也可以是恶意代码样本所调用的应用程序接口序列,此时,可基于动态链接库获得各恶意代码节点的应用程序接口调用频数向量特征。
45.应用程序接口调用频数向量特征的生成步骤可包括:
46.(1)使用动态污点追踪技术提取恶意代码样本所调用的应用程序接口序列。
47.(2)对内核应用程序接口序列按照前缀io、ex、rtl、ke、zw、nt、ps、ndis分为8种,生成一个成都为8的频数向量,得到每一个恶意样本内核应用程序调用频数向量。
48.步骤s112,获得各恶意代码节点的系统调用频数向量特征之后,基于该系统调用频数向量特征,采用图像化处理算法可计算各恶意代码节点与其余恶意代码节点的相似度。
49.步骤s113,基于各恶意代码节点与其余恶意代码节点的相似度构建相似度矩阵s。
50.步骤s114,根据构建的相似度矩阵获得邻接矩阵a。
51.例如,构建相似度矩阵s之后,可以通过将邻接矩阵的与相似度矩阵s中值小于预定阈值λ的元素对应的元素的值设置为1,将邻接矩阵的其他元素的值设为0,来获得邻接矩阵a。
52.步骤s115,基于获得的邻接矩阵获得恶意代码节点无向图。
53.在获得的恶意代码节点无向图中,每一个节点代表一个恶意代码。更具体地,无向图g1=(v,e)中,v={v1,v2,

,vi,

,vn}为恶意代码节点集合,e={e
ij
}是无向边集合,若vi和vj有关系,则e
ij
=1,否则e
ij
=0。也即,e中的元素值是基于邻接矩阵a中的元素值得到的,例如,如果邻接矩阵a中的某元素a
ij
=1,则无向图的相应边e
ij
=1;如果邻接矩阵a中的某元素a
ij
=0,则无向图的相应边e
ij
=0。本步骤中获得的恶意代码节点无向图(简称为恶意代码无向图)是不带节点静态属性信息的无向图。
54.无向图中节点的意义不仅可以是系统调用频数向量,也可以是其他调用频数向
量。例如,在本发明另选实施例中,提取恶意代码的动态特征中的系统调用特征,并基于所述系统调用特征建立恶意代码无向图的步骤中,可以是提取动态特征中的恶意代码样本所有使用到的动态链接库特征或恶意代码样本所调用的应用程序接口序列特征,可基于提取的特征来分别获得各恶意代码节点的动态链接库(dll)调用频数向量特征或者应用程序接口(api)调用频数向量特征,此时,无向图中节点的意义不是系统调用频数向量,而是动态链接库(dll)调用频数向量或者应用程序接口(api)调用频数向量。
55.步骤s120,提取恶意代码的静态特征作为对应节点的属性。
56.例如,可以用x={x1,x2,

,xi,

,xn}表示节点属性集合,其中xi表示id为i的节点vi的静态统计特征。
57.本发明实施例中,恶意代码的静态特征可包括以下特征中的一个或多个特征:关键api(application programming interface,应用程序接口)出现次数、关键特殊字符个数、指令码频数、指令码n-gram特征和字节序列n-gram特征,但本发明不限于此。
58.步骤s130,基于建立的无向图和提取到的节点属性构建带有节点属性的恶意代码关系图。
59.在基于系统调用特征建立无向图g1之后,进一步可基于建立的无向图g1和节点属性构建带有节点属性的恶意代码关系图。
60.作为示例,可用g=(v,e,x)表示带有属性的恶意代码关系图,其中v={v1,v2,v3,

,vi

,vn}是恶意软件节点集合,其中vi表示id为i的恶意软件;e={e
ij
}是无向边集合;若vi和vj有关系,则e
ij
=1,否则为0;x={x1,x2,

,xi,

,xn}是节点属性集合,其中xi表示id为i的节点的静态统计特征。
61.通过生成带有节点属性的恶意代码的关系图,将恶意代码动态和静态特征向融合,可以解决恶意代码动态和静态特征孤立分析的问题。
62.在本发明实施例中,基于无向图和节点属性构建带有属性的恶意代码的关系图的步骤可包括:
63.步骤s131,对每一个的恶意代码的调用频数向量(如系统调用频数向量)采用图像化处理算法,如热核(heat kernel)相似度算法计算当前节点与其余节点的相似度,可定义为节点间的相似度。每一个的恶意代码的系统调用频数向量可视为一个节点v,为每一个节点计算它与其余节点的相似度,可构建出相似度矩阵s:
[0064][0065]
其中,s
ij
表示节点i和节点j之间的相似度的值,相似度的值为[0,1]之间的数值,并且s
11
=s
22


=s
ii
=s
nn
=1,即各个节点自身的相似度最大,值为1。
[0066]
在本发明实施例中,热核相似度算法仅为示例,还可以采用其他相似度算法,如余弦相似度等,本发明并不限于此。
[0067]
在计算节点间相似度时,节点的意义不仅可以是系统调用频数向量,也可以是动
态链接库(dll)调用频数向量,或者应用程序接口(api)调用频数向量。
[0068]
步骤s132,根据得到的相似度矩阵s,可得到邻接矩阵a:
[0069][0070]
构建相似度矩阵s之后,可以通过将邻接矩阵的与相似度矩阵s中值小于预定阈值λ的元素对应的元素值设置为1,将邻接矩阵的其他元素的值设为0,来获得邻接矩阵a。也即,当且仅当s
ij
《阈值λ,a
ij
=1。构建的邻接矩阵为n*n矩阵。阈值λ可以由人工事先规定,也可以通过小批量样本训练得到:首先选择每个家族的少量样本,提取每个样本的恶意代码系统调用频数向量,频数的距离;训练参数λ使得属于相同家族的图之间距离小同时不同家族的图之间距离大,通过选择适当阈值λ,可使得家族之间划分明显。
[0071]
本发明实施例中,得到邻接矩阵a之后,便可以基于得到的邻接矩阵a来获得恶意代码无向图中的无向边集合e,也即无向边集合中e
ij
的值与邻接矩阵a中a
ij
的值对应,由此可以获得恶意代码无向图。
[0072]
步骤s133,将每一个恶意代码节点对应的统计特征作为节点的属性,从而基于无向图和节点属性生成有属性的恶意代码的关系图。
[0073]
步骤s140,将样本集合中的样本和生成的恶意代码关系图输入图神经网络模型,对图神经网络模型分别进行训练和测试,以基于训练好的图神经网络模型获得恶意代码家族分类结果。
[0074]
在本发明实施例中,包括对图神经网络模型进行训练的训练步骤和进行测试的测试步骤。
[0075]
样本集合可包括训练样本集合、验证样本集合和测试样本集合。样本集合中样本的格式为[标签,id编号,特征]。更具体地,训练样本集合和验证样本集合中的样本可具有:恶意代码标签、恶意代码的id和样本特征。测试样本集合中的样本可含有恶意代码的id和样本特征,恶意代码标签为空,样本被输入至训练好的模型中进行测试之后便可针对该样本产生恶意代码标签。恶意代码标签表示恶意代码所属的家族的标识,每个恶意软件样本都有一个所属的家族。恶意代码的id是恶意代码的身份标识,使得每一个恶意软件都有一个唯一的标识。样本特征可包括前述提取的静态统计特征。
[0076]
在本发明一些实施例中,所采用的图神经网络模型可以是图卷积神经网络(gcn)、graphsage和图注意力网络(gat)等现有的神经网络模型,但本发明并不限于此,也可以是新出现的适用于本发明的其他图神经网络模型。
[0077]
在本发明实施例中,在图神经网络模型的训练阶段,可将训练样本集中的已经打标签的恶意代码样本数据和得到的恶意代码关系图输入至待训练的图神经网络模型,利用训练样本中的恶意代码标签对图神经网络模型进行训练。训练之后,可进一步对图神经网络模型进行验证,此时,将验证样本集中的样本和得到的恶意代码关系图输入至待训练的图神经网络模型,利用验证样本中的恶意代码标签对图神经网络模型进行验证,以进一步
优化图神经网络模型的参数。在测试阶段,可将测试样本集中的样本(或者新提取的恶意代码的特征)和得到的恶意代码关系图输入至待训练的图神经网络模型,从而可以得到恶意代码家族分类结果。
[0078]
在本发明一些实施例中,样本集合也可以不包括验证样本集合,此时可以省略对图神经网络模型进行验证的步骤。
[0079]
此外,在本发明一些实施例中,将生成的恶意代码关系图输入图神经网络之后,可以使用图神经网络捕获一跳或者多跳的邻居关系,考虑获得的邻居关系获得输出结果,从而解决没有考虑恶意代码样本之间的结构特征的问题。本发明使用图神经网络提取恶意代码之间的关联关系,充分挖掘了恶意代码之间的动态特征。
[0080]
在本发明实施例中,通过动态和静态特征融合,仅需要较少的训练样本就可以获得高准确度的恶意软件家族分类结果,可以提高恶意软件家族分类效率并降低开销。
[0081]
本发明技术方案解决了恶意代码动态和静态特征孤立分析的问题,如图2所示,首先通过使用恶意代码动态特征中的系统调用特征建立无向图,其中每一个节点代表一个恶意代码;其次使用恶意代码的静态统计特征作为对应节点的属性,生成一个带有节点属性的恶意代码的关系图,,从而比传统方法更加合理,不仅可以降低训练集中的训练样本数,相比现有的方法,还可以提高恶意软件家族分类的准确度。本发明还解决了没有考虑恶意代码样本之间的结构特征的问题,将上述生成的恶意代码的关系图输入图神经网络,使用图神经网络捕获一跳或者多跳的邻居关系,从而可以基于恶意代码样本之间关联的结构特征来提高恶意软件家族分类的准确度。此外,本发明针对新提取的静态统计特征也可添加至节点属性,从而囊括至本发明的图神经网络模型中,可以实现较好的灵活性和扩展性。
[0082]
此外,在本发明一些实施例中,还可以使用集成学习,将多种图神经网络模型进行混合训练,然后使用投票表决,按照各图神经网络的得票数,按多票数优先的方式选取图神经网络模型进行恶意软件家族分类。具体投票过程例如可以包括:使用一批数据训练多个网络,得到多个已经训练好的模型,在测试时,每一个模型都将根据输入的测试数据给出一个自己的分类结果,这些结果可能相同也可能不同,选择出现最多的那个分类结果作为最终的分类结果,这个过程就相当于模型们通过投票的方式,以多票数优先的原则选择了最终的分类结果。
[0083]
与上述方法相应地,本发明还提供了一种基于图神经网络的恶意代码家族分类装置,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述边缘计算服务器部署方法的步骤。
[0084]
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如光盘、u盘、软盘、硬盘等。
[0085]
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
[0086]
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
[0087]
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
[0088]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献