一种基于马尔科夫图和深度学习的恶意软件分类方法与流程

专利2022-06-29  38


本发明涉及恶意软件分类和深度学习技术领域,具体为一种基于马尔科夫图和深度学习的恶意软件分类方法。



背景技术:

恶意软件是指在未经用户同意的情况下渗透和损坏计算机的计算机程序。根据其行为特征可以分为病毒,间谍软件,蠕虫,特洛伊木马,rootkit等。随着互联网的普及,恶意软件已沦为不法分子的盈利工具及政治武器。例如,2010年6月被卡巴斯基实验室首次检测出来的工业界蠕虫病毒“震网”(stuxnet)已经感染了全球超过45000个网络,并使伊朗近20%的原子离心机遭到破坏。2017年4月份,全球爆发的勒索病毒软件“永恒之蓝”(wannacry)波及至少150个国家,超过23万台计算机被感染,造成损失达80亿美元。2019年3月,全球最大铝生产商之一挪威海德鲁(norskhydro)公司遭到一款新型勒索软件(lockergoga)攻击,被迫临时关闭多个工厂。恶意软件攻击已经对正常的工业生产造成严重安全威胁并酿成了巨大的经济损失。

在巨大经济利益的驱动下,恶意软件越来越多的用到加壳、变形、多态等快速生成技术。大多数恶意软件经过混淆或修改小部分代码后就可被重复利用,导致恶意软件变种数量呈现爆发式增长趋势。据瑞星公司2018年年度报告显示,瑞星云安全系统共截获病毒样本总量7786万个,发现病毒感染次数11.25亿次,病毒总体数量比2017年同期上涨55.63%。尤其是在挖矿恶意软件、勒索软件等流行的恶意攻击领域,恶意软件数量显著增长。据统计,目前国际上有数万种病毒,而变种病毒却有成百上千万。这种低成本、大批量的恶意软件生成模式,使得恶意软件与杀毒引擎的对抗愈发激烈,对恶意软件的分析带来了巨大的挑战。绝大多数的新型恶意软件都是由已知的恶意软件变异而得,恶意软件变种之间只有不到2%的代码差异。这给安全研究人员提供了变种检测依据,通过计算恶意代码的相似度来对进行恶意软件变种检测。恶意软件变种检测技术的研究,不仅能在一定程度上降低检测及人工分析成本,也能通过变种增长趋势获取互联网威胁态势以及时采取应对措施。面对层出不穷的恶意软件变种,如何快速、准确地识别和分类恶意软件变种对网络安全至关重要。

当前,恶意软件变种识别和分类的研究,主要以静态分析和动态分析获取恶意软件特征的方式为主。这类方法大多数通过对恶意软件的字节码、汇编码、文件结构或动态行为等进行分析,然后用机器学习算法对恶意软件进行分类。然而,由于软件保护机制,提取恶意软件静态反汇编代码往往遇到逆向分析困难的问题。恶意软件经过加壳、加密等变形技术处理后,其文件结构将发生巨大的变化。甚至难以找到程序入口点来进行后续分析。在静态分析难以奏效的时候,大多数研究者使用动态分析方法,直接分析恶意软件的动态行为。但基于动态分析的方法,只能分析恶意软件一条执行路径的行为特征,难以遍历所有执行路径的行为特征。同时,动态分析消耗大量时间,难以适应对海量恶意软件变种快速识别和分类的需求。基于特征的启发式方法不仅受限于逆向分析和时间消耗,而且非常依赖研究者的手动构建特征的经验。因此,无法适用于大规模恶意软件样本,难以应对恶意软件变种爆发式增长的实际需求。

随着深度学习技术的发展及其在计算机视觉、语音识别、文字翻译等领域的成功应用,基于恶意软件图像和深度学习的分类方法成为一个重要的研究方向。由于省去了传统恶意软件分析中大量的特征工程工作,这种基于端到端的方法是一种十分有效的解决方案。然而,现有的基于恶意软件图像和深度学习的分类方法,直接将二进制代码字节转换为灰度图像。当使用深度神经网络进行训练时,必须将灰度图像转成统一大小。由于恶意软件大小存在差异,一般使用字节截断或图像缩放将恶意软件灰度图像大小统一。在该过程中,原始的二进制信息存在部分缺失,对恶意软件分类准确率有一定的影响。此外,二进制中并非所有的字节信息都有利于恶意软件分类。当直接把二进制转换成灰度图像时,存在大量冗余信息。当使用恶意软件灰度图像作为输入数据进行深度学习训练时,必须依赖于大量已标记的训练数据才能取得较好的分类准确率。因此,当前的恶意软件变种检测技术依然存在不足。



技术实现要素:

针对传统的机器学习算法受特征工程限制,难以快速处理海量恶意样本,并且现有的基于恶意软件灰度图像和深度学习的分类方法的准确率并不高的问题,本发明提供了一种基于马尔科夫图和深度学习的恶意软件分类方法,具有较高的分类准确率。

为解决上述技术问题,本发明采用的技术方案是:

一种基于马尔科夫图和深度学习的恶意软件分类方法,包括以下步骤:

步骤1:将恶意软件字节视为具有时序特性的字节流,每个字节作为一个特定的状态,将这种恶意软件字节流视为一个随机过程,即字节bytei,i∈{0,1,...,n-1},其中,n表示恶意软件字节数;遍历恶意软件所有字节的取值,统计每种取值出现的频率;

步骤2:以频率估计概率,计算各个状态之间相互转移概率;若用pi,j表示字节bytei后续字节为bytej的转移概率,则其计算公式为:

其中,frequency(i,j)表示字节bytei后续字节为bytej的频率;

步骤3:计算各个状态之间相互转移概率,形成马尔科夫概率转移矩阵,即:

在马尔科夫图中,每一个像素点与mm,m对应一个转移概率pm,n的值;

步骤4:基于vgg16设计新的深度卷积神经网络结构,所述深度卷积神经网络结构的卷积层和池化层的深度与vgg16相同,一共包含13个卷积层、5个池化层,所述深度卷积神经网络结构只有一个全连接层,其输出维度为1024,全连接层直接与输入层相连接,最后通过softmax函数输出恶意软件的类别标签;所述深度卷积神经网络结构的输入层维度是256*256的二维矩阵;

步骤5:选择超参数来训练深度卷积神经网络结构模型,训练深度卷积神经网络得到深度卷积神经网络参数的合理值,包括深度卷积神经网络的卷积核权重;

步骤6:使用深度学习工具包载入已训练的模型,然后将待测恶意软件样本通过步骤1、步骤2和步骤3进行图像化处理,得到相应的恶意软件马尔科夫图,以该图像为输入,在载入已训练的模型中预测恶意软件家族类型对应的标签值,对恶意软件家族进行分类。

进一步地,在所述步骤4中,使用深度学习工具包构建新的深度卷积神经网络模型。

进一步地,在步骤5中,所述超参数具体设置为:将批尺寸设置为32,将训练次数设置为250。

与现有技术相比,本发明的有益效果是:1)本发明恶意软件分类方法是字节级的,仅使用了恶意软件的二进制信息,无逆向分析及动态分析过程,适用于多种恶意软件文件类型如pe、elf、apk等。2)本发明方法能生成固定大小的恶意软件图像,能有效减小字节信息的冗余。3)本发明方法与基于灰度图像和深度学习的恶意软件分类相比具有更高的分类准确率,而且不依赖于预先训练模型。即使训练数据集较小,也具有较高的准确率。

附图说明

图1是基于马尔科夫图和深度学习的恶意软件分类框架。

图2是恶意软件转换为马尔科夫图像示意图。

图3是深度神经网络模型结构组成图。

图4是深度神经网络模型超参数设置。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细说明。如图1所示,本发明一种基于马尔科夫图和深度学习的恶意软件家族分类方法,包括以下步骤:

步骤1:统计字节频率

将恶意软件字节看成具有时序特性的字节流,每个字节作为一个特定的状态,将这种恶意软件字节流视为一个随机过程,即bytei,i∈{0,1,...,n-1},其中,n表示恶意软件字节数;遍历恶意软件所有字节的取值,统计每种取值(共256种)出现的频率。

步骤2:计算转移概率

以频率估计概率,计算各个状态之间相互转移概率;若用pi,j表示字节bytei后续字节为bytej的转移概率,则其计算公式如下:

其中,frequency(i,j)表示字节bytei后续字节为bytej的频率。

步骤3:计算各个状态之间相互转移概率,形成马尔科夫概率转移矩阵,即:

在马尔科夫图中,每一个像素点与mm,m对应一个转移概率pm,n的值,如图2所示。

步骤4:构建深度学习模型

卷积神经网络的基本结构由输入层、卷积层、池化层、全连接层、输出层构成。相比于普通的全连接神经网络,卷积神经网络主要有三个特点:局部感受野、权值共享和池化。本发明的深度卷积神经网络结构是基于vgg16而重新设计的,如图3所示。其卷积层和池化层的深度与vgg16相同,一共包含13个卷积层、5个池化层。与vgg16不同的是,本发明设计的深度卷积神经网络只有一个全连接层,其输出维度为1024。这个全连接层直接与输入层相连接,最后通过softmax函数输出恶意软件的类别标签。

与vgg16模型结构相比,本发明设计的深度卷积神经网络结构,全连接层数更少,其输出维度也更低。因此,其全连接层参数也更少,在训练时间和空间上的消耗远远小于vgg16模型。在输入层方面,考虑到恶意软件马尔科夫图像是固定的大小,其长宽都为256,本发明提供的深度卷积网络的输入层维度是256*256的二维矩阵。本发明使用深度学习工具包,以python语言来构建深度卷积神经网络模型。

步骤5:选择超参数来训练深度卷积神经网络结构模型

在超参数设置上,综合考虑了服务器性能和深度卷积神经网络的深度,将批尺寸设置为32。为了使得网络参数得到充分的训练,分类准确率更加稳定,将训练次数设置为250,其他超参数采用了一般的默认值,如图4所示。每个超参数的详细描述如下:

1)批尺寸:当训练数据集太大而且网络层数很深时,需要将训练集划分为很多小块,逐步参与训练。每个小块中的样本数量称作批尺寸。

2)训练次数:当一个完整的训练数据集通过了神经网络并且返回了一次,这个过程称为一次训练。

3)学习率:学习率指导如何通过损失函数的梯度调整网络权重参数。一般学习率越低,损失函数的变化速度就越慢。本发明中将学习率初始化为1e-3。

4)学习率衰减:是学习率自动调整的参数。一般优化器(adam)默认学习率衰减为1e-6。

5)优化器:adam优化器是由kingma和leiba提出的,它结合adagrad和rmsprop两种优化算法的优点。由于计算高效,对内存需求少,是一款工作性能比较优秀的优化器。

本发明提供的深度神经网络模型在一台装有4块gpu的ubuntu服务器上进行训练,每块gpu的配置是teslav100-dgxs32g。一般情况下,卷积核的初始值是随机生成的,在训练时,将不断的学习新的权值并实时更新,直到最终学习到合理的权值。

步骤6:预测恶意软件样本家族类型

通过步骤5,训练深度神经网络得到网络的卷积核权重等参数的合理的值。预测恶意软件样本家族类型时,首先使用深度学习工具包载入已训练的模型,然后将待测恶意软件样本通过步骤1、步骤2和步骤3进行图像化处理,得到相应的恶意软件马尔科夫图。以该图像为输入,在载入已训练的模型中预测恶意软件家族类型对应的标签值。

表1mdmc和gdmc在微软恶意软件数据集上分类准确率对比

表1为mdmc和gdmc在微软恶意软件数据集上分类准确率对比,可以看出本发明恶意软件分类方法(mdmc)与基于灰度图像和深度学习的恶意软件分类(gdmc)相比具有更高的分类准确率。


技术特征:

1.一种基于马尔科夫图和深度学习的恶意软件分类方法,其特征在于,包括以下步骤:

步骤1:将恶意软件字节视为具有时序特性的字节流,每个字节作为一个特定的状态,将这种恶意软件字节流视为一个随机过程,即字节bytei,i∈{0,1,...,n-1},其中,n表示恶意软件字节数;遍历恶意软件所有字节的取值,统计每种取值出现的频率;

步骤2:以频率估计概率,计算各个状态之间相互转移概率;若用pi,j表示字节bytei后续字节为bytej的转移概率,则其计算公式为:

其中,frequency(i,j)表示字节bytei后续字节为bytej的频率;

步骤3:计算各个状态之间相互转移概率,形成马尔科夫概率转移矩阵,即:

在马尔科夫图中,每一个像素点与mm,m对应一个转移概率pm,n的值;

步骤4:基于vgg16设计新的深度卷积神经网络结构,所述深度卷积神经网络结构的卷积层和池化层的深度与vgg16相同,一共包含13个卷积层、5个池化层,所述深度卷积神经网络结构只有一个全连接层,其输出维度为1024,全连接层直接与输入层相连接,最后通过softmax函数输出恶意软件的类别标签;所述深度卷积神经网络结构的输入层维度是256*256的二维矩阵;

步骤5:选择超参数来训练深度卷积神经网络结构模型,训练深度卷积神经网络得到深度卷积神经网络参数的合理值,包括深度卷积神经网络的卷积核权重;

步骤6:使用深度学习工具包载入已训练的模型,然后将待测恶意软件样本通过步骤1、步骤2和步骤3进行图像化处理,得到相应的恶意软件马尔科夫图,以该图像为输入,在载入已训练的模型中预测恶意软件家族类型对应的标签值,对恶意软件家族进行分类。

2.根据权利要求1所述的一种基于马尔科夫图和深度学习的恶意软件分类方法,其特征在于,在所述步骤4中,使用深度学习工具包构建新的深度卷积神经网络模型。

3.根据权利要求1所述的一种基于马尔科夫图和深度学习的恶意软件分类方法,其特征在于,在步骤5中,所述超参数具体设置为:将批尺寸设置为32,将训练次数设置为250。

技术总结
本发明公开了一种基于马尔科夫图和深度学习的恶意软件分类方法,首先统计恶意软件字节转移频率,将其转换为马尔科夫图像,然后使用深度卷积神经网络完成恶意软件分类;其中设计的深度卷积神经网络结构是基于VGG16重新设计而成,其卷积层和池化层的深度与VGG16相同,一共包含13个卷积层、5个池化层;与VGG16不同的是,本发明设计的深度卷积神经网络只有一个全连接层,其输出维度为1024。本发明方法适用性广,且能有效减小字节信息的冗余;不依赖于预先训练模型,具有更高的分类准确率。

技术研发人员:王俊峰;袁保国;青先国;刘东
受保护的技术使用者:四川大学
技术研发日:2020.02.12
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-22060.html

最新回复(0)