一种基于深度学习的恶意代码检测方法及系统的制作方法

文档序号:10725519阅读:605来源:国知局
一种基于深度学习的恶意代码检测方法及系统的制作方法
【专利摘要】本发明公开了一种基于深度学习的恶意代码检测方法及系统,该方法包括:通过提取代码中特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量;通过提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量;在训练阶段输入第一布尔特征向量构建深度置信网络模型,在检测阶段将第二布尔特征向量输入所述深度置信网络模型,根据所述模型输出的结果判断待测代码是否为恶意代码。该方法采用深度学习中的半监督训练学习模型,用大规模的无标记的集合代码样本进行训练,可以节省标注大量样本的时间;且该模型能对实现对已知恶意代码的准确判断和未知恶意代码的准确预测。
【专利说明】
一种基于深度学习的恶意代码检测方法及系统
技术领域
[0001]本发明涉及移动终端应用领域,尤其涉及一种基于深度学习的恶意代码检测方法及系统。
【背景技术】
[0002]随着恶意代码爆炸性增长,恶意代码成为个人、企业信息泄露的最大原因,所以对恶意代码在运行之前被检测出来很有必要。目前有比较成熟的恶意代码检测技术,主要有基于签名、基于特征码、基于启发式等等方法。
[0003]基于签名的恶意检测方法,对各种恶意代码生成一个标记,并利用这些标记构建一个恶意代码数据库。这种方法能快速的检测出一段代码是否为恶意代码,对数据库中已有样本种类检验准确率很高,是很多商业杀毒软件采取的主要方式。
[0004]但是这种方法存在以下的缺点:对恶意代码的标记有些需要领域专家进行人工提取;一个新的恶意代码可能不包括任何已知的特征,只能检测已有的恶意代码,不能检测出新种类的恶意代码;这种方法使得特征库不断增加,这需要用户不断更新恶意代码数据库,特征库的样本会越来越大,会影响检测的速度和系统的性能。
[0005]有鉴于此,现有技术有待改进和提尚。

【发明内容】

[0006]鉴于现有技术的不足,本发明目的在于提供一种基于深度学习的恶意代码检测方法及系统,从而解决了现有技术中需要对恶意代码进行标注的繁琐及不能检测出新种类的恶意代码的问题。
[0007]本发明的技术方案如下:
一种基于深度学习的恶意代码检测方法,其中,所述方法包括:
步骤A、提取训练集合中代码的特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量;
步骤B、提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量;
步骤C、在训练阶段输入第一布尔特征向量构建深度置信网络模型,在检测阶段将第二布尔特征向量输入所述深度置信网络模型进行运算,根据所述模型输出的结果判断待测代码是否为恶意代码。
[0008]所述基于深度学习的恶意代码检测方法,其中,所述步骤A具体包括:
Al、选取恶意代码和正常代码作为训练集合;
A2、提取训练集合中代码的操作码序列的变长N-gram作为特征;
A3、采用加权信息增益的特征选择方法,计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列选取有效特征;
A4、根据每个训练样本代码是否包含所述有效特征,构成第一布尔特征向量。
[0009]所述基于深度学习的恶意代码检测方法,其中,所述步骤C具体包括:
Cl、通过训练集合的第一布尔特征向量构建深度置信网络模型,对所述深度置信网络模型进行DBN无监督反馈调节,最后对模型进行优化微调权值的BP反馈调节,确定模型的权值;
C2、将待测代码的第二布尔特征向量输入同样权值的所述深度置信网络模型进行运算;
C3、输出待测代码的标签,所述标签标记出是否为恶意代码。
[0010]所述基于深度学习的恶意代码检测方法,其中,
所述待测代码为恶意代码或者正常代码;
所述训练集合中的代码为无标签样本。
[0011]所述基于深度学习的恶意代码检测方法,其中,
所述步骤A之前还包括:
AO:对训练集合中代码样本进行查壳、脱壳处理,并提取相关操作码。
一种基于深度学习的恶意代码检测系统,其中,包括:
训练集合模块,用于提取训练集合中代码的操作码序列的变长N-gram作为特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量;
待测代码模块,用于提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量;
恶意代码检测模块,用于在训练阶段输入第一布尔特征向量构建深度置信网络模型,在检测阶段将第二布尔特征向量输入所述深度置信网络模型进行运算,根据所述模型输出的结果判断待测代码是否为恶意代码。
[0012]所述基于深度学习的恶意代码检测系统,其中,所述训练集合模块具体包括: 代码选取单元,用于选取恶意代码和正常代码作为训练集合;
特征提取单元,用于提取训练结合代码中操作码序列的变长N-gram作为特征;
有效特征单元,用于采用加权信息增益的特征选择方法,计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列选取有效特征;
特征向量单元,用于根据每个训练样本代码是否包含所述有效特征,构成第一布尔特征向量。
[0013]所述基于深度学习的恶意代码检测系统,其中,所述恶意代码检测模块具体包括: 训练单元,用于通过训练集合的第一布尔特征向量构建深度置信网络模型,对所述深度置信网络模型进行DBN无监督反馈调节,最后对模型进行优化微调权值的BP反馈调节,确定模型的权值;
检测单元,用于将待测代码的第二布尔特征向量输入同样权值的所述深度置信网络模型进行运算;
输出结果单元,用于输出待测代码的标签,所述标签标记出是否为恶意代码。
所述基于深度学习的恶意代码检测系统,其中,
所述待测代码为恶意代码或者正常代码;所述训练集合中的代码为无标签样本。
[0014]所述基于深度学习的恶意代码检测系统,其中,还包括:
预处理单元,用于对训练集合中代码样本进行查壳、脱壳处理,并提取相关操作码。 有益效果:本发明提出了一种基于深度学习的恶意代码检测方法及系统,采用大规模的无标记的恶意代码样本集合进行训练,相对于传统的监督学习模型可以节省标注大量样本的时间;用变长N-gram作为恶意代码特征提取方法,能够提取相关的不同长度的有效特征,弥补了定长N-gram可能拆分有意义特征的缺陷;该深度学习方法,能够训练出一个泛化能力比较强的模型,能够对已知和未知的恶意代码进行准确的预测判断。
【附图说明】
[0015]图1为本发明的基于深度学习的恶意代码检测方法的流程图。
[0016]图2为本发明的基于深度学习的恶意代码检测方法的实施过程图。
[0017]图3为本发明的面向恶意代码检测的深度置信网络的原理图。
[0018]图4为本发明的基于深度学习的恶意代码检测系统的功能原理框图。
【具体实施方式】
[0019]本发明提供了一种基于深度学习的恶意代码检测方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0020]深度学习的方法可以从大量的恶意代码和正常代码数据中学习到有效的信息,形成区别恶意代码与正常代码的标准,代码进入系统时通过训练过的分类器进行分类,从而判断为恶意代码或者正常代码。该深度学习过程主要包括训练阶段和检测阶段,在训练阶段应该选择某些已有的代码作为训练集合进行训练,在检测阶段则将待测代码进行分类。该方法所对应的系统即为面向恶意代码检测的深度置信网络模型。
[0021]如图1所示,为本发明中基于深度学习的恶意代码检测方法的流程图,该方法包括以下步骤:
步骤S100、提取训练集合中代码的特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量。
[0022]当移动终端处于恶意代码检测模式下时,首先应对已有的代码进行训练,得出一个通过训练得出的分类器,步骤SlOO即是深度学习算法实现恶意代码检测方法的训练阶段中训练集合的特征向量提取过程。选取恶意代码和正常代码的训练集合,提取该训练集合中所有代码样本的特征,并在所有得到的特征中选取有效特征,可以对每个训练样本的特征是否包含这些有效特征进行判断,在此基础上构成第一布尔特征向量,该特征向量在训练阶段进入网络置信网络模型,最后得到一个经过训练的分类器,该分类器可以供深度网络学习。
[0023]所述训练集合可以不断更新,允许增量学习,还可通过采集新的训练集合进行有效的实时训练;
步骤S200、提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量。
[0024]当完成该恶意代码检测系统的训练阶段后,则对待测代码进行分类检测,对待测代码进行与训练阶段相同的代码样本特征的提取过程,并对待测代码的特征是否包含训练阶段的有效特征进行判断,在此基础上构成第二布尔特征向量,该特征向量在检测阶段进入网络置信网络模型。
[0025]步骤S300、在训练阶段输入第一布尔特征向量构建深度置信网络模型,在检测阶段将第二布尔特征向量输入所述深度置信网络模型进行运算,根据所述模型输出的结果判断待测代码是否为恶意代码。
[0026]所述深度置信网络,由多层受限玻尔兹曼机叠加之后加上一层分类层组成的一种深层次的神经网络。待测代码的第二布尔特征向量进入面向恶意代码检测的深度置信网络时,通过训练过的分类器进行分类,最后输出该待测代码的标签,从而判断待测代码为恶意代码或者正常代码。
[0027]该检测模式下的所有操作是基于代码,因此在此步骤SlOO之前还应
选取恶意代码和正常代码作为训练集合,并且对训练集合中代码样本进行查壳、脱壳处理。
[0028]软件的壳即为一段专门负责保护软件不被非法修改或反编译的程序。软件被选取为训练集合中代码样本时,为了更方便对代码进行分析,必须进行查壳和脱壳处理,查壳是找到具有保护功能的软件,脱壳即是运用脱壳工具将上述找到的软件中负责保护软件不被非法修改或反编译的程序进行处理。将脱壳后的软件作为训练集合中代码样本,并提取操作码。
[0029]进一步,对步骤SlOO进行更加详细的说明,该步骤可以结合图2进行解释:
S11、选取恶意代码和正常代码作为训练集合。
[0030]深度置信网络模型为半监督训练学习模型,选取恶意代码和正常代码作为训练集合,所述训练集合中代码为无标记代码,采用大规模的无标签的恶意代码为集合样本进行训练,相对于传统的监督学习模型可以节省大量标注样本的时间。
[0031]代码是通过静态语义分析,无需运行恶意代码,可以获取代码的全部信息,使得分析的结果相对较全面。且基于语义分析,不针对专门的某个恶意程序,对于已知和未知的代码均能有效检测。
[0032]S12、提取训练集合中代码的操作码序列的变长N-gram作为特征。
[0033]将操作码序列的变长N-gram作为特征。N-gram是由一个长度为N的滑动窗口收集的一系列重叠的子字符串,每次滑动一个窗口的单元长度;变长N-gram是一串有意义的连续字节序列,它的长度是不固定的。用变长N-gram作为代码特征提取方式,提取代码中操作码序列的变长N-gram作为特征,能够提取相关的不同长度的特征,弥补了定长N-gram可能拆分有意义的特征的缺陷,防止某些特征的缺失。待测代码同样采取变长N-gram的特征提取方式。
[0034]S13、采用加权信息增益的特征选择方法,计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列选取有效特征。
[0035]当完成训练集合中所有代码的特征提取后,对这些特征进行有效特征的选取。采用加权信息增益的特征选择方法,该方法通过计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列,选取前面若干个作为有效特征。所述特征选择方法还可以为互信息方法、开方拟和检验方法、文档频率方法等。
[0036]S14、根据每个训练样本代码是否包含所述有效特征,构成第一布尔特征向量。
[0037]对该训练集合中每个训练样本代码的特征是否包含所述有效特征进行判断,在此基础上构成第一布尔特征向量,该特征向量在训练阶段进入网络置信网络模型,最后得到一个经过训练的分类器,该分类器可以供深度网络学习。
[0038]进一步,对步骤S300进行更加详细的说明:
S31、通过训练集合的第一布尔特征向量构建深度置信网络模型,对所述深度置信网络模型进行DBN(深度置信网络)无监督反馈调节,最后对模型进行优化微调权值的BP反馈调节,确定模型的权值。
[0039]如图3所示,在训练阶段所述第一布尔特征向量输入时,该原始训练集的特征向量隐式的存在于RBM(受限波尔兹曼机)模块的第一层中,并进行RBM模式的调用,先自下而上的逐层无监督训练RBM,对输入特征向量通过识别模式自底向上转换,到最顶层得到一个输入特征向量的表示,再进行从上而下的生成模型的转换,重构出输入特征向量。选取RBM的层数为N层,RBM层数的确定是根据实验效果来确定的。
[0040]深度置信网络在进行RBM预训练之后,输入数据和重构数据的误差达到了阈值要求。此时网络权值对每个RBM是最优的,但是对于整个DBN网络的权值并未达到最优,在由可见层向顶层隐藏层传递时,DBN会产生额外的错误和信息,因此必须进行整个DBN的反馈微调,以此来保证整个网络的精度要求。
[0041 ] 精度微调主要经过两个过程:DBN无监督反馈调节和BP反馈调节。
[0042]DBN无监督反馈调节过程,通过降低调节输入特征与重构的输入特征向量的误差,不断的调节权值,从而使生成模型可以重构出具有较低误差的原样本。
[0043]BP反馈调节是有监督过程,以样本原始类标和目标输出之间的误差进行BP反馈微调,调节整个网络层数的权值。对输入特征向量经过网络得到目标输出,与样本原始类标进行对比,不断降低样本原始类标与目标输出之间的误差来微调网络参数,优化整个面向恶意代码检测的深度置信网络模型。
[0044]S32、将待测代码的第二布尔特征向量输入同样权值的所述深度置信网络模型; 将待测代码的特征向量应用于上述练习所得出的深度置信网络,该检测阶段和训练阶段是共享网络权值的。在训练阶段结束后,网络的参数固定,用相同的网络把测试的特征向量输入。
[0045]S33、输出待测代码的标签,所述标签标记出是否为恶意代码。
所述待测代码可以为恶意代码或者正常代码,根据上述深度置信网络输出待测代码的标签。如果待测代码为恶意代码,则输出恶意代码的标签;反之,则输出正常代码的标签。
[0046]由上可见,为本发明所述的一种深度学习的恶意代码检测方法的实施例,基于上述方法实施例,本发明还提供了一种深度学习的恶意代码检测系统,如图4所示,所述系统包括:
训练集合模块210,用于提取训练集合中代码的操作码序列的变长N-gram作为特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量;具体如上所述。
[0047]待测代码模块220,用于提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量;具体如上所述。
[0048]恶意代码检测模块230,用于在训练阶段输入第一布尔特征向量构建深度置信网络,在检测阶段向同样参数的所述深度置信网络中输入第二布尔特征向量进行运算,根据所述模型输出的结果判断待测代码是否为恶意代码;具体如上所述。
[0049]进一步的所述基于深度学习的恶意代码检测系统,其中,所述训练集合模块具体包括:
代码选取单元,用于选取恶意代码和正常代码作为训练集合;具体如上所述。
[0050]特征提取单元,用于提取训练结合中代码的操作码序列的变长N-gram作为特征;具体如上所述。
[0051]有效特征单元,用于采用加权信息增益的特征选择方法,计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列选取有效特征;具体如上所述。
[0052]特征向量单元,用于根据每个训练样本代码是否包含所述有效特征,构成第一布尔特征向量;具体如上所述。
[0053]进一步的所述基于深度学习的恶意代码检测系统,其中,所述恶意代码检测模块具体包括:
训练单元,用于通过训练集合的第一布尔特征向量构建深度置信网络模型,对所述深度置信网络模型进行DBN无监督反馈调节,最后对模型进行优化微调权值的BP反馈调节,确定模型的权值;具体如上所述。
[0054]对构建的深度置信网络模型进行详细的讲解,如图3所示,该深度置信网络模型中包括三大模块:RBM模块、DBN反向调节模块、BP反馈调节模块。
[0055]RBM模块,由多层受限玻尔兹曼机(RBM)叠加之后加上一层分类层组成。
[0056]DBN反向调节模块,包括共轭梯度MINIMIZE模块和par_der模块,调用共轭梯度M1TMIZE模块负责优化微调权值,调用par_der模块用于计算输入数据与重构数据误差关于权值的偏导数。
[0057]BP反馈调节模块,主要包括MIN頂IZE模块和CG_PAR_DER模块,
调用共轭梯度MINIMIZE模块负责优化微调权值,调用CG_PAR_DER模块用于计算原始类标与目标输出误差关于权值偏导数。
[0058]检测单元,用于将待测代码的第二布尔特征向量输入同样权值的所述深度置信网络模型进行运算;具体如上所述。
[0059]输出结果单元,用于输出待测代码的标签,所述标签标记出是否为恶意代码;具体如上所述。
[0060]所述基于深度学习的恶意代码检测系统,其中,
所述待测代码为恶意代码或者正常代码;所述训练集合中的代码为无标记样本。
[0061]所述基于深度学习的恶意代码检测系统,其中,还包括:
预处理模块,用于对训练集合中代码样本进行查壳、脱壳处理,并提取相关操作码;具体如上所述。
[0062]综上所述,本发明公开的一种基于深度学习的恶意代码检测方法及系统,用变长N-gram作为恶意代码特征提取方法,能够提取相关的不同长度的有效特征,弥补了定长N-gram可能拆分有意义特征的缺陷;选取深度置信网络作为深度学习方法,深度置信网络为半监督学习模型,可以采用大规模未标记的样本集合进行训练,相对于传统的监督学习模型节省标记大量样本的时间;该深度学习方法,能够训练出一个泛化能力比较强的模型,能够对已知和未知的恶意代码进行准确的预测判断。
[0063]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【主权项】
1.一种基于深度学习的恶意代码检测方法,其特征在于,包括: 步骤A、提取训练集合中代码的特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量; 步骤B、提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量; 步骤C、在训练阶段输入第一布尔特征向量构建深度置信网络模型,在检测阶段将第二布尔特征向量输入所述深度置信网络模型进行运算,根据所述模型输出的结果判断待测代码是否为恶意代码。2.根据权利要求1所述基于深度学习的恶意代码检测方法,其特征在于,所述步骤A具体包括: Al、选取恶意代码和正常代码作为训练集合; A2、提取训练集合中代码的操作码序列的变长N-gram作为特征; A3、采用加权信息增益的特征选择方法,计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列选取有效特征; A4、根据每个训练样本代码是否包含所述有效特征,构成第一布尔特征向量。3.根据权利要求1所述基于深度学习的恶意代码检测方法,其特征在于,所述步骤C具体包括: Cl、通过训练集合的第一布尔特征向量构建深度置信网络模型,对所述深度置信网络模型进行DBN无监督反馈调节,最后对模型进行优化微调权值的BP反馈调节,确定模型的权值; C2、将待测代码的第二布尔特征向量输入同样权值的所述深度置信网络模型进行运算; C3、输出待测代码的标签,所述标签标记出是否为恶意代码。4.根据权利要求1所述基于深度学习的恶意代码检测方法,其特征在于, 所述待测代码为恶意代码或者正常代码; 所述训练集合中的代码为无标签样本。5.根据权利要求1所述基于深度学习的恶意代码检测方法,其特征在于,所述步骤A之前还包括: AO:对训练集合中代码样本进行查壳、脱壳处理,并提取相关操作码。6.一种基于深度学习的恶意代码检测系统,其特征在于,包括: 训练集合模块,用于提取训练集合中代码的操作码序列的变长N-gram作为特征并选取有效特征,根据训练样本代码是否包含有效特征构成第一布尔特征向量; 待测代码模块,用于提取待测代码的特征,根据待测代码是否包括训练阶段的有效特征,构成第二布尔特征向量; 恶意代码检测模块,用于在训练阶段输入第一布尔特征向量构建深度置信网络模型,在检测阶段将第二布尔特征向量输入所述深度置信网络模型进行运算,根据所述模型输出的结果判断待测代码是否为恶意代码。7.根据权利要求6所述基于深度学习的恶意代码检测系统,其特征在于,所述训练集合模块具体包括: 代码选取单元,用于选取恶意代码和正常代码作为训练集合; 特征提取单元,用于提取训练集合中代码的操作码序列的变长N-gram作为特征; 有效特征单元,用于采用加权信息增益的特征选择方法,计算出每个特征对应的加权信息增益,并按照加权信息增益的降序排列选取有效特征; 特征向量单元,用于根据每个训练样本代码是否包含所述有效特征,构成第一布尔特征向量。8.根据权利要求6所述基于深度学习的恶意代码检测系统,其特征在于,所述恶意代码检测模块具体包括: 训练单元,用于通过训练集合的第一布尔特征向量构建深度置信网络模型,对所述深度置信网络模型进行DBN无监督反馈调节,最后对模型进行优化微调权值的BP反馈调节,确定模型的权值; 检测单元,用于将待测代码的第二布尔特征向量输入同样权值的所述深度置信网络模型进行运算; 输出结果单元,用于输出待测代码的标签,所述标签标记出是否为恶意代码。9.根据权利要求6所述基于深度学习的恶意代码检测系统,其特征在于, 所述待测代码为恶意代码或者正常代码; 所述训练集合中的代码为无标签样本。10.根据权利要求6所述基于深度学习的恶意代码检测系统,其特征在于,还包括: 预处理模块,用于对训练集合中代码样本进行查壳、脱壳处理,并提取相关操作码。
【文档编号】G06F21/56GK106096415SQ201610482502
【公开日】2016年11月9日
【申请日】2016年6月24日
【发明人】杨卫国, 吕文玉, 何震宇
【申请人】康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1