APP下载

基于DQN的恶意代码检测研究

2020-07-18贾立鹏王凤英姜倩玉

网络安全技术与应用 2020年6期
关键词:灰度准确率卷积

◆贾立鹏 王凤英 姜倩玉

(山东理工大学 山东 255049)

飞速发展的互联网技术推动了人类社会的不断进步,但互联网技术的不断革新也促进了恶意代码的发展壮大,随着大数据时代的来临,恶意代码的数量和种类呈现爆发式增长。2019年上半年,国家互联网应急中心 CNCERT新增捕获计算机恶意程序数量约3200万个,我国境内感染恶意程序的主机数量约240万台,恶意程序传播次数平均每天达998万次。恶意代码给个人和社会造成了严重的危害,高效的恶意代码检测技术成为当前网络安全领域研究的热点。

恶意代码分析技术分为两种,基于内容的静态分析技术和基于行为特征的动态分析技术[1]。静态分析技术不需要运行恶意代码,而是通过反汇编等方式得到恶意代码的指令和结构信息,完成对恶意代码的静态特征和功能模块的分析。动态分析技术需要在计算机中运行恶意代码,通过监视恶意代码运行过程并捕捉其动态行为特征进行恶意代码分析。动态分析技术消耗资源较大,需要花费大量时间,难以处理大量的恶意代码。

近年来,机器学习技术在图像分类、语音识别和自然语言处理等领域获得了巨大成功,由于这些成功的案例,一些学者开始将机器学习方法应用于恶意代码的检测和研究,并取得了不错的检测效果。Schultz等人[2]提取了恶意代码 DLL(Dynamic Link Library)和API(Application Programming Interface)中的特征,使用朴素贝叶斯算法对未知的恶意代码进行检测,这也是机器学习算法第一次运用在恶意代码检测中。和传统的静态和动态分析技术相比,恶意代码可视化为图像的过程不受恶意代码数量的影响,因此可视化的方法被用于大规模的恶意代码分类。Nataraj等人[3]首次设计了完整的利用恶意代码图像对其进行分类的方案,通过可视化方式对恶意代码分类取得了良好的效果,此后的研究中不断有学者借助此思想进行恶意代码的检测和研究;Kancherla等人[4]使用对恶意代码灰度图像进行信号处理,并使用支持向量机对其进行检测和分类;韩晓光等人[5]基于恶意代码图像提出了一种基于内容指纹的检测方案,提升了检测恶意代码变种的能力。刘亚姝等人[6]将恶意代码可视化技术与逆向分析结合,使用MobileNet轻量模型提升了恶意代码的分类准确率。文献[7]的作者使用灰度纹理特征、操作码指令特征结合灰度直方图对恶意代码进行分类,该方法结合了恶意代码的局部特征和全局特征。文献[8]的作者提出了一种基于N-Gram特征的恶意代码可视化检测方法,并使用深度融合网络验证了方法的分类能力。

面对大数据时代爆炸式增长的恶意代码数量,传统的动态检测技术无法同时应对海量的恶意代码,本文提出一种基于 DQN(Deep Q Network)的恶意代码检测分类方法,属于静态分析方法。该方法将恶意代码反汇编文件转换为灰度图像数据,建立基于DQN的恶意代码分类模型对恶意代码灰度图像数据集进行训练,该模型结合了强化学习中Q-Learning算法的试错机制和动作优化策略,以及深度学习中卷积神经网络算法对图像数据深层特征的挖掘实现对9类恶意代码的检测分类。

1 相关研究

1.1 Q-Learning算法

Q-Learning[9]是一种基于值的强化学习[10]算法,强化学习是机器学习中重要的一部分。强化学习是一种通过智能体(动作的执行者)和所给环境交互进行学习的方法,通过环境的反馈信息,智能体不断调整在不同环境状态下采取的动作,以此获得更多的奖励,最终达到完成学习任务的目的。强化学习的核心思想是试错机制和动作优化策略,智能体通过在环境中不断尝试来改进所采取的动作策略。

Q-Learning的核心是Q(s,a)函数和 Q-table。Q(s,a)函数计算在s状态下做出a动作后获得的期望奖励数值(Q值),该数值用于更新Q-table的内容。Q-table是用于存储Q(s,a)函数产生的Q值的表格,作用是指导智能体执行可以获得更大奖励的动作,智能体通过Q-table得到关于状态和动作的最佳策略。Q(s,a)函数的计算方式如公式(1)所示。

式中:α表示学习率;r表示当前获得的奖励值;γ表示奖励衰减值,该值决定对未来奖励的重视程度;maxa´Q(s´,a´)表示下步状态执行不同的动作所获得的期望奖励数值中的最大值。

1.2 DQN算法

DQN[11]是一种融合了 Q-Learning和神经网络的算法。QLearning使用Q-table的方式存储状态和动作,但是当状态和动作的空间非常大的时候,Q-Learning无法在计算机的内存中维护这么大的表格,而且每次在表格中搜索状态和动作是非常耗时的。DQN的提出解决了这个问题,DQN不需要表格存储Q值,而是直接通过神经网络生成。DQN通过神经网络的分析得到某个状态执行相应动作所获得的Q值,并通过不断更新神经网络从而学习到最佳的动作策略。

DQN中最重要的技术是经验回放,经验回放使得DQN在更新的时候能够随机抽取之前经历进行学习。DQN通过在经验回放集合中进行随机均匀采样,打乱了训练数据之间的相关性和学习经历之间的相似性,使得神经网络的更新更有效率。

2 基于DQN的恶意代码检测分类方法

首先,将恶意代码反汇编文件可视化为灰度图像;然后,建立基于DQN的恶意代码检测分类模型,将恶意代码灰度图像划分为训练数据和测试数据,训练模型提取灰度图像的纹理特征并完成学习;最后,利用训练好的模型对待测试的恶意代码灰度图像进行检测分类。

2.1 恶意代码可视化处理

本文使用恶意代码灰度图像的纹理特征作为特征向量,根据纹理特征的相似性对恶意代码进行分类。恶意代码可视化的流程如下:

(1)对恶意代码反汇编文件采取二进制方式进行读取,其中以8个bits为一组序列,序列数值的范围在0x00到0xFF之间,刚好对应灰度图像像素值的取值范围,将每个序列值映射成灰度图的像素值。

(2)为了最大限度保持图像的纹理特征,将上述生成的灰度图像像素值转换为行宽向量为128的二维矩阵,利用该二维矩阵生成恶意代码的灰度图像。同家族恶意代码的灰度图像有相似的结构特征,不同家族之间有着较为明显的区分,图1为两种不同家族恶意代码的灰度图像。

图1 不同家族的恶意代码灰度图像

2.2 建立基于DQN的恶意代码分类模型

(1)设定模型环境和学习任务。将2.1节中生成的恶意代码灰度图像用于构建模型的虚拟环境,该环境设定为不断产生恶意代码灰度图像的场景,将每张灰度图像视为环境状态,图像的类别作为动作编码,智能体的任务是识别图像中的内容,达到对恶意代码图像进行分类的目的。本文规定智能体正确识别图像时,将得到1分的奖励,否则将被扣除1分。

(2)提取恶意代码灰度图像的特征。本模型选择卷积神经网络提取恶意代码灰度图像中的纹理特征,和其他的神经网络相比,卷积神经网络最主要的两个特征是局部连接和权值共享,这大大减少了参数量,使得卷积神经网络被广泛应用。卷积神经网络的主要结构包括卷积层、池化层和全连接层,卷积层使用卷积核提取图像中的特征,池化层减小卷积核的尺寸,保留图像重要的特征,同时防止过拟合的发生。

本模型选择Relu函数作为卷积层的激活函数,Relu函数使得部分神经元的输出为0,减少了参数之间的依存关系,加快了模型的训练过程。

使用MSE(Mean Square Error)作为本模型的损失函数,MSE作为损失函数可以计算真实数据和模型拟合数据之间的差距,计算方法如公式(2)所示。

式中:n为样本的数量,yi为真实数据,yi´为拟合数据。

(3)计算Q(s,a),训练模型。将卷积层和池化层提取恶意代码灰度图像的纹理特征作为全连接层的输入,得到每个动作对应的Q值。具体地,输入的恶意代码灰度图像经过卷积神经网络的卷积层和池化层后生成特征向量,全连接层以这些特征向量作为输入,输出9个Q值。另外,将当前图像对应类别one-hot编码值和9个Q值做点乘操作,整合得到Q(s,a),结构如图2所示。

图2 计算Q(s,a)

根据Q(s,a)选择执行动作,即输出当前图像的类别来获得分数和环境提供的下一张待识别的图像,并将这次的学习经历存储在经验回放集合中;重复以上操作直到遍历完所有的图像。本模型经验回放集合的内容包括当前状态的图像,智能体对当前图像做出的动作,智能体得到的奖励以及下个状态的图像。从经验回放集合中进行随机采样,用记忆中的样本数据训练模型。

3 实验及结果分析

3.1 实验数据

本文的实验数据来自2015年Kaggle举办的恶意代码检测大赛,共有9类恶意代码家族,数量为10868个。

3.2 评价指标

为了更好地说明分类效果,本文使用准确率(Accuracy)作为模型分类的评价指标,计算方式如公式(3)所示。

式中:TP表示正确类被模型预测为正确类的数量;TN表示错误类被模型预测为错误类的数量;FP表示错误类被模型预测为正确类的数量;FN表示正确类被模型预测为错误类的数量。

3.3 参数设置与结果分析

本模型随机抽取80%的数据用于训练,20%的数据用于测试。参数的设置对分类结果有较大的影响,经过实验对比,将本模型中的卷积层和池化层的个数分别设置为3,详细设置如表1所示。

表1 参数设置

由于生成的恶意代码图像样本之间是独立同分布的,为避免下一个状态的Q值影响当前状态的计算,所以将模型的奖励衰减值设置为0。以下主要关注模型中经验回放集合的尺寸、学习率以及模拟次数对分类准确率的影响。保持其他参数的值不变,调整经验回放集合的尺寸,模型的分类准确率的变化如图 3所示。

图3 经验回放集合尺寸对准确率的影响

如图3所示,当经验回放集合的尺寸为64时,模型的分类能力是最佳的。将经验回放集合的尺寸设置为64,调整学习率的数值,模型的分类准确率变化如图4所示。

图4 学习率对准确率的影响

如图4所示,当学习率为0.5时,模型的分类能力达到最佳。将经验回放集合的尺寸设置为64,学习率设置为0.5,调整模型的模拟次数,模型的分类准确率如图5所示。

图5 模拟次数对准确率的影响

如图5所示,当模拟次数为200时,模型的分类能力达到最佳,当模拟次数大于200次时模型出现过拟合现象。综上所述,当模型中的经验回放集合尺寸为64,学习率为0.5,模拟次数为200时,模型的分类效果是最好的,平均分类准确率为98.3%。为了验证本文所用模型的有效性,将本文模型与其他传统机器学习模型进行了实验结果的对比,如表2所示。

表2 本文模型与其他模型的对比

由表2可知,其他分类模型中分类效果最好的是 CNN,但仍与本文所用模型的分类效果有较大差距。和单纯的卷积神经网络模型相比,本文方法结合了强化学习的试错机制和动作优化策略,以及深度学习对于特征的深层挖掘,提升了恶意代码纹理特征的表达能力,提高了恶意代码家族分类的准确率。

4 结束语

本文提出了一种基于DQN的恶意代码检测分类方法,该方法结合强化学习试错机制和动作优化策略,以及深度学习对图像特征的深层挖掘完成对恶意代码的分类。将恶意代码反汇编文件转换为灰度图像,并建立基于DQN的恶意代码分类模型对恶意代码灰度图像的纹理特征进行提取和学习。模型的环境设定为产生图像的场景,智能体在环境中不断进行识别图像的任务,并根据环境的反馈信息调整动作策略,达到分类恶意代码图像的效果。实验结果表明,本文所用方法在分类准确率方面优于传统的机器学习方法。

猜你喜欢

灰度准确率卷积
采用改进导重法的拓扑结构灰度单元过滤技术
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
Arduino小车巡线程序的灰度阈值优化方案
卷积神经网络的分析与设计
从滤波器理解卷积