一种恶意软件检测模型训练、恶意软件检测方法及装置与流程

文档序号:29978629发布日期:2022-05-11 12:25阅读:116来源:国知局
一种恶意软件检测模型训练、恶意软件检测方法及装置与流程

1.本发明属于安全监测技术领域,具体涉及到一种恶意软件检测模型训练、恶意软件检测方法及装置。


背景技术:

2.随着移动互联网的不断发展,在电力行业,电力移动终端的数量不断增长,但同时,恶意软件的快速增长给电力移动终端用户带来了巨大的危害,包括资费消耗、隐私窃取以及远程控制等,而电力行业等关键领域的工业控制系统作为关乎国计民生的重要基础设施,一直以来都是网络安全攻击的重点,极易成为网络战的首要目标,因此需要一种快速高效的恶意软件检测方法来对电力移动互联终端进行安全防护。
3.目前恶意软件检测技术可以分为静态分析技术,动态分析技术以及基于机器学习的分析技术三类。
4.静态分析方法是对整个app的代码和资源进行分析,能达到很高的代码覆盖率,但是,由于并不真正执行应用程序,该方法无法得到软件的真实执行路径和执行上下文,且无法避免代码混淆以及动态代码的加载带来的干扰。
5.动态分析是根据app运行时的行为来分析其恶意行为,通常app在android的虚拟机或者一台真实的物理机上运行,动态分析技术能够避免代码混淆以及动态代码的加载带来的干扰,但是该方法存在代码覆盖率不高、分析时间长、效率低的问题。
6.基于机器学习的恶意软件检测方法的基本原理是通过程序分析等技术提取不同的特征描述待分析样本的不同行为,然后每一个特征样本均用一个固定维度向量表示,最后借助于现有的机器学习算法对已知特征样本进行训练并构建分类器,从而能够对未知样本进行预测判断,但是,现有的特征提取大多直接分析软件本身,导致基于字符串形式存在的特征容易被现有的混淆技术所篡改,从而绕过恶意软件检测,因此,通过传统的机器学习算法无法实现对恶意软件的准确检测。


技术实现要素:

7.因此,针对现有技术中的问题,本发明提供一种恶意软件检测模型训练、恶意软件检测方法及装置,用以解决现有技术中存在的问题。
8.第一方面,本发明提供一种恶意软件检测模型训练方法,包括:获取软件样本库,软件样本库中包括多个恶意软件;对软件样本库中的恶意软件进行分析,得到各恶意软件对应的训练合成行为图;对训练合成行为图添加第一标签;根据训练合成行为图获取一个或多个训练公共行为图,各训练公共行为图分别对应一个恶意软件家族,对训练公共行为图添加第二标签;将训练合成行为图和训练公共行为图输入到图匹配模型中,得到训练合成行为图与训练公共行为图的第一相似系数;确定第一标签与第二标签的第二相似系数,对第一相似系数和第二相似系数作差,若第一相似系数和第二相似系数的差值小于预设相似系数,则将当前的图匹配模型确定为恶意软件检测模型。
9.可选的,在本发明提供的恶意软件检测模型训练方法中,对软件样本库中的恶意软件进行分析,得到各恶意软件对应的训练合成行为图,包括:对软件样本库中的恶意软件进行反编译,得到反编译代码和清单配置文件;根据反编译代码生成训练基本行为图;根据反编译代码和清单配置文件生成测试脚本,利用测试脚本对恶意软件进行动态测试,得到动态运行信息;通过动态运行信息和训练基本行为图生成训练合成行为图。
10.可选的,在本发明提供的恶意软件检测模型训练方法中,训练合成行为图包括一个或多个极大连通子图,极大连通子图包括一个或多个边,根据训练合成行为图获取一个或多个训练公共行为图,包括:根据第一标签对训练合成行为图进行分类组合,得到一个或多个训练合成行为图集合;确定各训练合成行为图集合中各极大连通子图的边的权值;基于各训练合成行为图集合中各极大连通子图的边的权值,分别确定与各训练合成行为图集合相对应的训练公共行为图。
11.可选的,在本发明提供的恶意软件检测模型训练方法中,基于训练合成行为图集合中各极大连通子图的边的权值,确定与训练合成行为图集合相对应的训练公共行为图,包括:根据训练合成行为图集合中各极大连通子图的边的权值,确定各极大连通子图的边平均权值,以及训练合成行为图集合的子图间权值平均值,子图间权值平均值为训练合成行为图集合中极大连通子图的边平均权值的均值;将边平均权值大于子图间权值平均值的极大连通子图中,权值小于预设值的边进行删除,形成中间图;将边的权值的和最大的中间图确定为训练合成行为图集合对应的训练公共行为图。
12.可选的,在本发明提供的恶意软件检测模型训练方法中,还包括:若第一相似系数和第二相似系数的差值大于或等于预设相似系数,则利用反向传播算法对图匹配模型进行优化训练,返回将训练合成行为图和训练公共行为图输入到图匹配模型中,得到训练合成行为图与训练公共行为图的第一相似系数的步骤,直到第一相似系数和第二相似系数的差值小于预设相似系数。
13.第二方面,本发明提供了一种恶意软件检测方法,包括:获取待检测软件的合成行为图;将合成行为图和恶意软件的公共行为图输入到恶意软件检测模型中,计算合成行为图和公共行为图的相似度,若相似度大于预设相似度,则判定待检测软件为恶意软件,恶意软件检测模型通过本发明中任一项的恶意软件检测模型训练方法确定。
14.可选的,在本发明提供的恶意软件检测方法中,获取待检测软件的合成行为图,包括:对待检测软件进行反编译,得到待检测软件的反编译代码;根据待检测软件的反编译代码生成控制流图;根据控制流图得到待检测软件的基本行为图;对待检测软件进行动态分析收集待检测软件的动态运行信息,将待检测软件的动态运行信息加入到基本行为图中,得到合成行为图。
15.第三方面,本发明提供一种恶意软件检测模型训练装置,包括:数据获取模块,用于获取软件样本库,软件样本库中包括多个恶意软件;数据分析模块,用于对软件样本库中的恶意软件进行分析,得到各恶意软件对应的训练合成行为图;标签添加模块,用于对训练合成行为图添加第一标签;提取模块,用于根据训练合成行为图获取一个或多个训练公共行为图,各训练公共行为图分别对应一个恶意软件家族,对训练公共行为图添加第二标签;输入模块,用于将训练合成行为图和训练公共行为图输入到图匹配模型中,得到训练合成行为图与训练公共行为图的第一相似系数;模型确定模块,用于确定第一标签与第二标签
的第二相似系数,对第一相似系数和第二相似系数作差,若第一相似系数和第二相似系数的差值小于预设相似系数,则将当前的图匹配模型确定为恶意软件检测模型。
16.第四方面,本发明提供一种恶意软件检测装置,包括:图获取模块,用于获取待检测软件的合成行为图;图处理模块,用于将合成行为图和恶意软件的公共行为图输入到恶意软件检测模型中,计算合成行为图和公共行为图的相似度,若相似度大于预设相似度,则判定待检测软件为恶意软件,恶意软件检测模型通过本发明中任一项的恶意软件检测模型训练方法确定。
17.第五方面,本发明提供一种计算机设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,从而执行如本发明第一方面提供的恶意软件检测模型训练方法,或,如本发明第二方面提供的恶意软件检测方法。
18.本发明技术方案,具有如下优点:
19.本发明提供的恶意软件检测模型训练方法,对软件样本库中的恶意软件进行分析,得到训练合成行为图,从训练合成行为图中提取出不同恶意软件家族的训练公共行为图,通过将训练合成行为图和训练公共行为图输入到图匹配模型进行训练,得到恶意软件检测模型,在本发明提供的恶意软件检测模型训练方法中通过提取训练公共行为图缩小了在检测恶意软件时的检测范围,提高了恶意软件检测模型的检测速度,以及检测结果的准确性。
附图说明
20.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为本发明实施例中恶意软件检测模型训练方法的一个具体实例的流程图;
22.图2为本发明实施例中形成中间图的方法的一个具体实例的流程图;
23.图3为本发明实施例中恶意软件检测方法的一个具体实例的流程图;
24.图4为本发明实施例中恶意软件检测模型训练装置的一个具体实例的结构示意图;
25.图5为本发明实施例中恶意软件检测装置的一个具体实例的结构示意图;
26.图6为本发明实施例中计算机设备的一个具体实例的结构示意图。
具体实施方式
27.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
29.在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
30.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
31.本发明实施例提供一种恶意软件检测模型训练方法,如图1所示,该方法包括:
32.步骤s1:获取软件样本库,软件样本库中包括多个恶意软件。
33.在一可选实施例中,通过drebin数据集来获取恶意软件,其中各恶意软件包括与之对应的家族标签,且家族标签通过人工校验,具有较高正确性。
34.步骤s2:对软件样本库中的恶意软件进行分析,得到各恶意软件对应的训练合成行为图。
35.在一可选实施例中,对软件样本库中的恶意软件进行静态分析和动态分析相结合的方式进行分析,得到各恶意软件对应的训练合成行为图。
36.在本发明实施例中,通过对恶意软件进行静态分析和动态分析相结合的方式进行分析,使得到的训练合成行为图代码覆盖率高且避免了代码混淆及动态代码的加载带来的干扰。
37.步骤s3:对训练合成行为图添加第一标签。
38.在一可选实施例中,对训练合成行为图添加该训练合成行为图对应的恶意软件的家族标签。
39.步骤s4:根据训练合成行为图获取一个或多个训练公共行为图,各训练公共行为图分别对应一个恶意软件家族,对训练公共行为图添加第二标签。
40.在一可选实施例中,根据属于同一个恶意家族的训练合成行为图可以获取到一个与该恶意家族相对应的训练公共行为图,对该训练公共行为图添加与之对应的家族标签。
41.步骤s5:将训练合成行为图和训练公共行为图输入到图匹配模型中,得到训练合成行为图与训练公共行为图的第一相似系数。
42.在一可选实施例中,图匹配模型包括编码单元、传播单元和聚合单元。
43.其中,编码单元可以通过多层感知机搭建,编码单元包括word2vec模型和独热编码,word2vec模型用来对训练合成行为图和训练公共行为图中每个节点的特征信息进行向量化处理,得到节点的向量化特征信息,节点的特征信息可以是节点名,独热编码用来对训练合成行为图和训练公共行为图中每条边的特征信息进行向量化处理,得到边的向量化特征信息;
44.传播单元使用注意力机制。
45.聚合单元使用聚合函数计算得到所有节点的聚合信息,将得到的聚合信息嵌入到新的向量空间,通过新的向量空间来表征全图。
46.步骤s6:确定第一标签与第二标签的第二相似系数,对第一相似系数和第二相似系数作差,若第一相似系数和第二相似系数的差值小于预设相似系数,则将当前的图匹配模型确定为恶意软件检测模型。
47.在一可选实施例中,对所有第一标签和所有第二标签的标签数量进行统计,得到第一标签中的恶意标签在第一标签中的第一数量比重和第二标签中的恶意标签在第二标
签中的第二数量比重,将第一数量比重和第二数量比重作除,得到第二相似系数,对第一相似系数和第二相似系数作差,若第一相似系数和第二相似系数的差值小于预设相似系数,则将当前的图匹配模型确定为恶意软件检测模型,预设相似系数按照实际需求进行设定,示例性地,可以将预设相似系设定为0.1。
48.在本发明实施例中,通过对软件样本库中的恶意软件进行分析,得到训练合成行为图,从训练合成行为图中提取出不同恶意软件家族的训练公共行为图,通过将训练合成行为图和训练公共行为图输入到图匹配模型进行训练,得到恶意软件检测模型,在本发明实施例提供的恶意软件检测模型训练方法中通过提取训练公共行为图缩小了在检测恶意软件时的检测范围,提高了恶意软件检测模型的检测速度,以及检测结果的准确性。
49.在一可选实施例中,对软件样本库中的恶意软件进行分析,得到各恶意软件对应的训练合成行为图,包括:
50.首先,对软件样本库中的恶意软件进行反编译,得到反编译代码和清单配置文件。
51.在一可选实施例中,对于安卓应用程序,对应用程序的apk文件进行反编译,得到反编译代码、androidmanifest.xml文件和.dex文件。
52.然后,根据反编译代码生成训练基本行为图。
53.在一可选实施例中,根据androidmanifest.xml文件和.dex文件得到应用程序编程接口(api)调用信息,搜索得到意图(intent)调用信息。
54.根据反编译代码生成与反编译代码中组件类相对应的控制流图,使用到达定义算法对api调用信息及intent调用信息的调用者和调用目标进行定位,根据api调用信息、intent调用信息、api调用信息及intent调用信息的调用者和调用目标对控制流图添加对应链接,得到训练基本行为图。
55.在一可选实施例中,应用软件在完成特定功能时会产生api调用信息和调用关系,将api调用信息连接起来,得到包含节点和边的函数调用图,其中,节点代表api调用信息名称,边代表调用关系。
56.示例性地,对于特定功能的api调用信息,如:
[0057][0058]
上述代码为发送信息时的api调用信息,其中,api调用信息按照uri.parse、intent、intent.putextra、startactivity的顺序进行连接。
[0059]
其次,根据反编译代码和清单配置文件生成测试脚本,利用测试脚本对恶意软件进行动态测试,得到动态运行信息。
[0060]
在一可选实施例中,生成测试脚本的步骤包括,先通过soot框架对.dex文件进行处理,将.dex文件中的dalvik字节码转换为jimple代码;然后根据jimple代码得到活动(activity)之间的跳转关系,再依据activity跳转关系生成活动转换图,最后根据活动转换图生成测试脚本。
[0061]
在一可选实施例中,在appium框架下对应用软件进行动态测试,得到动态运行信息。
[0062]
动态运行信息包括api调用信息、intent调用信息和内容提供(content provider)调用信息。
[0063]
在一可选实施例中,在对恶意软件进行动态测试时,可以在jni层挂钩,获取java层和本机层之间与binder相关的api调用信息,在service manager层挂钩,获取来自应用软件的intent调用信息和content provider调用信息。
[0064]
由于java层是通过jni接口来调用binder驱动,且binder请求需要通过service manager,而intent调用信息、content provider调用信息的底层实现都是binder机制,因此在jni层上挂钩可以获得intent调用信息和content provider调用信息。
[0065]
最后,通过动态运行信息和训练基本行为图生成训练合成行为图。
[0066]
在一可选实施例中,将动态运行信息中的边调用关系和训练基本行为图中的边调用关系进行对比,若调用关系一致,则将动态运行信息中的边和该边的调用关系替换为训
练基本行为图中的边和该边的调用关系,若调用关系不一致,则在训练基本行为图中建立新的边和该边的调用关系。
[0067]
在一可选实施例中,训练合成行为图包括一个或多个极大连通子图,极大连通子图包括一个或多个边,根据训练合成行为图获取一个或多个训练公共行为图,包括:
[0068]
首先,根据第一标签对训练合成行为图进行分类组合,得到一个或多个训练合成行为图集合。
[0069]
在一可选实施例中,第一标签包括各训练合成行为图的所属恶意家族,按照第一标签将训练合成行为图分为一个或多个训练合成行为图集合,每个训练合成行为图集合对应一个恶意家族。
[0070]
然后,确定各训练合成行为图集合中各极大连通子图的边的权值。
[0071]
在一可选实施例中,每个训练合成行为图中包括一个或多个极大连通子图和最大公共子图。
[0072]
对于训练合成行为图集合c中第i个训练合成行为图gi的第j个极大连通子图g
ij
的边的权值的计算步骤为:
[0073]
1、通过mcsplitrlr算法得到g
ij
和c中除gi外的训练合成行为图的最大公共子图mps。
[0074]
2、为g
ij
的每条边建立权值,若g
ij
中存在与mps相同的边,则该边的权值加1,将每条边的权值与c中训练合成行为图的数量作除,得到g
ij
的边的权值。
[0075]
参照对极大连通子图g
ij
的边的权值的计算步骤计算c中其余极大连通子图的边的权值。
[0076]
在本发明实施例中,使用mcsplitrlr算法计算g
ij
和c中除gi外的训练合成行为图的最大公共子图mps,与当前的mcsplit算法相比,采用了顶点冲突学习的新分支策略,不再依赖图的静态属性顶点度数,而是对顶点在历史搜索中产生的影响力进行学习,拥有更高的求解效率。
[0077]
最后,基于各训练合成行为图集合中各极大连通子图的边的权值,分别确定与各训练合成行为图集合相对应的训练公共行为图。
[0078]
在一可选实施例中,基于训练合成行为图集合中各极大连通子图的边的权值,确定与训练合成行为图集合相对应的训练公共行为图,包括:
[0079]
首先,根据训练合成行为图集合中各极大连通子图的边的权值,确定各极大连通子图的边平均权值,以及训练合成行为图集合的子图间权值平均值,所述子图间权值平均值为所述训练合成行为图集合中极大连通子图的边平均权值的均值。
[0080]
在一可选实施例中,确定各极大连通子图的边平均权值,如确定g
ij
的边平均权值:
[0081][0082]
其中,ek表示编号为k的边,e
ij
表示g
ij
的边集,表示编号为k的边的权值,|e
ij
|表示e
ij
中边的数量,表示g
ij
边的平均权值。
[0083]
参照上述确定g
ij
的边平均权值的方法计算c中其余极大连通子图的边平均权值。
[0084]
确定训练合成行为图集合的子图间权值平均值,如确定c中gi的子图间权值平均
值:
[0085][0086]
参照上述确定gi子图间权值平均值的方法计算c中其余训练合成行为图的子图间权值平均值。
[0087]
然后,将边平均权值大于所述子图间权值平均值的极大连通子图中,权值小于预设值的边进行删除,形成中间图。
[0088]
在一可选实施例中,将边平均权值大于所述子图间权值平均值的极大连通子图中,如图2所示删除权值小于预设值的边《a,b》、边《d,f》和边《e,g》,预设值可以按照实际需求进行设定,示例性地,将预设值设定为边平均权值,若节点不与任何边相连,则将该节点删除,如节点g。
[0089]
最后,将边的权值的和最大的中间图确定为所述训练合成行为图集合对应的训练公共行为图。
[0090]
在一可选实施例中,还包括:若第一相似系数和第二相似系数的差值大于或等于预设相似系数,则利用反向传播算法对图匹配模型进行优化训练,返回将训练合成行为图和训练公共行为图输入到图匹配模型中,得到训练合成行为图与训练公共行为图的第一相似系数的步骤,直到第一相似系数和第二相似系数的差值小于预设相似系数。
[0091]
在一可选实施例中,图匹配模型包括adam优化器,在对图匹配模型进行优化训练时,可以用汉明距离作为距离度量,得到损失函数值,将损失函数值发送到adam优化器来对图匹配模型进行优化训练。
[0092]
本发明实施例提供一种恶意软件检测方法,如图3所示,该方法包括:
[0093]
步骤s7:获取待检测软件的合成行为图。
[0094]
步骤s8:将合成行为图和恶意软件的公共行为图输入到恶意软件检测模型中,计算合成行为图和公共行为图的相似度,若相似度大于预设相似度,则判定待检测软件为恶意软件,恶意软件检测模型通过上述实施例中任一项的恶意软件检测模型训练方法确定。
[0095]
在一可选实施例中,数据库中存放一个或多个恶意软件的公共行为图,将待检测软件的合成行为图和一个恶意软件的公共行为图输入到恶意软件检测模型中,计算合成行为图和公共行为图的相似度,若相似度小于预设相似度,则将待检测软件的合成行为图和其它恶意软件的公共行为图输入到恶意软件检测模型中,直到待检测软件的合成行为图与数据库中所有恶意软件的公共行为图的相似度都小于预设相似度,判定待检测软件为非恶意软件。
[0096]
在一可选实施例中,预设相似度可以按照实际需求进行设定,示例性地,预设相似度设定为0.9。
[0097]
在一可选实施例中,获取待检测软件的合成行为图,包括:
[0098]
首先,对待检测软件进行反编译,得到待检测软件的反编译代码,根据待检测软件的反编译代码生成控制流图,再根据控制流图得到待检测软件的基本行为图,获得待检测软件的基本行为图的步骤内容参见上述实施例中的描述,在此不再赘述。
[0099]
最后,对待检测软件进行动态分析收集待检测软件的动态运行信息,将待检测软
only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash me mory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state d rive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
[0114]
本发明实施例还提供一种计算机设备,如图6所示,该计算机设备可以包括至少一个处理器61、至少一个通信接口62、至少一个通信总线63和至少一个存储器64,其中,通信接口62可以包括显示屏(display)、键盘(keyboard),可选通信接口62还可以包括标准的有线接口、无线接口。存储器64可以是高速ram存储器(random access memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器64可选的还可以是至少一个位于远离前述处理器61的存储装置。存储器64中存储应用程序,且处理器61调用存储器64中存储的程序代码,以用于执行上述任意发明实施例的步骤。
[0115]
其中,通信总线63可以是外设部件互连标准(peripheral component intentconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。通信总线63可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0116]
其中,存储器64可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:hdd)或固态硬盘(英文:solid-state drive,缩写:ssd);存储器64还可以包括上述种类的存储器的组合。
[0117]
其中,处理器61可以是中央处理器(英文:central processing unit,缩写:cpu),网络处理器(英文:network processor,缩写:np)或者cpu和np的组合。
[0118]
其中,处理器61还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:asic),可编程逻辑器件(英文:programmable logic device,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:fpga),通用阵列逻辑(英文:generic array logic,缩写:gal)或其任意组合。
[0119]
可选地,存储器64还用于存储程序指令。处理器61可以调用程序指令,实现如本发明图1实施例中所示的恶意软件检测模型训练或本发明图3实施例中所示的恶意软件检测方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1