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

一种获取代码分类模型的方法、装置、介质及电子设备与流程

2022-12-07 03:01:37 来源:中国专利 TAG:


1.本技术涉及软件代码分类领域,具体而言本技术实施例涉及一种获取代码分类模型的方法、装置、介质及电子设备。


背景技术:

2.恶意代码的不断增长,给安全人员带来了极大困扰。但是很多新型的恶意代码都是已有恶意代码的变种,这些代码往往具有内在的关联性、相似性。具体表现为具有高度相似的结构,相同的函数调用顺序,或者来自于同一个团队编写等等。因此判断未知的恶意代码是否是某些已知恶意代码家族的变体,与已知的恶意代码家族是否具有同源性的关系,可以发现大部分的恶意代码,同时可以对与已知家族具有同源性关系的未知恶意代码有更好的了解和判断。
3.相同家族的恶意代码具有极大的相似性,不同家族的恶意代码之间具有差异性,这就为采用模型的方法对恶意软件家族进行同源性判断提供了可能。目前关于恶意软件家族同源性分析已有的识别算法大致可以分为以下三种。基于相似性匹配的恶意代码家族同源性判别方法。将恶意代码家族同源性判别问题转换成计算两个恶意代码之间相似性的问题,相似性越高,则两个恶意代码源自同一个家族的可能性就越大;基于聚类方法的恶意代码家族同源性判别方法。通常是利用聚类算法操作相似性值获取待测样本与已知样本之间的同源关系;基于机器学习、深度学习方法的恶意代码家族同源性判别方法。将恶意代码家族同源性判别问题转换成恶意代码家族分类模型构建的问题,可以采用机器学习、深度学习的方法对恶意代码家族进行分类识别。
4.基于相似性匹配和聚类算法的思路都需要计算特征之间的相似性,但是在该过程中存在两个难点:1)图相似性计算是一个np问题,计算复杂度太大,时间成本过高。2)当特征类型较多时,需要考虑不同特征的相似性计算问题,导致相似性模型较为复杂,影响同源性结果的判定。因此,目前的研究大多采用上述第三种方法。即将恶意代码同源性判定问题转换成机器学习算法中的多分类问题。然而该方法基于一个假设,即认为数据可分为n种已知的、具有标签的类别,且输入必定属于这n种类别之一。也就是说该方法解决的是恶意代码家族的闭集分类问题。然而真实环境中的恶意代码家族众多,无法收集到所有的家族进行模型训练,实际环境中未知类的家族占大多数,因此采用闭集识别的方法,无法准确测试真实环境中的恶意代码家族。虽然目前的研究中有通过添加阈值的方法,来确定接收或拒绝测试样本所属的类,但是识别效果受噪声、扰动等因素的严重影响。


技术实现要素:

5.本技术实施例的目的在于提供一种获取代码分类模型的方法、装置、介质及电子设备,本技术的实施例引入开集识别,该开集识别的目标是对已知家族的类别进行正确分类,同时也能识别出未知类别,即如果待测样本属于模型训练过的已知类中的一种家族则准确识别为该家族,如果属于模型没有学习过的未知类家族,则准确识别将其识别为未知
家族。
6.第一方面,本技术实施例提供一种获取代码分类模型的方法,所述方法包括:对样本集中各可执行代码样本进行预处理,得到与所述各可执行代码样本对应的灰度图像;根据所述灰度图像和卷积神经网络模型获取特征数据;根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。
7.本技术的一些实施例通过将可执行代码样本数据转换为图像,并从图像提取特征,在结合这些特征训练目标开集识别模型,使得本技术的一些实施例可以识别未知类别的可执行代码。
8.在一些实施例中,所述样本集包括训练集和测试集,其中,所述对样本集中各可执行代码样本进行预处理得到与所述各可执行代码样本对应的灰度图像,包括:将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,其中,所述汇编指令子序列用于表征多个汇编指令在相应可执行代码样本中的前后顺序关系;根据所述文档得到与所述每个可执行代码样本对应的所述灰度图像。
9.本技术的一些实施例将各可执行恶意代码样本转换为以汇编指令子序列为句子的文档,通过引入该汇编指令子序列能够解决现有技术中单一汇编指令特征无法反映指令序列前后之间顺序关系的缺点,能够更加充分地提取汇编指令序列的信息。
10.在一些实施例中,所述将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,包括:对所述训练集和所述测试集中的每个可执行恶意代码样本进行反汇编处理,得到与所述每个可执行恶意代码样本对应的汇编文件;从每个汇编文件提取程序段中的汇编指令得到与所述每个汇编文件对应的汇编指令序列;利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列。
11.本技术的一些实施例利用滑动窗口得到汇编子序列,提升数据处理的速度。
12.在一些实施例中,所述利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列,包括:将滑动窗口在与所述训练集对应的所有汇编指令序列中滑动,得到n个不同的初始汇编指令子序列c1,c2,c3,...,cn;对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列。
13.本技术的一些实施例通过对初始汇编指令子序列进行筛选可以去除特殊样本或者特征区分度不够的样本,提升样本集中数据的质量。
14.在一些实施例中,所述训练集共包括k个可执行恶意代码样本;其中,所述对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列,包括:通过统计任意一个初始汇编指令子序列是否在所述k个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列。
15.本技术的一些实施例通过初始汇编指令子序列的出现频次来筛选各汇编指令子序列,改善训练数据质量。
16.在一些实施例中,所述通过统计任意一个初始汇编指令子序列是否在所述k个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列,包括:若确认所述任意一个初始汇编指令子序列在所述k个可执行恶意代码样本中的总出现次数大于第一数值且小于第二数值,则将所述任意一个初始汇编指令子序列作为一个所述汇编指令子序列,其中,若所述任一一个初始汇编指令子序列在一个
可执行恶意代码样本中出现次数大于或等于1则记录出现次数为1,所述第二数值大于所述第一数值。
17.本技术的一些实施例通过频率区间(即由第一数值和第二数值限定的区间)来去除部分初始汇编指令子序列,可以去除特殊样本(即出现次数非常少)和特征区分度不够(即出现次数过多),提升样本数据的质量。
18.在一些实施例中,所述滑动窗口方法采用n-gram方法。
19.本技术的一些实施例可以采用n-gram方法提取子序列,该方法能够提取汇编指令序列前后之间的顺序关系。
20.在一些实施例中,所述根据所述文档得到与所述每个可执行恶意代码样本对应的所述灰度图像,包括:利用句嵌入模型将每个所述文档包括的所述汇编指令子序列转换成向量;根据所述向量得到与每个所述文档对应的所述灰度图像。
21.本技术提出的通过滑动窗口和句嵌入相结合的数据预处理方法能够解决现有技术中单一汇编指令特征无法反映指令序列前后之间顺序关系的缺点,能够更加充分地提取汇编指令序列的信息。
22.在一些实施例中,所述根据所述灰度图像和卷积神经网络模型获取特征数据,包括:将与所述训练集中每个可执行恶意代码样本对应的灰度图像逐一输入到初始卷积神经网络,并对所述初始卷积神经网络进行训练;获取所述初始卷积神经网络提供的类别输出结果与对应可执行恶意代码样本的类别标签的对比结果,并依据所述对比结果调整所述初始卷积神经网络模型的参数,直到分类准确率达到预先设定阈值,结束训练得到所述卷积神经网络模型;提取所述卷积神经网络模型中全连接层的输出作为所述特征数据。
23.本技术的一些实施例通过训练得到的卷积神经网络模型得到各灰度图像的特征数据。
24.在一些实施例中,所述卷积神经网络模型为mobilenet模型。
25.在一些实施例中,所述根据所述特征对开集识别模型进行训练得到目标开集识别模型,包括:将所述特征数据输入到初始开放长尾识别模型open long-tailed recognition中,构造开集识别模型;基于与所述测试集中每个可执行恶意代码样本对应的灰度图像样本,对所述开集识别模型进行测试,预先设定阈值,如果未知类别的分类准确率低于所述阈值,则调整所述open long-tailed recognition模型的参数,直至未知类别准确率达到所述阈值,获取所述目标开集识别模型,其中,所述测试集包括已知类别家族和未知类别家族。
26.本技术的一些实施例通过测试集训练开集识别模型得到目标开集识别模型。
27.在一些实施例中,所述open long-tailed recognition模型包括动态元嵌入dynamic meta-embedding部分,其中,所述dynamic meta-embedding部分被配置为在所述特征数据中加入视觉记忆特征。
28.本技术的一些实施例采用动态元嵌入模型完善特征数据,进而获取整体特征。
29.在一些实施例中,所述open long-tailed recognition模型还包括调制注意力modulated attention部分,其中,所述modulated attention用于区分大样本类和小样本类。
30.本技术的一些实施例对上述特征数据进行修改,包括添加视觉记忆特征和
modulated注意力机制,进而获取整体特征。
31.在一些实施例中,所述open long-tailed recognition模型还包括余弦分类器部分,其中,所述余弦分类器至少被配置为可根据概率识别出属于未知家族的恶意代码。
32.本技术的一些实施例提供一种分类器模型。
33.第二方面,本技术的一些实施例提供一种识别代码类别的方法,所述方法包括:获取待识别恶意代码文件;获取与所述待识别恶意代码对应的灰度图像;将所述灰度图像输入如第一方面任意实施例所述的卷积神经网络模型获取特征数据;将所述特征数据输入如第一方面任一实施例所述的目标开集识别模型中,得到分类结果。
34.第三方面,本技术的一些实施例提供一种获取代码分类模型的装置,所述装置包括:数据预处理模块,被配置为对训练集和测试集中各可执行代码样本进行预处理,得到与所述各可执行代码样本对应的灰度图像;特征数据获取模块,被配置为根据所述灰度图像和卷积神经网络模型获取特征数据;目标开集识别模型获取模块,被配置为根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。
35.第四方面,本技术的一些实施例提供一种识别恶意代码类别的装置,所述装置包括:待识别恶意代码文件获取模块,被配置为获取待识别恶意代码文件;灰度图像获取模块,被配置为获取与所述待识别恶意代码对应的灰度图像;特征提取模块,被配置为将所述灰度图像输入如第一方面任意实施例所述的卷积神经网络模型获取特征数据;分类模块,被配置为将所述特征数据输入如第一方面任意实施例所述的目标开集识别模型中,得到分类结果。
36.第五方面,本技术的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如第一方面或第二方面任意实施例所述的方法。
37.第六方面,本技术的一些实施例提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现如第一方面和第二方面任意实施例所述的方法。
附图说明
38.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
39.图1为本技术实施例提供的识别可执行代码类型的系统;
40.图2为本技术实施例提供的获取代码分类模型的方法流程图之一;
41.图3为本技术实施例提供的获取代码分类模型的方法流程图之二;
42.图4为本技术实施例提供的识别可执行代码类型的模型的架构图;
43.图5为本技术实施例提供的识别代码类别的方法的流程图;
44.图6为本技术实施例提供的获取代码分类模型的装置组成示意图;
45.图7为本技术实施例提供的识别代码类别的装置的组成框图;
46.图8为本技术实施例提供的电子设备组成示意图。
具体实施方式
47.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
48.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
49.现有技术解决的是恶意代码家族的闭集分类问题,没有考虑到开集识别的因素。实际上真实环境中恶意代码家族众多,现有技术很容易将未知的恶意代码家族错误的识别为已知类恶意代码家族中的一种。此外,现有技术中仅提取单一的汇编指令作为特征空间的特征维度难以完全代表指令前后间关系的信息,不能反映汇编指令序列相对完整的意义。
50.本技术的一些实施例的技术方案可以解决现有技术中不能识别未知类恶意代码家族的问题,例如,本技术的一些实施例将图像领域中的开集识别技术引入到恶意代码家族同源分析的研究中,能够在真实环境的检测中,准确识别已知类家族的同时高效识别出未知类家族,避免传统闭集分类模型中无法的准确识别出未知类别的问题。例如,本技术的一些实施例还通过滑动窗口和句嵌入相结合的数据预处理方法解决现有技术中单一汇编指令特征无法反映指令序列前后之间顺序关系的缺点,能够更加充分地提取汇编指令序列的信息。
51.请参看图1,图1为本技术一些实施例提供的识别可执行代码类型的系统,该系统包括客户端200以及服务器端100。
52.客户端200获取了一段需要进行类别识别的可执行代码,则该客户端将待分类可执行代码发送至服务器端100。
53.服务器端100接收该待分类可执行代码,并采用部署在服务器端100上的可执行代码类别识别模型进行类型识别,并将分类结果反馈至客户端200。
54.可以理解的是,为了使得服务器端100具备识别可执行代码(例如,恶意可执行代码)需要在该服务器端100上部署相关的识别模型并基于样本数据对识别模型进行训练,最终得到具备可执行代码类别识别的模型。
55.下面结合图2示例性阐述对服务器端100上代码识别模型进行训练的过程。
56.如图2所示,本技术实施例提供一种获取代码分类模型的方法,该方法包括:
57.s101,对样本集中各可执行代码样本进行预处理,得到与所述各可执行代码样本对应的灰度图像。
58.需要说明的是,在本技术的一些实施例中,所述样本集包括训练集和测试集。
59.下面结合训练集和测试集示例性阐述s101的实现过程。
60.在本技术的一些实施例中,s101示例性包括:
61.第一步,将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,其中,所述汇编指令子序列用于表征多个汇编指令在相应可执行代码样本中的前后顺序关系。
62.例如,在本技术的一些实施例中,该第一步示例性包括:对所述训练集和所述测试集中的每个可执行恶意代码样本进行反汇编处理,得到与所述每个可执行恶意代码样本对应的汇编文件;从每个汇编文件提取程序段中的汇编指令得到与所述每个汇编文件对应的
汇编指令序列;利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列。
63.需要说明的是,在本技术的一些实施例中,所述利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列示例性包括:将滑动窗口在与所述训练集对应的所有汇编指令序列中逐一滑动,得到n个不同的初始汇编指令子序列c1,c2,c3,...,cn,并将该n个初始汇编指令子序列作为所述汇编指令子序列。在本技术的一些实施例中,所述利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列示例性包括:将滑动窗口在与所述训练集对应的所有汇编指令序列中逐一滑动,得到n个不同的初始汇编指令子序列c1,c2,c3,...,cn,进一步对n个初始汇编指令子序列进行筛选后得到所述汇编指令子序列。
64.本技术的一些实施例通过对初始汇编指令子序列进行筛选可以去除特殊样本或者特征区分度不够的样本,提升样本集中数据的质量。
65.下面示例性阐述根据频率区间对初始汇编指令子序列进行筛选的过程。
66.例如,在本技术的一些实施例中,所述训练集共包括k个可执行恶意代码样本;其中,所述对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列,包括:通过统计任意一个初始汇编指令子序列是否在所述k个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列。本技术的一些实施例通过初始汇编指令子序列的出现频次来筛选各汇编指令子序列,改善训练数据质量。
67.例如,在本技术的一些实施例中,所述通过统计任意一个初始汇编指令子序列是否在所述k个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列的过程示例性包括:若确认所述任意一个初始汇编指令子序列在所述k个可执行恶意代码样本中的总出现次数大于第一数值且小于第二数值,则将所述任意一个初始汇编指令子序列作为一个所述汇编指令子序列,其中,若所述任一一个初始汇编指令子序列在一个可执行恶意代码样本中出现次数大于或等于1则记录出现次数为1,所述第二数值大于所述第一数值。本技术的一些实施例通过频率区间(即由第一数值和第二数值限定的区间)来去除部分初始汇编指令子序列,可以去除特殊样本(即出现次数非常少)和特征区分度不够(即出现次数过多),提升样本数据的质量。
68.例如,所述滑动窗口方法采用n-gram方法。本技术的一些实施例可以采用n-gram方法提取子序列,该方法能够提取汇编指令序列前后之间的顺序关系。
69.本技术的一些实施例将各可执行恶意代码样本转换为以汇编指令子序列为句子的文档,通过引入该汇编指令子序列能够解决现有技术中单一汇编指令特征无法反映指令序列前后之间顺序关系的缺点,能够更加充分地提取汇编指令序列的信息。本技术的一些实施例利用滑动窗口得到汇编子序列,提升数据处理的速度。
70.第二步,根据所述文档得到与所述每个可执行代码样本对应的所述灰度图像。
71.例如,在本技术的一些实施例中,所述根据所述文档得到与所述每个可执行恶意代码样本对应的所述灰度图像,包括:利用句嵌入模型将每个所述文档包括的所述汇编指令子序列转换成向量;根据所述向量得到与每个所述文档对应的所述灰度图像。本技术提出的通过滑动窗口和句嵌入相结合的数据预处理方法能够解决现有技术中单一汇编指令特征无法反映指令序列前后之间顺序关系的缺点,能够更加充分地提取汇编指令序列的信
息。
72.下面结合图3的数据预处理模块执行的方法示例性阐述s101的实现过程。
73.第一步,获取训练样本集和测试集
74.获取可执行恶意代码样本及各恶意代码样本所属类别,将所述恶意代码样本划分为训练集和测试集。假设所有样本总共有m个p1,p2,p3,...,pm,其中训练样本有m1个。
75.第二步,对训练集和测试集进行反汇编处理,获取汇编指令序列
76.对获取的所有可执行恶意代码,即上述m个样本进行批量反汇编处理,得到相应的汇编文件。进一步,基于汇编文件提取程序段中的所有汇编指令序列。
77.第三步,利用滑动窗口方法处理训练样本集的汇编指令序列,获取初始汇编指令子序列。
78.对所有样本集中获取的初始汇编指令序列采用滑动窗口处理的操作方法提取相对应的子序列。例如,可以采用n-gram方法提取子序列,该方法能够提取汇编指令序列前后之间的顺序关系。假设训练样本集m1中共提取n个不同的子序列,c1,c2,c3,...,cn。
79.第四步,筛选关键汇编指令子序列,得到汇编指令子序列
80.首先,在所有训练样本m1中,获取汇编指令子序列ci在每一个可执行恶意代码样本文件pk中出现的频率。
81.然后,根据实际情况选用频率区间来对汇编指令子序列进行筛选,将频率值超过阈值上界(即第二数值)或下界(即第一数值)的子序列去掉。
82.最终,筛选关键汇编指令子序列列表(即得到汇编指令子序列)作为特征空间,维度为t。
83.本技术的一些实施例采用频率区间的方法能够避免频率过小,某些子序列仅代表特殊样本,而频率过高,特征区分度不够的问题。下面是频率获取的具体方法。下面用公式说明筛选标准。
84.令ni表示训练样本集包含子序列ci的文件总数,ni也可以认为是ci在数据集中的频率(与出现总次数不同,因为ci有可能在一个文件中重复出现),则ni的计算公式为:
[0085][0086]
其中,为布尔值,1表示ci在pk中出现,0表示ci不在pk中出现。
[0087]
第五步,利用关键汇编指令子序列和句嵌入方法将每个样本转换成灰度图,并利用双线性插值方法处理图像,得到灰度图像。
[0088]
首先,将训练集和测试集中每个恶意代码转换成以汇编指令子序列为句子组成的文档,利用句嵌入模型将每个文档上汇编指令子序列转换成向量,设定子序列向量维度为t。可以利用doc2vec模型计算每个文档上汇编指令子序列的句向量,它可以从可变长度的文本片段中学习固定长度的特征表示,该算法能够克服现有词袋模型的弱点。
[0089]
然后,将每篇文档中的汇编指令子序列向量按照关键汇编指令子序列列表t中的顺序进行排列,如果文档中有不存在于关键汇编指令子序列中的指令序列,则以t维的零向量代替,最后每个样本均被转换为t*t的矩阵。
[0090]
进一步,将每个样本矩阵进行归一化处理,并进行尺度变换,最终转换成相应的灰
度图像,其中,矩阵中的最小值对应黑色像素,最大值对应白色像素。
[0091]
最后,通过线性插值的方法将每一个t*t维度的图像转换成深度学习模型输入所需维度的图像,可以采用双线性插值方法进行处理。
[0092]
下面以一个示例阐述由数据预处理模块执行的得到灰度图像的过程。
[0093]
步骤1,获取可执行恶意代码样本及所属类别标签,将所述恶意代码样本划分为训练集和测试集。其中,测试集包括已知类别样本和未知类别样本。
[0094]
步骤2,对获取的所有可执行恶意代码,包括训练集和测试集,基于逆向工具进行批量反汇编处理,得到相应的汇编文件。
[0095]
步骤3,基于上述生成的所有汇编文件提取程序段中的所有汇编指令序列。
[0096]
步骤4,对所有样本中获取的汇编指令序列采用n-gram滑动窗口处理的操作方法提取相对应的子序列,得到初始汇编指令子序列。
[0097]
步骤5,在所有训练样本集中,获取汇编指令子序列在每一个文件中出现的频率。选用频率区间来对初始汇编指令子序列进行筛选,最终筛选关键汇编指令子序列(即得到汇编指令子序列)列表作为特征空间。示例性地,可以选择频率出现在区间[0.1,0.9]的子序列作为特征,将频率大于0.9或者小于0.1的子序列去掉,最终筛选的特征空间维度为782。
[0098]
步骤6,将训练集和测试集中每个恶意代码转换成以汇编指令子序列为句子组成的文档,利用句嵌入模型将每个文档上的汇编指令子序列转换成向量。可以利用doc2vec模型计算每个文档上汇编指令子序列的句向量。
[0099]
步骤7,将每篇文档中的汇编指令子序列向量按照上述获取的关键汇编指令子序列列表中的顺序进行排列,如果文档中有不存在于关键汇编指令子序列中的指令序列,则以782维的零向量代替,最后每个样本均被转换为782*782维的矩阵。
[0100]
步骤8,然后将每个样本矩阵进行归一化处理,并进行尺度变换,最终转换成相应的灰度图像,其中,矩阵中的最小值对应黑色像素,最大值对应白色像素。
[0101]
步骤9,通过线性插值方法将每一个782*782维度的图像转换成深度学习模型输入所需维度的图像。可以采用双线性插值方法进行处理,将782*782维度的图像转换成224*224维度的图像。
[0102]
s102,根据所述灰度图像和卷积神经网络模型获取特征数据。
[0103]
例如,在本技术的一些实施例中,s102示例性包括:将与所述训练集中每个可执行恶意代码样本对应的灰度图像逐一输入到初始卷积神经网络,并对所述初始卷积神经网络进行训练;获取所述初始卷积神经网络提供的类别输出结果与对应可执行恶意代码样本的类别标签的对比结果,并依据所述对比结果调整所述初始卷积神经网络模型的参数,直到分类准确率达到预先设定阈值,结束训练得到所述卷积神经网络模型;提取所述卷积神经网络模型中全连接层的输出作为所述特征数据。本技术的一些实施例通过训练得到的卷积神经网络模型得到各灰度图像的特征数据。例如,在本技术的一些实施例中,所述卷积神经网络模型为mobilenet模型。
[0104]
下面结合图3的特征提取模块执行的动作示例性阐述s102实现过程。
[0105]
图3的特征提取模块被配置为:将训练集样本图像加入卷积神经网络模型中,获取全连接层特征。
[0106]
首先,将处理好的训练样本集中每个灰度图像逐一输入到初始卷积神经网络中训练。然后,根据类别输出结果与原始恶意代码类别标签的对比结果,调整初始卷积神经网络模型参数,直到分类准确率达到预先设定阈值,结束训练。最后,提取卷积神经网络中倒数第二层的输出,即全连接层(fully connected layer)的输出作为特征数据。
[0107]
需要说明的是,卷积神经网络一般会包含基本层和全连接层。每个基本层包含卷积层(convolutional layer)、激活函数(relu)和池化层(pool)。所述卷积层对灰度图像样本进行卷积处理、特征提取;激活函数提供系数进行非线性变换;池化层对输入特征图进行压缩处理,提取其中主要特征;全连接层用于连接最后一个基本层输出的所有特征。具体结构可参考图4中的卷积神经网络部分,该卷积神经网络可以选用卷积神经网络中的mobilenet模型。该模型由标准卷积层、深度可分离卷积(depthwise separable convolution)层、平均池化层(average pooling)、全连接层和softmax层组成。
[0108]
下面继续上述步骤9来阐述对应示例提供的获取代码分类模型的方法实现过程。
[0109]
将处理好的训练集灰度图像输入到设定好的初始卷积神经网络中,调整初始卷积神经网络模型相关参数,直到模型的分类准确率达到预先设定阈值,结束训练。可以将阈值设定为90%,如果模型的分类准确率大于90%则结束训练,然后提取模型中倒数第二层,即全连接层的特征。可以选用卷积神经网络中的mobilenet模型。该模型的输入通道为3通道,而灰度图像为单通道,因此将3通道输入修改成单通道输入。将上述224*224维的训练集的灰度图像输入到mobilenet模型中,获取全连接层的特征,维度为1024。
[0110]
s103,根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。本技术的一些实施例通过将可执行代码样本数据转换为图像,并从图像提取特征,在结合这些特征训练目标开集识别模型,使得本技术的一些实施例可以识别未知类别的可执行代码。
[0111]
例如,在本技术的一些实施例中,s103示例性包括:将所述特征数据输入到初始开放长尾识别模型open long-tailed recognition中,构造开集识别模型;基于与所述测试集中每个可执行恶意代码样本对应的灰度图像样本,对所述开集识别模型进行测试,预先设定阈值,如果未知类别的分类准确率低于所述阈值,则调整所述open long-tailed recognition模型的参数,直至未知类别准确率达到所述阈值,获取所述目标开集识别模型,其中,所述测试集包括已知类别家族和未知类别家族。
[0112]
本技术的一些实施例通过测试集训练开集识别模型得到目标开集识别模型。
[0113]
例如,在本技术的一些实施例中,所述open long-tailed recognition模型包括动态元嵌入dynamic meta-embedding部分,其中,所述dynamic meta-embedding部分被配置为在所述特征数据中加入视觉记忆特征。
[0114]
本技术的一些实施例采用动态元嵌入模型完善特征数据,进而获取整体特征。
[0115]
例如,在本技术的一些实施例中,所述open long-tailed recognition模型还包括调制注意力modulated attention部分,其中,所述modulated attention用于区分大样本类和小样本类。
[0116]
本技术的一些实施例对上述特征数据进行修改,包括添加视觉记忆特征和modulated注意力机制,进而获取整体特征。
[0117]
在一些实施例中,所述open long-tailed recognition模型还包括余弦分类器部
分,其中,所述余弦分类器至少被配置为可根据概率识别出属于未知家族的恶意代码。本技术的一些实施例提供一种分类器模型。
[0118]
下面结合图3的开集识别模块执行的步骤示例性阐述s103的实现过程。
[0119]
第一步,将训练集特征输入open long-tailed recognition模型中,构造开集识别模型,并利用测试集进行测试。
[0120]
首先,将获取的全连接层特征输入到初始的open long-tailed recognition模型中,构造开集识别模型。然后,基于测试样本集中每个灰度图像样本,包括已知类别家族和未知类别家族,对所述开集识别模型进行测试,预先设定阈值,如果未知类别的分类准确率低于预设阈值,则调整open long-tailed recognition模型相关参数,直至未知类别准确率达到所述阈值,获取最终的开集识别模型。
[0121]
上述open long-tailed recognition模型的结构见图4中的open long-tailed recognition部分。其中,dynamic meta-embedding部分和modulated attention部分,对上述卷积神经网络输出的特征数据进行修改,获取新的特征数据。然后将新的特征数据输入到cosine classifier余弦分类器部分中,获取分类结果。
[0122]
下面结合图4的open long-tailed recognition模型示例性阐述本技术相关内容的实现。
[0123]
具体地,图4的dynamic meta-embedding部分是在上述卷积神经网络输出的特征基础上加入视觉记忆特征。实际环境中各个家族的样本数据分布不平衡,大样本类数据原始特征比较丰富,小样本类数据特征信息较少,因此加入视觉记忆特征可以平衡大样本类和小样本类数据之间的特征信息。具体特征表示为:
[0124][0125]
其中,v
direct
为卷积神经网络模型输出的原始特征,v
memory
为记忆特征,γ测量输入的直接特征到判别质心之间的最小距离。对于封闭世界的分类任务来说,γ似乎是一个多余的标量。然而,在open long-tailed recognition设置中,它在区分已知类别和开放集类别方面起着重要作用。e代表一种轻量级的网络。
[0126]
图4的modulated attention部分的添加是为了区分大样本类和小样本类。在上述卷积神经网络输出的特征基础上加入modulated注意力。具体表现为:
[0127][0128]
其中,其中f是卷积神经网络模型输出的原始特征,sa(
·
)是自注意力操作,ma(
·
)是具有softmax归一化的条件注意力函数。这种modulated注意力可以插入卷积神经网络的任何特征层,在这里只修改最后一个特征层。
[0129]
将上述修改后的新的特征数据输入图4的cosine classifier余弦分类器部分,得到新的全连接层的输出,进一步输入到softmax中输出属于各已知类别的概率,根据概率识别出属于未知家族的恶意代码,最终实现恶意代码家族开集识别结果的判定。
[0130]
具体地,对于给定恶意代码,所述开集识别模块会输出它属于各已知分类的概率[p1,p2,p3,

pc],假设其中最大的概率值为pi,且设定的开集分类阈值为t,比较pi与t,如果pi≥t,则预测给定恶意代码属于第i类已知恶意代码家族;反之,若pi<t,则预测给定恶意代码属于未知恶意代码家族。
[0131]
第二步,利用构造好的开集识别模型识别未知恶意代码。
[0132]
对于给定的未知恶意代码,首先经过数据预处理模块将恶意代码转换成灰度图像,然后将灰度图像输入到特征提取模块,获取卷积神经网络全连接层的特征,进一步将特征输入到开集识别模块中,获取分类结果。最终将未知恶意代码识别为已知类家族或者未知类家族。
[0133]
下面继续上述步骤10来阐述对应示例提供的获取代码分类模型的方法实现过程。
[0134]
步骤11,将获取的全连接层的特征输入到open long-tailed recognition模型中进行训练,基于dynamic meta-embedding部分和modulated attention部分,对上述特征进行修改,包括添加视觉记忆特征和modulated注意力机制,进而获取整体特征。然后将整体特征输入到cosine classifier余弦分类器中,构造开集识别模型。
[0135]
将上述测试样本集中每个灰度图像样本,包括已知类别家族和未知类别家族样本对训练后的所述开集识别模型进行测试,预先设定阈值为90%,如果未知类别的分类准确率低于预设阈值,则调整open long-tailed recognition模型相关参数,直至未知类别准确率达到所述阈值,结束训练。
[0136]
对于上述测试样本,开集识别模块会输出它属于各已知家族的分类概率[p1,p2,p3,

pn],假设其中最大的概率值为pi,设定开集分类阈值0.8,如果pi≥0.8,则该待测恶意代码属于第i类已知恶意代码家族;反之,若pi<0.8,则待测恶意代码属于未知恶意代码家族。
[0137]
不难理解的是,本技术的一些实施例能够实现真实环境中恶意代码家族开集识别分类,而现有技术只能实现恶意代码家族的闭集分类,不能识别出未知类别家族。本技术的一些实施例能够克服现有技术的缺点与不足,通过将图像领域中的开集识别模型引入到恶意代码家族同源分析的问题中,能够实现真实环境中的恶意代码家族开集识别分类,即不仅能识别出已知类家族,也能识别出未知类别家族。本技术的一些实施例,对于已知类别恶意代码家族的识别准确率高,与现有技术相比,本技术的一些实施例采用的滑动窗口和句嵌入相结合的方法能够充分提取恶意代码家族样本的信息,对于已知类别恶意代码家族的识别准确率较高。
[0138]
如图5所示,本技术的一些实施例提供一种识别代码类别的方法,该方法包括:s201,获取待识别恶意代码文件;s202,获取与所述待识别恶意代码对应的灰度图像;s203,将所述灰度图像输入如上述实施例所述的卷积神经网络模型获取特征数据;s204,将所述特征数据输入如上述示例所述的目标开集识别模型中,得到分类结果。
[0139]
需要说明的是,图5各步骤的实现过程具体可参考训练过程的相关步骤,为避免重复在此不做过多赘述。
[0140]
请参考图6,图6示出了本技术实施例提供的获取代码分类模型的装置,应理解,该装置与上述图2方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置的具体功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。装置包括至少一个能以软件或固件的形式存储于存储器中或固化在装置的操作系统中的软件功能模块,该获取代码分类模型的装置,包括:数据预处理模块101、特征数据获取模块102以及目标开集识别模型获取模块。
[0141]
数据预处理模块,被配置为对训练集和测试集中各可执行代码样本进行预处理,
得到与所述各可执行代码样本对应的灰度图像。
[0142]
特征数据获取模块,被配置为根据所述灰度图像和卷积神经网络模型获取特征数据。
[0143]
目标开集识别模型获取模块,被配置为根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。
[0144]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
[0145]
请参考图7,图7示出了本技术实施例提供的识别恶意代码类别的装置,应理解,该装置与上述图5方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置的具体功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。装置包括至少一个能以软件或固件的形式存储于存储器中或固化在装置的操作系统中的软件功能模块,该识别恶意代码类别的装置,包括:待识别恶意代码文件获取模块201、灰度图像获取模块202、特征提取模块203以及分类模块204。
[0146]
待识别恶意代码文件获取模块,被配置为获取待识别恶意代码文件。
[0147]
灰度图像获取模块,被配置为获取与所述待识别恶意代码对应的灰度图像。
[0148]
特征提取模块,被配置为将所述灰度图像输入如上述任意实施例所述的卷积神经网络模型获取特征数据。
[0149]
分类模块,被配置为将所述特征数据输入所述的目标开集识别模型中,得到分类结果。
[0150]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
[0151]
本技术的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如上述获取代码分类模型的方法以及识别恶意代码类别的方法所包括的任意实施例所述的方法。
[0152]
如图8所示,本技术的一些实施例提供一种电子设备500,包括存储器510、处理器520以及存储在所述存储器510上并可在所述处理器520上运行的计算机程序,其中,所述处理器520通过总线530从存储器读取程序并执行所述程序时可实现如上述获取代码分类模型的方法以及识别恶意代码类别的方法所包括的任意实施例所述的方法。
[0153]
处理器520可以处理数字信号,可以包括各种计算结构。例如复杂指令集计算机结构、结构精简指令集计算机结构或者一种实行多种指令集组合的结构。在一些示例中,处理器520可以是微处理器。
[0154]
存储器510可以用于存储由处理器520执行的指令或指令执行过程中相关的数据。这些指令和/或数据可以包括代码,用于实现本技术实施例描述的一个或多个模块的一些功能或者全部功能。本公开实施例的处理器520可以用于执行存储器510中的指令以实现图2或图5中所示的方法。存储器510包括动态随机存取存储器、静态随机存取存储器、闪存、光存储器或其它本领域技术人员所熟知的存储器。
[0155]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、
功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0156]
另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0157]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0158]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0159]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
[0160]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献