APP下载

基于图像纹理和卷积神经网络的恶意文件检测方法

2018-11-22胡玉鹏旷文鑫

计算机应用 2018年10期
关键词:灰度准确率卷积

蒋 晨,胡玉鹏,司 凯,旷文鑫

(湖南大学 信息科学与工程学院,长沙 410000)(*通信作者电子邮箱yphu@hnu.edu.cn)

0 引言

大数据环境下,如何从各种海量的已知数据中提取有价值的信息来对未知事件作出预测或者防止未知恶意事件发生的这个问题引起了各个领域的研究者们的关注和研究。在这样的大环境下,再加上如今互联网的飞速发展,Android系统由于其高开源性和基于Android系统开发的软件没有一个统一的发布和管理平台,所以导致了很多程序开发者受黑色经济的诱惑开发出了大量的安卓恶意软件。这不仅制造了整个Android市场的混乱,还对每个移动用户的隐私以及财产安全造成了更加严重的威胁。

赛门铁克于2016年只记录了4个新恶意家族,较2015年大幅下降,可以看出移动威胁领域的创新放缓了。而且,每个家族中的恶意移动应用变体数量增长了1/4以上,可以看出大多恶意软件是来自同一恶意家族,只是通过代码混淆和变形成为新的恶意软件。总的来说,可以推断出攻击者选择改进和修改现有的恶意软件系列和类型,而不是开发新的和独特的威胁类型,可以说在某种程度上可执行文件代码是具有相似性的,因此通过对恶意文件图像化处理可以更加直观地展现经过代码变种和混淆后恶意文件之间的相似点。除此之外,还有“.pdf”“.doc”“.exe”等类型的恶意软件,恶意软件类型的多样化对检测手段提出了很大的挑战。因此,需要使用更通用的方式来分析和检测安卓恶意软件的威胁和攻击,以及解决跨平台恶意文件检测问题。

传统的恶意软件检测技术无外乎两种:一种是基于静态特征的检测分析,例如,Zhu等[1]提出的基于应用程序编程接口(Application Programming Interface, API)序列的恶意软件检测方法,将恶意软件API特征提取出来,建立特征库用于恶意软件的检测;Zhang等[2]提出的基于n-gram属性相似度的恶意软件检测方法,将n-gram属性中的相似度作为恶意文件检测的特征。这一类检测技术虽然对软件代码的分析速度比较快,但是对于混淆或者加密后的软件无法作出准确的分析,无法对未知恶意软件作出判断[3-5]。另外一种则是基于动态特征的检测分析,例如,林鑫[6]提出了基于沙箱的恶意软件检测方法,通过在沙箱环境中观察恶意软件的行为特征,从而判断出软件的性质;Yewale等[7]提出了基于操作码频率的恶意软件检测方法,这种方法通过检测操作码使用频率来判别软件的好坏,这一类检测技术虽然精确度高,能够有效处理静态检测中存在误报、漏报的问题。但是这种方法消耗大量的资源,在模仿程序执行时常常耗时太严重,而且需要非常高的实时性[8]。这两种检测技术都不能很好地解决未知恶意软件检测问题,因此,如何从这些海量的恶意软件中提取有价值的信息来对未知恶意软件进行检测就是本文的研究点。另外,韩晓光等[9]提出了一种基于纹理指纹的恶意代码变种检测方法,该方法结合灰度共生矩阵(Gray Level Co-occurrence Matrix, GLCM)的图像纹理特征和局部敏感哈希(Locality-Sensitive Hashing,LSH)算法对PE文件格式的恶意软件进行检测,准确率约为78%,并不能完成对Android平台下恶意文件进行检测,不能很好地解决跨平台检测问题,而且这种方法不能有效地避免人工筛选特征所带来的问题,无法实现端到端的检测。

因此,本文针对恶意代码变种和混淆以及传统恶意文件检测存在的各种问题,提出一种新的基于图像纹理和卷积神经网络(Convolutional Neural Network, CNN)的恶意文件检测技术,该技术结合图像生成技术和深度学习算法,先通过图像生成技术将恶意软件转换为灰度图像,再通过卷积神经网络算法自动提取恶意软件图像特征并同时学习训练这些图像特征,构建一个训练好的卷积神经网络模型用于对未知恶意软件的检测。

1 本文检测模型

1.1 恶意文件检测总体流程

基于图像纹理和卷积神经网络的恶意文件检测总体流程主要包括病毒样本图像化处理、卷积神经网络模型构建、卷积神经网络模型训练和卷积神经网络测试四大步,总体流程如图1所示。

图1 恶意文件检测总体流程Fig.1 Overall flow of detection of malicious files

1.2 基于卷积神经网络的恶意文件检测模型结构

针对本文所研究的问题建立起来的卷积神经网络结构总共有9层深度:恶意软件图像输入层、4个连续的卷积层和池化层、3个连续的全连接层、分类结果输出层。本文卷积神经网络的结构如图2所示。

图2 基于卷积神经网络的恶意文件检测模型结构Fig.2 Architecture of malicious file detection model based on CNN

1.3 模型网络参数初始化

卷积神经网络的初始化配置如表1所示。

表1 模型网络参数初始化设置Tab. 1 Model network parameter initialization

1)本文卷积神经网络的训练函数采用梯度下降法。

2)神经网络的学习率η取值在区间[0,1]内:学习率η越大,那么对权值的修改就越大,而且训练学习速度也越快;学习率η越小,则训练学习速度就越慢,使用的时间更多。所以太大的学习速率η容易在训练学习过程中造成震荡,而太小的学习速率η则使得网络收敛的速度变缓慢,权值就很难趋于稳定。为此,本文使用变学习率的方法,该方法的学习率η会随着训练的时间改变,在卷积神经网络初期初始值较大,网络收敛迅速,而随着训练的进行,学习率η会不断减小网络就越趋于稳定。其公式如下:

(1)

1.4 模型训练和优化

1.4.1 模型在训练阶段的流程和算法

第1步 使用灰度图像生成技术将大量的实验样本转换成灰度图像。

灰度图像生成技术主要使用的是B2M算法,该算法是将任意已知的恶意软件的可执行文件,就是二进制文件,每8 bit读取为一个不带符号的整型(范围是[0,255]),将固定的行宽设为一个向量,这样整个文件在最后会生成一个二维数组[10]。下面为文件转换为灰度图像的大致算法流程。

function B2M(file)

file_size← get_file_size(file)

width← GET_IMAGE_WIDTH(file_size)

rows← size(binaryfile) /width

columns←width/ 8

initarray[rows][columns]

fori=0 →rowsdo

forj=0 →columnsdo

array[i][j] ← convert 8 bit to unsigned integer (0-255)

end for

end for

GrayscaleImage← convert 8 bit vector toGrayscaleImage

returnGrayscaleImage

end function

第2步 将这些样本的灰度图像作为卷积神经网络的输入。

第3步 使用卷积神经网络对这些输入的灰度图像自动提取图像纹理特征并同时对这些提取的特征进行学习训练;在这一步骤中使用的卷积神经网络相关算法如下:

1)卷积层中图像特征处理算法。

一般地,以2维图像为例,则卷积层的形式为:

z(x,y)=f(x,y)*g(x,y)=

mf(x-m,y-n)*g(m,n)

(2)

其中:f代表输入,通常为2维图像;g代表卷积核;m和n分别为卷积核的尺寸。卷积层中图像特征提取流程如下。

输入 特征图Input,宽度Width1,长度Height1,深度Depth1。

参数 卷积核尺寸F,步进Stride,卷积核的个数K,填充因子P。

输出 卷积后的特征图Output,宽度Width2,长度Height2,深度Depth2。

InitalizeInput

Width2=(Width1-F+2P)/Stride+1

Height2=(Height1-F+2P)/Stride+1

Depth2=K

Output← [Width2,Height2,Depth2]

2)池化层中图像特征的处理流程。

输入 特征图Input,宽度Width1,长度Height1,深度Depth1。

超参数 卷积核尺寸F,步进Stride。

输出 卷积后的特征图Output,宽度Width2,长度Height2,深度Depth2。

InitalizeInput

Width2=(Width1-F)/Stride+1

Height2=(Height1-F)/Stride+1

Depth2=Depth1

Output←[Width2,Height2,Depth2]

3)反向传播训练算法计算过程。

输入 输入值x,损失函数E。

参数 权重参数w,偏置项b,输入层的激活值α1。

输出 损失函数的梯度。

for eachl=2, 3, …,L

// 前向传播

zl=wlαl-1+bl

αl=σ(zl)

end for

δL=▽αE⊙σ′(ZL)

// 计算最后一层的残差

for eachl=L-1,L-2,…,2

// 反向传播,计算每一层的残差

δl=(wl+1)Tδl+1⊙σ(Zl)

end for

outputwandbargmin(E)

//输出使损失函数极小化的w和b

第4步 卷积神经网络模型训练完毕。

1.4.2 模型在测试阶段的流程和算法

第1步 同样使用灰度图像生成技术将待检测的未知文件转换成灰度图像;

第2步 使用训练好的卷积神经网络模型自动提取图像纹理特征并学习;

第3步 输出检测结果,如正常文件或者恶意文件。

在全连接层的最后一层用的是Softmax回归分类模型,输出值为[0,1]区间的每个类别的概率[11]。

a)0为正常文件,1为恶意文件。

b)p(0)判定为正常文件的概率,P(1)判定为恶意文件的概率。

c)当p(0)>p(1),则表示待检测文件为正常文件;否则表示该文件被判定为恶意文件。

2 实验与分析

2.1 实验环境和样本

基于图像纹理和卷积神经网络的恶意文件检测技术的实验运行的环境:深度学习框架Tensorflow[12],64位Windows 7,CPU为酷睿8核2.4 GHz,内存为DDR4 2800 8 GB,SSD固态硬盘512 GB。

本文选取使用量最大的Android和Windows平台上恶意样本作为实验对象。Android的恶意软件来源于virusshare项目,该恶意样本库收集了大量的恶意样本。本实验随机选取Android下3 000个apk文件作为恶意样本,同时在移动端小米应用市场上下载了在各个分类中下载量靠前的3 000个正常apk样本。此次实验最终在Android平台下采用3 000个恶意样本与3 000个良性样本,合计6 000个样本。同样,从virusshare项目选取Windows病毒文件2 000个,同时从360安全卫士里下载了各个种类中下载量靠前的共2 000个正常Windows程序。最终在Windows平台下采用2 000个恶意样本和2 000个良性样本,合计4 000个样本。本文将每个平台下数据集分成2份,分别为训练样本集和测试样本集,比例分别为80%和20%。

2.2 检测性能评价指标

本文使用检测率TPR、误报率FPR和准确率ACC来对模型检测性能进行评估,分别定义如下。

真阳率,也就是检测率,即所有恶意样本中正确分类为恶意样本的比例:

假阳率,也就是误报率,即所有良性样本中错误分类为恶意样本的比例:

准确率,即所有被正确分类的样本与所有实验样本的比例:

其中:TP表示正确分类为恶意软件的恶意样本个数;FP为错误分类为恶意软件的正常样本个数;TN表示正确分类为正常软件的正常样本个数;FN表示错误分类为正常软件的恶意样本个数。

2.3 实验结果与分析

在卷积神经网络的初始化配置下通过实验得出实验结果表2所示。在Android平台和Windows平台下,其最高准确率分别达79.6%和97.6%,平均准确率分别约为79.3%和96.8%。

表2 本文方法Android及Windows平台下检测性能对比结果Tab. 2 Detection performance of proposed method under Android and Windows platform

而文献[9]在未分块和分块两种情况下,平均准确率分别只有71.7%和78.6%,结果如表3所示。

本文方法和文献[9]方法的实验结果对比如图3所示。

由此可得出:本文方法无论是在Android平台还是Windows平台下检测准确率都高于文献[9]方法的准确率,并且在Windows平台的准确率高出文献[9]方法约20%。而且,文献[9]一个明显的缺陷就是实验的样本量太少,不足以说明问题,因此可见本文研究所提出的方法实验有效而且准确度较高,而且可以很好地解决跨平台恶意软件检测问题。

表3 文献[9]中各样本集检测准确率结果Tab. 3 ACC of different sample sets in reference [9]

图3 本文方法与文献[9]方法的准确率对比Fig.3 Accuracy comparison of proposed method and reference [9]

同时,为测试本文方法在时间以及内存开销上的情况,分别对32 KB、64 KB、128 KB、256 KB、512 KB、1 024 KB、2 048 KB、3 072 KB以及4 096 KB大小的样本进行分析,测试这些样本分别在灰度图像映射、卷积神经网络灰度图像特征提取和训练两个阶段的耗时以及内存使用情况,如图4~5所示。

图4 本文检测模型各阶段耗费时间与样本大小的关系Fig.4 Relationship between the time cost and the sample size at each stage of the proposed model

图5 本文检测模型各阶段内存使用与样本大小的关系Fig.5 Relationship between memory usage and sample size at each stage of proposed model

可见对于单个待检测样本来说,系统检测的时间随着样本增加而增加,其中,在灰度图像特征提取和训练这个阶段会消耗更多的时间和内存。

文献[9]的时间开销如图6所示,分析可知,文献[9]的方法主要有五个阶段,而本文方法只有两个阶段,大幅减少了检测所需要的时间。本文方法无论在时间开销上还是内存开销上都比文献[9]节省了不少,而且大幅提高了检测准确率。综合来说,本文提出的检测方法在准确率、时间开销和内存开销上的优势都非常明显,而且相对于文献[9],本文提出的基于图像纹理和卷积神经网络的恶意文件检测技术有效地解决了恶意文件跨平台检测问题。

图6 文献[9]中检测各阶段耗费时间与各样本集的关系Fig.6 Relationship between time cost and sample set at each stage of reference [9]

3 结语

本文主要研究大数据环境下一种能从海量的已知恶意文件样本中提取有用的信息来检测未知恶意文件的检测技术,提出了一种基于图像纹理和卷积神经网络的恶意文件检测方法。该方法先使用灰度图像生成技术将大量的恶意文件样本转换成灰度图像,再通过卷积神经网络算法自动提取这些图像特征并同时学习训练这些特征,建立一个训练好的卷积神经网络模型用于检测未知恶意文件。最后通过实验验证了本文所提出的恶意文件检测方法检测准确率高、检测速度快,可以实现自动化检测,并且可以有效地解决跨平台恶意文件检测的问题。但是本文提出的恶意文件检测方法在Android平台下的检测准确率远远不到Windows平台下的检测准确率,如何进一步提高Android平台下的恶意文件的检测准确率值得更进一步研究。

猜你喜欢

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