一种获取代码分类模型的方法、装置、介质及电子设备制造方法及图纸

技术编号:35862114 阅读:10 留言:0更新日期:2022-12-07 10:52
本申请实施例提供一种获取代码分类模型的方法、装置、介质及电子设备,该方法包括:对样本集中各可执行代码样本进行预处理,得到与所述各可执行代码样本对应的灰度图像;根据所述灰度图像和卷积神经网络模型获取特征数据;根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。本申请的实施例引入开集识别,该开集识别的目标是对已知家族的类别进行正确分类,同时也能识别出未知类别。别。别。

【技术实现步骤摘要】
一种获取代码分类模型的方法、装置、介质及电子设备


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

技术介绍

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

技术实现思路

[0005]本申请实施例的目的在于提供一种获取代码分类模型的方法、装置、介质及电子设备,本申请的实施例引入开集识别,该开集识别的目标是对已知家族的类别进行正确分类,同时也能识别出未知类别,即如果待测样本属于模型训练过的已知类中的一种家族则准确识别为该家族,如果属于模型没有学习过的未知类家族,则准确识别将其识别为未知
家族。
[0006]第一方面,本申请实施例提供一种获取代码分类模型的方法,所述方法包括:对样本集中各可执行代码样本进行预处理,得到与所述各可执行代码样本对应的灰度图像;根据所述灰度图像和卷积神经网络模型获取特征数据;根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。
[0007]本申请的一些实施例通过将可执行代码样本数据转换为图像,并从图像提取特征,在结合这些特征训练目标开集识别模型,使得本申请的一些实施例可以识别未知类别的可执行代码。
[0008]在一些实施例中,所述样本集包括训练集和测试集,其中,所述对样本集中各可执行代码样本进行预处理得到与所述各可执行代码样本对应的灰度图像,包括:将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,其中,所述汇编指令子序列用于表征多个汇编指令在相应可执行代码样本中的前后顺序关系;根据所述文档得到与所述每个可执行代码样本对应的所述灰度图像。
[0009]本申请的一些实施例将各可执行恶意代码样本转换为以汇编指令子序列为句子的文档,通过引入该汇编指令子序列能够解决现有技术中单一汇编指令特征无法反映指令序列前后之间顺序关系的缺点,能够更加充分地提取汇编指令序列的信息。
[0010]在一些实施例中,所述将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,包括:对所述训练集和所述测试集中的每个可执行恶意代码样本进行反汇编处理,得到与所述每个可执行恶意代码样本对应的汇编文件;从每个汇编文件提取程序段中的汇编指令得到与所述每个汇编文件对应的汇编指令序列;利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列。
[0011]本申请的一些实施例利用滑动窗口得到汇编子序列,提升数据处理的速度。
[0012]在一些实施例中,所述利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列,包括:将滑动窗口在与所述训练集对应的所有汇编指令序列中滑动,得到n个不同的初始汇编指令子序列c1,c2,c3,...,c
n
;对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列。
[0013]本申请的一些实施例通过对初始汇编指令子序列进行筛选可以去除特殊样本或者特征区分度不够的样本,提升样本集中数据的质量。
[0014]在一些实施例中,所述训练集共包括K个可执行恶意代码样本;其中,所述对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列,包括:通过统计任意一个初始汇编指令子序列是否在所述K个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列。
[0015]本申请的一些实施例通过初始汇编指令子序列的出现频次来筛选各汇编指令子序列,改善训练数据质量。
[0016]在一些实施例中,所述通过统计任意一个初始汇编指令子序列是否在所述K个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列,包括:若确认所述任意一个初始汇编指令子序列在所述k个可执行恶意代码样本中的总出现次数大于第一数值且小于第二数值,则将所述任意一个初始汇编指令子序列作为一个所述汇编指令子序列,其中,若所述任一一个初始汇编指令子序列在一个
可执行恶意代码样本中出现次数大于或等于1则记录出现次数为1,所述第二数值大于所述第一数值。
[0017]本申请的一些实施例通过频率区间(即由第一数值和第二数值限定的区间)来去除部分初始汇编指令子序列,可以去除特殊样本(即出现次数非常少)和特征区分度不够(即出现次数过多),提升样本数据的质量。
[0018]在一些实施例中,所述滑动窗口方法采用n

gram方法。
[0019]本申请的一些实施例可以采用n

gram方法提取子序列,该方法能够提取汇编指令序列前后之间的顺序关系。
[0020]在一些实施例中,所述根据所述文档得到与所述每个可执行恶意代本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种获取代码分类模型的方法,其特征在于,所述方法包括:对样本集中各可执行代码样本进行预处理,得到与所述各可执行代码样本对应的灰度图像;根据所述灰度图像和卷积神经网络模型获取特征数据;根据所述特征数据对开集识别模型进行训练得到目标开集识别模型,其中,所述开集识别模型可识别未知类型的可执行代码。2.如权利要求1所述的方法,其特征在于,所述样本集包括训练集和测试集,其中,所述对样本集中各可执行代码样本进行预处理得到与所述各可执行代码样本对应的灰度图像,包括:将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,其中,所述汇编指令子序列用于表征多个汇编指令在相应可执行代码样本中的前后顺序关系;根据所述文档得到与所述每个可执行代码样本对应的所述灰度图像。3.如权利要求2所述的方法,其特征在于,所述将所述训练集和所述测试集中每个可执行代码样本转换成以汇编指令子序列为句子组成的文档,包括:对所述训练集和所述测试集中的每个可执行恶意代码样本进行反汇编处理,得到与所述每个可执行恶意代码样本对应的汇编文件;从每个汇编文件提取程序段中的汇编指令得到与所述每个汇编文件对应的汇编指令序列;利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列。4.如权利要求2所述的方法,其特征在于,所述利用滑动窗口方法从与所述训练集对应的所有汇编指令序列中获取所述汇编指令子序列,包括:将滑动窗口在与所述训练集对应的所有汇编指令序列中滑动,得到n个初始汇编指令子序列c1,c2,c3,...,c
n
;对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列。5.如权利要求4所述的方法,其特征在于,所述训练集共包括K个可执行恶意代码样本;其中,所述对所述n个初始汇编指令子序列进行筛选得到所述汇编指令子序列,包括:通过统计任意一个初始汇编指令子序列是否在所述K个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列。6.如权利要求5所述的方法,其特征在于,所述通过统计任意一个初始汇编指令子序列是否在所述K个可执行恶意代码样本的各样本中出现,来确定所述任一一个初始汇编指令子序列是否属于所述汇编指令子序列,包括:若确认所述任意一个初始汇编指令子序列在所述K个可执行恶意代码样本中的总出现次数大于第一数值且小于第二数值,则将所述任意一个初始汇编指令子序列作为一个所述汇编指令子序列,其中,若所述任一一个初始汇编指令子序列在一个可执行恶意代码样本中出现次数大于或等于1则记录出现次数为1,所述第二数值大于所述第一数值。
7.如权利要求3所述的方法,其特征在于,所述滑动窗口方法采用n

gram方法。8.如权利要求2所述的方法,其特征在于,所述根据所述文档得到与所述每个可执行恶意代码样本对应的所述灰度图像,包括:利用句嵌入模型将每个所述文档包括的所述汇编指令子序列转换成向量;根据所述向量得到与每个所述文档对应的所述灰度图像。9.如权利要求1所述的方法,其特征在于,所述根据所述灰度图像和卷积神经网络模型获取特征数据,包括:将与所述训练集中每个可执行恶意代码样本对应的灰度图像逐一输入到初始卷积神经网络,并对所述初始卷积神经网络进行训练;获取所述初始卷积神经网络提供的类别输出结果与对应可执行恶意代码样本的类别标签的对比结果,并依据所述对比结果调整所述初始卷积神经网络的参数,直到分类准确率达到预先设定阈值,结束训练得到所述卷积神经网络模型;提取所述卷积神经网络模型中全连接层的输出作为所述特征数据。10.如权利要求9所述的方法,其特征在于,...

【专利技术属性】
技术研发人员:刘亚倩
申请(专利权)人:北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1