基于改进深度森林的抗恶意代码攻击算法仿真
2022-03-01王冬秀
李 辉,王 欢,王冬秀
(广西科技大学计算机科学与通信工程学院,广西 柳州 545006)
1 引言
当前,网络技术的普遍发展下恶意代码类别与数量显著提升,对网络环境稳定与网络用户安全产生严重威胁[1]。相关数据显示[2],与2010年相比,2017年恶意代码语料库内恶意代码总数提升7倍以上,而2018年,有64%的受访组织曾受到恶意代码攻击。由此可知,恶意代码对于网络稳定与用户安全的威胁呈显著上升趋势[3,4]。因此研究一种高效的抗恶意代码攻击算法具有重要意义。
当前普遍使用的抗恶意代码攻击算法普遍以安全网络为基础进行全面防御,常见算法有基于遗传算法的抗恶意代码攻击的算法和基于栈式自编码的抗恶意代码攻击算法[5,6],但是这两种传统算法未考虑恶意代码的攻击类型与攻击能力,抗攻击能力较差。由于恶意代码的分类精度较差,常因恶意代码类别划分错误导致抗攻击失败。由此可知,准确划分恶意代码类型是提升抗恶意代码攻击成功率的基础。
因此,研究基于改进深度森林的抗恶意代码攻击算法,利用改进深度森林划分恶意代码类别,并通过仿真验证所提方法的应用效果。
2 基于改进深度森林的抗恶意代码攻击算法
2.1 恶意代码转换
将恶意代码二进制文件转换成图像形式,能够获取图像形式的恶意代码特征。针对恶意代码二进制文件,采集8位二进制数,将所采集结果转换为十进制整型,同时重构转换结果使其成为行宽为定值的向量,由此生成一个宽度与高度依照恶意代码文件尺寸变化而变化的二维数组,其可通过灰度图像形式描述,以PNG格式存储恶意代码转换后获取的灰度图像。
2.2 图像缩放处理
以最大限度存留恶意代码灰度图像(以下简称为灰度图像)特征,提升缩放处理后的灰度图像质量为目的,针对全部恶意代码转换成的灰度图像,选取双三次插值法对其实施缩放处理,将其尺寸转换为定值,以此确保可获取灰度图像的整体特征,且所采集的方向梯度直方图特征向量维数一致[6]。所选取的插值法通过插值基函数拟合数据,对灰度图像待插值点附近紧密相邻的4个点与周边12个点的灰度值实施三次插值计算,基函数表达式如下
Q(x)=
(1)
式中,a为插值系数,x为基函数的横向像素点。
式(2)描述双三次插值表达式
(2)
式(2)内,(x,y)和(xi,yj)(i,j=0,1,2,3)分别表示灰度图像待插值像素点和次像素点4×4邻域点。
2.3 方向梯度直方图特征采集
主要应用于描述物体检测特征的方向梯度直方图特征,由灰度图像像素级别构建图像梯度,划分图像令其成为若干个细胞单元,确定各细胞单元的梯度直方图。基于若干个细胞单元生成块,确定各块的方向梯度直方图特征后,以此为基础构建灰度图像的方向梯度直方图特征,通过上述过程可精准地获取灰度图像内包含的信息[7]。同时,上述过程中,仅考虑不同像素点的梯度大小与方向,忽略像素点间的位置相关性,由此能够有效缓解恶意代码二进制文件二次划分问题。方向梯度直方图特征采集具体过程如下。
过程1:灰度图像规范处理
以增强灰度图像对比度,降低灰度图像内噪声含量为目的,采用Gamma校正法对其实施色彩空间规范性处理,式(3)所示为Gamma校正法的公式描述
D(x,y)=D(x,y)Gamma·f(x,y)
(3)
式(3)内,D(x,y)和D(x,y)Gamma分别表示待特征采集的灰度图像和Gamma校正后的灰度图像。
过程2:灰度图像梯度运算
以横坐标和纵坐标两个方向确定灰度图像梯度,以此为基础确定灰度图像内各像素的梯度幅值与方向,利用式(4)和式(5)计算像素点梯度
Tx(x,y)=U(x+1,y)-U(x-1,y)
(4)
Ty(x,y)=U(x,y+1)-U(x,y-1)
(5)
式中,Tx(x,y)表示灰度图像内像素点(x,y)的水平方向梯度;Tx(x,y)表示(x,y)的垂直方向梯度;U(·)表示(x,y)的坐标。针对灰度图像x方向和y方向分别以[-1,0,1]和[-1,0,1]T为梯度算子实施卷积运算,由此获取灰度图像x方向和y方向的梯度分量,即Tx(x,y)和Tx(x,y)。在此基础上,利用式(6)确定灰度图像的梯度幅值
(6)
利用式(7)确定灰度图像的梯度方向
(7)
过程3:梯度方向直方图构建
将灰度图像划分为若干个细胞单元,各细胞单元内分别含有n×n个像素。通过bin个方向的直方图确定不同细胞单元的梯度信息,利用梯度方向将细胞单元内各像素梯度幅值映射至直方图内,由此构建各细胞单元的恶意代码特征描述符。
过程4:块内归一化梯度直方图
将具有空间连通性的数个细胞单元结合在一起,以块表示,依照相应方式构建单一块中全部细胞单元特征的相关性[8],以此获取此块的方向梯度直方图特征,归一化处理全部块的方向梯度直方图特征向量H′计算公式如下
(8)
过程5:方向梯度直方图特征采集
采集灰度图像neural全部块的H′,由此获取灰度图像整体特征向量,以f={H′1,H′2,…,H′n,}表示。
2.4 改进深度森林算法
2.4.1 深度森林算法
深度森林算法的本质为树的集成方法,由多粒度扫描与级联森林组成[9]。
多粒度扫描结果W如下
W=〈FN,k,r,l〉
(9)
式(9)内,F和N分别表示初始特征输入和特征维度,k、r和l分别表示扫描窗口维度、步长和窗口数量。由此将获取的特征数φ转换为φ(N-1)/s+1。
上述过程描述的多粒度扫描与卷积神经网络的多粒度卷积核雷同[10],通过选取不同的k值,实现有效的多粒度采样,得到大量的特征子样本。
级联森林CF公式描述如下
CF={j,E,t,c}
(10)
式(10)内,j和E分别表示级联森林的级数和由t棵决策树构建的随机森林,t和c表示不同样本的类别标签。
训练过程中,级联森林的各级均形成对样本f的类分布向量P(t,m)(f),公式描述如下
(11)
(12)
(13)
将级联森林内各级输出结果同初始特征向量有机结合,所得结果为下一级森林输入,公式描述如下
f←(f,V1(f),V2(f),…,Vc(f))
(14)
依照此标准进行推算,至精度温度未知,训练过程结束。
2.4.2 深度森林算法改进
基于深度森林的抗恶意代码攻击算法中,级联森林的结果为各类攻击代码的概率,各森林内属于不同类别恶意代码的概率总值为1,也就是级联森林生成的类向量之间具有线性相关性[11]。所以将其获取的类向量集合初始特征向量作为下一级森林输入将产生特征向量冗余的问题,由此造成算法运算困难,收敛速度下降。
为解决上述问题,需改进深度森林算法。级联结构内各层均有两个随机森林和两个完全随机森林,各森林均可获取相应类向量,用于表示判断为不同类别恶意代码的概率。改进深度森林算法内,针对两个完全随机森林获取的不同类别恶意代码概率取均值[12],构建二维增强特征向量;对两个随机森林实施相同操作,由此在各级内构建一个四维增强特征向量,结合输入特征向量共同作为下一级输入。依照此标准推进至训练结束。通常上述过程改进深度森林算法后,能够有效改善特征向量冗余问题,且能够将各级内原八维增强特征向量降至四维,不仅提升运算过程简便度,且提升恶意代码类别划分精度。
通过改进深度森林算法确定恶意代码类别后,可有针对性地选取不同的抗恶意代码攻击方式,以此提升抗恶意代码攻击的效果。
3 仿真分析
为验证本文所研究的基于改进深度森林的抗恶意代码攻击算法在实际抗恶意代码攻击过程中的应用效果,进行仿真。
3.1 仿真设置
选取Microsoft在Kaggle项目中采集的恶意代码数据作为仿真数据集,其中包含6种不同类别共9562条恶意代码,全部恶意代码均以二进制文件形式存在。表1所示为仿真数据集基本信息。
表1 仿真数据集基本信息
将仿真数据集内的恶意代码数据划分为两部分,分别为训练集(占仿真数据集内80%数据)和测试集(占仿真数据集内20%数据)。
本文算法中改进深度森林算法使用主要采用超参数设置,表2所示为改进深度森林超参数设置情况。
表2 改进深度森林超参数设置
3.2 分类精度仿真结果
恶意代码类别划分是本文算法的基础,因此在分类精度仿真过程中,分别从本文算法恶意代码分类仿真、传统深度森林和改进深度森林分类仿真以及不同算法恶意代码分类仿真三方面出发,充分验证本文算法恶意代码分类性能。
3.2.1 本文算法分类结果
在仿真数据集测试集内随机选取10个恶意代码,采用本文算法划分所选恶意代码类别,仿真结果如表3所示。
表3 恶意代码类别划分仿真结果
由表3可知,采用本文算法能够准确划分恶意代码所述类别。
3.2.2 ROC曲线测试结果
以假阳性率和真阳性率分别为横坐标和纵坐标绘制的ROC曲线能够整体描述精度指标,ROC曲线下的面积可通过AUC值表示,其值同改进深度森林分类性能之间呈现正比例相关,也就是其值越小,改进深度森林分类性能越差。图1所示为深度森林与改进深度森林算法针对仿真数据集内训练集恶意代码实施分类的ROC曲线和AUC值。
图1 ROC曲线与AUC值
分析图1得到,采用改进深度森林算法获取的ROC曲线更倾向于坐标系的左上角,AUC值为0.97,而采用深度森林算法获取的AUC值为0.96。由此能够说明本文算法中改进深度森林算法与传统深度森林算法相比具有更好的性能,能够提升恶意代码分类的精度。
3.2.3 不同算法分类精度仿真结果
为进一步验证本文算法对于恶意代码分类的精度,选取精度值与F1值为对比指标,以文献[5]提出的基于遗传算法的抗恶意代码攻击的算法和文献[6]提出的基于栈式自编码的抗恶意代码攻击算法为对比算法,对比不同算法对仿真数据集内测试集内恶意代码分类的精度与F1值,结果如表4所示。
表4 不同算法恶意代码分类仿真结果
分析表4得到,采用三种不同算法对仿真数据集内测试恶意代码进行分类时,相较于两种对比算法本文算法对恶意代码类型划分具有更高的性能优势,精度值与F1值分别达到97.1%和96.3。仿真结果说明本文算法可准确划分恶意代码类别。
3.3 抗恶意代码攻击成功率测试
采用本文算法和两种对比算法实施抗恶意代码攻击仿真,对比不同算法针对不同类型恶意代码的抗攻击能力,结果如图2所示。
图2 不同类型恶意代码抗攻击能力仿真结果
分析图2得到,采用本文算法实施抗恶意代码攻击,针对不同恶意代码类型,抗攻击成功率均高于70%;对比之下两种对比算法的抗攻击成功率呈现不同比例的下降趋势。其中基于栈式自编码的抗恶意代码攻击算法针对c类恶意代码的抗攻击成功率不足30%,说明该算法无法有效识别此类型恶意代码,因此无法有针对性抵抗该类型恶意代码攻击。仿真结果显示本文算法能够有效提升抗恶意代码攻击成功率,可有效保障互联网运行的稳定性与用户安全性。
4 结论
本文提出基于改进深度森林的抗恶意代码攻击算法。通过提取恶意代码特征划分恶意代码类别,针对不同恶意代码类别有针对性选取不同抗恶意代码攻击手段。仿真结果显示本文算法能够准确划分恶意代码类别,提升抗恶意代码攻击成功率。