基于Two-Head异常检测模型的恶意代码样本筛选器及方法与流程

文档序号:22834185发布日期:2020-11-06 16:25阅读:126来源:国知局
基于Two-Head异常检测模型的恶意代码样本筛选器及方法与流程

本发明涉及信息安全技术领域,具体涉及基于two-head异常检测模型的恶意代码样本筛选器及方法。



背景技术:

在网络安全领域中,基于深度学习的恶意代码检测模型不断被提出,其过程首先是对恶意代码提取其静态特征和动态特征,随后将提取到的训练数据导入到模型中进行训练并使模型收敛,以识别在网络中可能存在的恶意软件或者恶意代码。

恶意代码是指在一定环境下被执行的,用于破坏计算机操作系统或者网络系统机密性、完整性、可用性的代码序列。

按照在检测时被执行与否,分析恶意代码的方式通常为静态分析和动态分析。静态分析不需要执行恶意代码,而是通过逆向工程以及获取恶意程序的文件结构特征和字节流特征来判定是否为恶意程序,比较典型的静态特征包括pe文件结构特征、字节流序列特征以及通过反汇编工具得到的操作码序列特征等等;动态分析需要执行恶意代码,通过监控程序在沙箱等虚拟环境中运行时的执行过程、向操作系统请求各种服务以及内存、进程等来判定是否为恶意程序。主要包括函数api调用、操作系统内存镜像等动态行为特征,

将深度学习模型用于进行恶意代码检测是目前较为流行的一种检测方式,深度学习模型是受人类大脑的神经系统启发得到的计算模型,深度学习模型通过模拟人脑的神经系统中的神经元来完成最基本的运算操作。在深度学习模型中,神经元们接受上一层的多个神经元的输入,对所有的输入加权求和后输入激活函数,最后得到神经元的输出。许多神经元互相链接生成的网络理论上可以拟合任意复杂的函数。在网络安全领域中,基于深度学习的恶意代码检测模型不断被提出,其过程首先是对恶意代码提取其静态特征和动态特征,随后将提取到的训练数据导入到模型中进行训练并使模型收敛,以识别在网络中可能存在的恶意软件或者恶意代码。

大多数基于深度学习的恶意代码检测模型能够以高准确率检测出测试样本中的恶意代码,并能节省安全专家的人工分析成本,实现了端到端的检测,但是在实际应用过程中,仍然发现这些模型存在的不足之处:

随着一系列恶意代码对抗检测技术被用于攻防对抗,家族内的恶意代码会随着时间演化出多种变体,这些变体在攻防对抗中会演化为新的恶意代码变种,并具有与原始代码不尽相同的特征分布。基于深度学习的恶意代码检测模型在对这些变种进行预测的时候往往不能识别出这些变种的特征分布,会使得模型在时间维度上的鲁棒性出现下降,即出现时间衰减问题。所谓时间衰减,是指由数据偏移造成的恶意代码检测模型随着时间的推移,在预测新的恶意样本的时候其预测准确率而出现下降的情况。

恶意代码检测技术的时间鲁棒性是指模型经过预训练后,在测试阶段不会出现严重的时间衰减问题,由于恶意代码检测模型在训练阶段存在时间偏差,因此提升恶意代码检测模型的时间鲁棒性对于提升模型的落地性具有重要意义。

对恶意代码检测模型的样本进行异常检测是一种可以预想的手段,异常检测,主要是指通过设计相关算法,发现数据中存在的与事先规定的正常行为不相符的异常行为,这些异常行为对应的数据则被称为异常样本。异常检测的应用方式包括有监督、半监督以及无监督,异常检测的使用场合也非常广泛,比如银行信用卡管理、网络流量入侵检测以及恶意代码检测等。

目前常见的异常检测技术主要是基于机器学习和深度学习算法去实现的,在机器学习算法中比较典型的是支持向量机模型,该模型也适用于恶意代码检测场景,可以将其作为异常检测模型进行样本选择。但是基于支持向量机模型的异常检测技术,其结构复杂,实现有一定难度,且训练过程周期较长,效果不理想。

因此,目前亟需一种结构简单、实现简便,训练周期短、效果准确率更高的恶意代码异常检测的方案。



技术实现要素:

有鉴于此,本发明提供了基于two-head异常检测模型的恶意代码样本筛选器及方法,是一种能够提升恶意代码检测模型的时间鲁棒性的样本异常检测方案,其结构简单、实现简便,训练周期短且检测效果准确率更高。

为达到上述目的,本发明的技术方案为:

本发明的一个实施例提供了基于two-head异常检测模型的恶意代码样本筛选器,用于对基于卷积神经网络模型构建的恶意代码检测模型进行样本筛选,筛选器包括特征提取器、第一分类层、第二分类层、softmax函数模块以及不确定性度量模块。

特征提取器包括恶意代码检测模型中的特征提取部分。

第一分类层和第二分类层采用恶意代码检测模型中的分类层结构,第一分类层和第二分类层并行连接在特征提取器输出端。

第一分类层和第二分类层的输出分别经softmax函数模块输出第一分类概率值和第二分类概率值。

第一分类概率值和第二分类概率值输入至一个不确定性度量模块中;不确定性度量模块的输出为分类结果标签。

进一步地,特征提取器、第一分类层、第二分类层的超参数设置为与恶意代码检测模型相同的超参数。

本发明另外一个实施例还提供了基于two-head异常检测模型的恶意代码样本筛选方法,其特征在于,该方法用于对基于卷积神经网络模型构建的恶意代码检测模型进行样本筛选,包括:

步骤1)取恶意代码检测模型的训练集中的恶意代码检测训练样本,进行数据特征提取,构建异常检测训练样本。

步骤2)恶意代码检测模型基于卷积神经网络模型构建,基于此构建two-head异常检测模型,具体为:

取恶意代码检测模型中的特征提取部分作为特征提取器,在特征提取器后并行添加第一分类层c1和第二分类层c2;第一分类层c1和第二分类层c2的输出分别经归一化指数函数即softmax函数输出第一分类概率值和第二分类概率值;第一分类概率值和第二分类概率值输入至一个不确定性度量函数中;不确定性度量函数的输出为分类结果标签。

步骤3)采用恶意代码训练样本对所构建的two-head异常检测模型进行训练,使得two-head异常检测模型的损失值达到收敛,获得训练好的two-head异常检测模型。

步骤4)使用训练好的two-head异常检测模型对待输入至恶意代码检测模型的恶意代码检测样本进行筛选。

进一步地,特征提取器、第一分类层、第二分类层的超参数设置为与恶意代码检测模型相同的超参数。

进一步地,步骤4)具体包括如下步骤:

步骤401)取恶意代码检测模型的测试集中的恶意代码检测测试样本;将恶意代码检测测试样本输入至训练好的two-head异常检测模型,获得针对恶意代码检测测试样本的分类结果标签;

步骤402)选取分类结果标签为设定值的恶意代码检测测试样本为正常样本,即为恶意代码样本筛选结果。

进一步地,步骤1)包括如下具体步骤:

s101)取恶意代码检测模型的训练集中的恶意代码检测训练样本,提取恶意代码检测训练样本的二进制字节流特征得到二进制字节序列;

s102)将二进制字节序列转换成0-255区间内的10进制整数,得到整数序列。

s103)对每个恶意代码检测训练样本对应的整数序列进行长度归一化处理得到数据特征提取结果,构建为异常检测训练样本。

进一步地,步骤3)中,two-head异常检测模型的损失值为

其中xi为第i分类层的输入,yi为第i分类层的输出;i取值为1和2;pi(yi|xi)为第i分类层的输入为xi时,输出为yi的概率,即p1(y1|x1)为第一分类概率值;p2(y2|x2)为第二分类概率值;xn为异常检测训练样本的集合。

进一步地,步骤2)中的不确定性度量函数具体为:

score=|max(p1(y1|x1))-max(p2(y2|x2))|

其中xi∈xn,i=1或2;xi为第i分类层的输入,yi为第i分类层的输出;i取值为1和2;pi(yi|xi)为第i分类层的输入为xi时,输出为yi的概率,即p1(y1|x1)为第一分类概率值;p2(y2|x2)为第二分类概率值;xn为异常检测训练样本的集合;score为不确定性度量结果。

设定分类阈值δ,δ依据经验设定。

two-head异常检测模型分类结果标签为y:

有益效果:

1、本发明所提出的样本筛选器以及筛选方法通过基于two-head神经网络的异常检测模型来实现,该模型是在基于深度学习的恶意代码检测模型的基础上进行改进的,也就是借助恶意代码检测模型的特征提取部分,再加上一个两个并行的双输出分类层组成two-head模型的网络结构,并有针对性地设计了该模型在训练阶段的loss函数以及在测试阶段的score函数,以实现无监督的异常检测,即只需要恶意代码检测模型的训练数据即可以训练异常检测模型,不需要提供任何测试数据的标签,因此two-head模型具有较强的普适性。

本发明提供的恶意代码样本筛选方案,其中two-head异常检测模型在训练阶段不需要进行超参数的选择,因为只需要将超参数设置为恶意代码检测模型在训练阶段的超参数即可,节省了寻找最优超参数的时间;

本发明可以适用于二分类或者多分类问题,只需要能够获取恶意代码检测模型的网络结构即可,相比于单类支持向量机实现起来要简单。

本发明实现的模型能够以更高的准确率和召回率实现对恶意代码测试数据的异常样本进行检测,而基于单类支持向量机的异常检测模型在检测效果上没有本发明实现的模型好。

2、本发明主要解决目前基于深度学习的恶意代码检测模型所存在的时间鲁棒性问题,并设计了基于two-head神经网络的异常检测模型用以进行样本选择,目的是筛选出在测试数据中会使模型预测错误的异常样本,保证模型在测试集上的预测性能维持在与训练阶段相持平的水准。而筛选出的异常样本,则可以用于后续的主动学习中,以持续、动态的方式更新恶意代码检测模型,使模型能够不断学习到新的恶意代码变种的特征分布。

附图说明

图1为本发明实施例提供的基于two-head异常检测模型的恶意代码样本筛选器组成结构图;

图2为本发明实施例提供的基于two-head异常检测模型的恶意代码样本筛选方法流程图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明针对恶意代码检测模型的时间鲁棒性问题,提出了一种基于two-head异常检测模型的恶意代码样本选择方法。样本选择方法的基本思想是在恶意代码检测模型开始预测之前,设计一个异常样本检测模型来筛选出测试数据中的异常样本,并让模型对剩余的正常样本进行预测,对于预测出的异常样本则进行人工标注并用于执行主动学习,进而提高模型的预测可靠度,降低人工分析成本,并以持续、增量的方式更新恶意代码检测模型。

本发明的一个实施例提供了基于two-head异常检测模型的恶意代码样本筛选器,用于对基于卷积神经网络模型构建的恶意代码检测模型进行样本筛选,其结构如图1所示,筛选器包括特征提取器、第一分类层、第二分类层、softmax函数模块以及不确定性度量模块。

特征提取器包括恶意代码检测模型中的特征提取部分。

第一分类层和第二分类层采用恶意代码检测模型中的分类层结构,第一分类层和第二分类层并行连接在特征提取器输出端。

第一分类层和第二分类层的输出分别经softmax函数模块输出第一分类概率值和第二分类概率值。

第一分类概率值和第二分类概率值输入至一个不确定性度量模块中;不确定性度量模块的输出为分类结果标签。

基于two-head神经网络的异常检测模型作为样本筛选器用于执行样本筛选策略,该样本筛选器不是一个具体的已经被定义好的模型,而是在恶意代码检测模型的神经网络结构基础上进行更改,使其能够用于进行异常检测。具体来说,基于two-head神经网络的异常检测模型主要是将恶意代码检测模型f(x)最后一层前面的部分拿出来作为特征提取器e(x),然后在其后面添加两个分类层,第一分类层c1和第二分类层c2,这两个分类层是并行的结构,接在特征提取器e(x)的后面。two-head模型的结构图如图1所示。

本发明实施例中,特征提取器、第一分类层、第二分类层的超参数设置为与恶意代码检测模型相同的超参数。即two-head异常检测模型在训练阶段不需要进行超参数的选择,因为只需要将超参数设置为恶意代码检测模型在训练阶段的超参数即可,节省了寻找最优超参数的时间;

本发明的另外一个实施例还提供了基于two-head异常检测模型的恶意代码样本筛选方法,其原理如图2所示,该方法用于对基于卷积神经网络模型构建的恶意代码检测模型进行样本筛选,包括如下步骤:

步骤1)取恶意代码检测模型的训练集中的恶意代码检测训练样本,进行数据特征提取,构建异常检测训练样本。

步骤1)包括如下具体步骤:

s101)取恶意代码检测模型的训练集中的恶意代码检测训练样本,提取恶意代码检测训练样本的二进制字节流特征得到二进制字节序列:

s102)将二进制字节序列转换成0-255区间内的10进制整数,得到整数序列;

s103)对每个恶意代码检测训练样本对应的整数序列进行长度归一化处理得到数据特征提取结果,构建为异常检测训练样本。

由于整数序列的长度往往不统一,为了便于模型进行矩阵运算,需要对整数序列进行截取和补齐操作,具体方式是统计所有整数序列的长度,并将其下四分位数(或中位数)作为固定长度;对于每一个整数序列,舍弃超出固定长度的部分,当它的长度小于固定长度的时候,则在序列的末尾填补0直至序列满足固定长度。

步骤2)恶意代码检测模型基于卷积神经网络模型构建,基于此构建two-head异常检测模型,具体为:

取恶意代码检测模型中的特征提取部分作为特征提取器,在特征提取器后并行添加第一分类层c1和第二分类层c2;第一分类层c1和第二分类层c2的输出分别经归一化指数函数即softmax函数输出第一分类概率值和第二分类概率值;第一分类概率值和第二分类概率值输入至一个不确定性度量函数中;不确定性度量函数的输出为分类结果标签。

本发明中所针对的恶意代码检测模型选用传统的神经网络模型即可,例如可以采用cnn模型的网络结构。使用恶意代码检测模型在训练阶段的超参数,构建two-head异常检测模型即可,即特征提取器、第一分类层、第二分类层的超参数设置为与恶意代码检测模型相同的超参数。

步骤2)中的不确定性度量函数具体为:

score=|max(p1(y1|x1))-max(p2(y2|x2))|

其中xi∈xn,i=1或2;xi为第i分类层的输入,yi为第i分类层的输出;i取值为1和2;pi(yi|xi)为第i分类层的输入为xi时,输出为yi的概率,即p1(y1|x1)为第一分类概率值;p2(y2|x2)为第二分类概率值;xn为异常检测训练样本的集合;score为不确定性度量结果。

设定分类阈值δ,δ依据经验设定。

two-head异常检测模型分类结果标签为y:

步骤3)采用恶意代码训练样本对所构建的two-head异常检测模型进行训练,使得two-head异常检测模型的损失值达到收敛,获得训练好的two-head异常检测模型。

步骤4)使用训练好的two-head异常检测模型对待输入至恶意代码检测模型的恶意代码检测样本进行筛选。

由于通常情况下神经网络模型在预测异常样本的时候其输出的概率值会比预测正常样本的时候偏低一些,异常样本往往离分类边界很近,因此更容易被模型预测错误,并且在进行多次预测的时候,模型对异常样本的预测往往会变得不稳定。同时,由于恶意代码测试样本的标签是很难获取的,需要耗费大量的人工分析成本,因此针对恶意代码的异常检测需要在无监督的方式下进行。

步骤3)中,two-head异常检测模型的损失值为

其中xi为第i分类层的输入,yi为第i分类层的输出;i取值为1和2;pi(yi|xi)为第i分类层的输入为xi时,输出为yi的概率,即p1(y1|x1)为第一分类概率值;p2(y2|x2)为第二分类概率值;xn为异常检测训练样本的集合。

步骤4)具体包括如下步骤:

步骤401)取恶意代码检测模型的测试集中的恶意代码检测测试样本,所述恶意代码检测测试样本输入至训练好的two-head异常检测模型进行样本选择,获得针对恶意代码检测测试样本的分类结果标签;

步骤402)选取分类结果标签为设定值的恶意代码检测测试样本为正常样本,即为恶意代码样本筛选结果。

使用训练好的two-head异常检测模型对测试数据进行样本选择,将模型对测试样本输出的score值超过阈值的样本识别为异常样本,将其筛选出去,并用预训练好的恶意代码检测模型对剩余的测试数据进行预测,从而达到提高恶意代码检测模型时间鲁棒性的目的。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1