基于量化的CNN恶意代码检测方法

2023-09-04 14:36邱晓蕾张红梅严海兵
计算机仿真 2023年7期
关键词:二进制灰度可视化

邱晓蕾,张红梅,严海兵

(桂林电子科技大学信息与通信学院,广西 桂林541004)

1 引言

边缘设备由于资源受限、安全防护薄弱容易成为黑客的攻击目标,其安全威胁日益严重。恶意软件检测是信息系统安全防护的重要手段,研究边缘设备上的恶意软件检测有着重要的现实意义。

研究人员发现程序的结构相似性可以体现在程序可视化后的图片相似性,因而将可视化思想融合进恶意软件的检测和分类。Nataraj等[1]首次提出将恶意软件二进制字节转变成图片,再通过图像分类技术实现恶意软件分类。可视化方法最初主要是结合SVM(支持向量机)[2]、KNN(K近邻)[3]等机器学习方法对恶意代码进行分类,但是基于机器学习的方法主要通过人工提取特征,这个过程耗时且费力。而深度学习方法则能够自动提取特征,同时也可以提高对恶意软件的分类能力。文献[4]使用深度学习比传统的机器学习SVM、KNN的分类精确度均有所提高。

近年来,卷积神经网络(Convolutional Neural Networks,CNN)被广泛应用于恶意代码检测,但是随着CNN的深度和广度不断加深其网络结构愈加复杂。文献[5]展示了由于GoogleNet和ResNet的网络结构不断加深,使得模型的计算量和参数量大大增加,使得深度网络很难应用在资源受限的边缘设备上。

为了解决CNN网络中参数量过多和计算量过大的问题,曾[6]等人提出一种轻量级的神经网络模型。然而,轻量级模型的可扩展性和集成性较弱,泛化性也较弱[7]。而深度模型压缩方法可以在不过多损失精度的情况下,降低对设备资源的需求。当前主要的模型压缩方法有网络剪枝[8]、低秩分解[9]、网络量化[10]和紧凑网络设计[11]四大类,其中量化方法是目前最直接有效的方法,通过对网络中参数进行低秩量化,减小网络所需的存储空间,加快运算速度[7]。Courbariaux等[12]发表了BNN(BinaryNeuralNetworks,二值化神经网络)方法,该方法将卷积运算转换为同或和位运算,转换方式是将浮点型权重和输入都量化为+1和-1,毫无疑问这种方法会较大程度的压缩并加速了深度网络的运算,同时也会产生严重的精度损失。XNOR-Net算法[13]通过重建具有单个比例因子的全精度滤波器,在精度损失较低的情况下,有效地实现卷积运算。2021年,张[14]等发表HBF-Net(Half-wareGaussianQuantization+BinaryWeightNetworks+Fine-tune Net,半波高斯量化器+二值化权重网络+微调)算法,该方法在精度损失较小的情况下,实现了理论上30倍的模型压缩。

基于此,本文结合HBF-Net方法构建了基于量化的VGG(CNN经典模型之一)恶意软件家族分类模型HBF-VGG14-Net,保证精度近乎不损失的情况下,该方法实现了模型内存占用更小,同时还保证了训练得以加速。

2 研究方法

基于量化的VGG14恶意代码检测模型,以恶意代码的纹理特征为分析对象,其过程如图1所示。

图1 基于可视化的恶意软件检测方法的流程图

主要分为5个部分:①数据集可视化,将恶意代码的APK文件反汇编为二进制.bytes文件,将其可视化为灰度图片,获得对应的图片格式数据集;②对数据集进行预处理,以适应量化后的VGG模型,主要对数据集进行了缩放和扩充处理;③构建HBF-VGG14-net模型,将恶意软件的灰度图像数据集输入卷积神经网络中,并对卷积神经网络的输入值和权重进行量化运算;④模型训练与优化,根据训练的分类精度调整模型的重要参数,并微调模型的结构;⑤特征分类,选择Softmax分类器,根据数据集纹理相似性对恶意家族进行分类。

2.1 恶意软件可视化

恶意代码转变成灰度图像能够实现家族分类的原因在于,同一家族中的恶意代码普遍存在代码复用的现象,故相同家族的代码一般会有很多相同的二进制代码,表现在图像上就是相似的纹理图案。而恶意代码可视化的过程可以不受恶意代码数量的影响,且实现简单,因此可以用在边缘设备上。

图2为APK文件转为图像的过程图,APK文件反汇编为二进制.bytes文件,先将二进制比特串按照每8位的子串进行划分,然后遍历文件,将分好的文件按无符号向量进行排列,最后将向量转换为二维数组,即表现为灰度图。其中八位子串对应十进制数为0到255,这恰好对应了图像像素点0至255,(0表现为黑色,255表现为白色)。矩阵的宽高根据文件大小进行设定和调整。

图2 二进制转灰度图

2.2 HBF-VGG14-Net模型

本文构建了基于HBF-Net方法的VGG14模型,对恶意代码进行特征提取与分类,HBF-VGG14-Net模型对模型的输入和权重都进行了量化,以此达到在精度近似全精度的前提下,模型的参数量有所减小的目的。HBF-VGG14-Net的模型压缩框架如图3所示。

图3 模型压缩框架

h(x)=max(0,x)

(1)

考虑到ReLU的半波整流性,以及防止在正向阶段出现过拟合现象,因此正向近似ReLU的量化函数Q(x)定义如下

(2)

(3)

2-bit均匀半波高斯量化器则是令m=3,qi+1-qi=△,i=1,2,q2=β则量化后的值只能取0,β-△,β,β+△四个值。由此可求得qi(i=1,2,3)别为0.375874,1.209144,2.042415,ti(i=1,2,3)分别为0.792509,1.625780,∞。

随后采取文献[15]中的BWN网络对权重部分进行量化,同时为了解决由于同时对模型的输入和权重进行了量化操作,最后每层累计而成的误差,造成精度损失较大的问题,采用文献[17]中交替更新的方法对每一层以及整个模型进行微调。

本文使用了VGG16架构,在考虑到数据集的数量,以及灰度图的纹理特征并不复杂的情况,为了降低过拟合的发生,将VGG16的全连接层(Fully Connected,FC)的三层改为一层,并且将节点数由512改为256,用以整合卷积层提取的特征,构建了HBF-VGG14-Net模型。

3 实验过程

本文实验环境中的硬件环境是8核 Intel(R) Xeon(R) CPUE5-2620 V4 2.10GHz处理器,31G内存,GPU为 Ge Force GTX 1080Ti;软件环境是64 位的Ubuntu16.04 LTS,CUDA10.0,Pytorch0.3.1,python3.5。

3.1 数据集预处理

本文实验数据取自2015 年的 Kaggle Microsoft恶意软件分类挑战赛中的数据集,表1展示了该数据集共9个家族的10868个恶意软件样本,每个恶意软件样本分别包含了反汇编.asm文件和二进制.bytes文件。本文随机选取样本.bytes文件的70%作为训练集,其余作为测试集。

表1 BIG2015数据集分类

将二进制文件可视化为灰度图后,为了保证输入到卷积神经网络的数据大小一致,接着利用resize()函数对得到的灰度图进行调整,通过双线性插值法实现缩放处理,将全部灰度图缩放至32*32大小。缩放后的部分图片示例如表2所示。可以观察到两个不同的恶意家族里的图片,纹理具有很大的不同,而同一家族的图片又高度相似。

表2 BIG2015数据集灰度图部分示例

最后对数据集进行扩充处理,通过扩展数据集使其内容更加丰富,从而提高了模型的泛化性。主要包括对数据集实现随机的水平翻转、切割中心点、标准化。其中,标准化需要求出训练数据集的均值为0.302、方差为0.225。

3.2 模型参数优化

将预处理后的数据集导入模型后进行训练。因为模型参数学习率lr、迭代次数epochs以及批次batch size的调整,都会影响最终的准确率。故首先要找出最佳参数,本文通过随机搜索的方式,寻找最优参数。调优过程中,先调整学习率lr,其余参数保持默认值。

如图4所示。lr为0.19时,模型的分类精度最高,此时模型的收敛能力最好。随后保持lr为0.19,其余参数为默认,对迭代次数epochs进行调优,如图5所示。

图4 学习率对分类精度的影响

图5 迭代次数对分类结果的影响

由图5知,当迭代次数为220时,分类精度取得最大值,整体上,分类精度随epochs先增大后减小。当epochs较低时,模型没有足够强得学习能力,而epochs较高时,模型则会出现过拟合导致精度降低。随后保持lr、epochs及其它参数不变,改变batchsize,如图6所示。当batch-size为110时,分类精度达到最高。故模型参数设置为lr=0.1,epochs=220,batch-size=110时,此时模型能达到分类精度96.90%。

图6 批次大小对分类结果的影响

4 实验结果与分析

4.1 准确率

图7展示了本文方法和全精度方法在训练错误率上的变化。整体上来看,随着epochs的增加,错误率逐渐减少,在epochs=220的时候,本文方法接近全精度的错误率。

图7 量化与全精度训练错误率对比

图8展示了本文模型与全精度模型的测试精度,对输入和权重都进行了量化,缩减了运行时间的基础上,本文的测试精度最终稳定在96%附近,与全精度的测试精度相差不到1%。

图8 量化与全精度测试精度对比

图9展示了本文模型在训练和测试上的损失,可以看出,经过220个epochs,训练和测试的损失都在下降并趋于稳定,并且最终的损失值都非常小,低于0.3。本文模型在内存消耗和时间消耗都大大降低的同时,对恶意代码的分类精度基本没有影响。

图9 量化训练损失和测试损失对比

4.2 加速比

本文采用了一个具有加速作用的2-bit均匀半波高斯量化器,能够把浮点型卷积运算转化为简单的位运算和同或运算。由表3知,相对于全精度,本文在恶意代码的训练上实现了30倍的加速。

表3 模型加速对比

4.3 对比实验

本文将训练集与测试集设置为7∶3 的比例,验证不同方法对于实验结果的影响。

图10记录了传统机器学习算法KNN、SVM、RandomForest(随机森林)以及本文HBF-net、全精度VGG分类精度对比。从图10得知,在使用相同数据集的情形下,本文模型的分类效果更好。相比传统的机器学习方法,本文方法在实现了自动提取特征的同时,又提高了特征的表达能力,也因此提高了模型的分类性能。

图10 BIG2015数据集在各算法分类准确性对比

本文进一步统计了各深度学习模型大小以及精确度,考虑到数据集大小问题,以及防止过拟合问题,选取了模型MobileNetV2[18]、ResNet18[19]作为对比实验,实验结果如表4所示。

表4 BIG2015数据集在不同模型上的对比

在表4中,展示了各模型占用内存大小,以及对数据集的分类精度。由表4可知,在输入相同的数据集的情况下,本文模型的分类精度与其它模型精度相近的情况下,模型大小明显减少,本文模型相比全精度,压缩比达到28倍,相比ResNet18,压缩比达到47倍,相比轻量化模型MobileNetV2,压缩比达到10倍。

综合以上实验可知,HBF-VGG14-Net模型在时间消耗和资源消耗都大幅下降的前提下,能够实现自动化提取图片纹理特征,然后进行自动化恶意代码家族分类。

5 结语

本文提出了一种可视化方法结合基于量化VGG14的恶意代码分类方法。该方法通过将二进制文件转换成图像,实现了恶意代码的特征可视化;半波高斯算法和BWN网络相结合,将复杂的乘法运算转化为加法和位运算。实验结果表明,在精度几乎不变的情况下,模型的内存开销大幅降低,并且对模型的训练过程也具有加速作用,因此本文提出的模型可以应用在小内存的边缘设备上。下一步的工作方向为:1)为扩大该方法的应用范围,将考虑收集更多的样本;2)鉴于灰度图的特征不够明显,考虑将二进制文件映射为RGB彩图。

猜你喜欢
二进制灰度可视化
基于CiteSpace的足三里穴研究可视化分析
采用改进导重法的拓扑结构灰度单元过滤技术
基于Power BI的油田注水运行动态分析与可视化展示
用二进制解一道高中数学联赛数论题
基于灰度拉伸的图像水位识别方法研究
基于CGAL和OpenGL的海底地形三维可视化
有趣的进度
二进制在竞赛题中的应用
“融评”:党媒评论的可视化创新
基于最大加权投影求解的彩色图像灰度化对比度保留算法