基于多特征融合和增强模型的恶意代码检测方法*

2023-08-17 12:38熊其冰王世豪
通信技术 2023年5期
关键词:字节特征图像

熊其冰,郭 洋,王世豪

(河南警察学院,河南 郑州 450000)

0 引言

随着互联网和通信技术的进步,网络应用深度融入人们日常工作和生活的方方面面,极大地促进了信息的高效传输和处理。与此同时,勒索病毒、木马、挖矿病毒、钓鱼邮件等恶意代码造成的网络安全事件频发,引起了人们的广泛关注。2023 年3月,国际知名安全软件测评机构AV-TEST 统计数据显示[1],Windows 平台的恶意代码数量已增长至7.6 亿多,占恶意代码总量的61.3%。2022 年国家互联网应急中心发布的第25 期《网络安全信息与动态周报》数据显示[2],在6 月13 日至19 日一周时间内,境内计算机恶意程序传播次数高达6 342.2万次,境内感染计算机恶意程序的主机数量约为121.6 万。恶意代码规模依然呈现高速增长的态势,严重威胁着网络空间安全。因此,亟须设计能实现恶意代码精准检测和高效分类的方法。

1 相关工作

针对恶意代码的检测与分类,早期研究方法多以特征码匹配技术为主[3],人工分析判定恶意代码的种类,提取共性恶意功能代码片段作为特征,结合规则匹配方法,实现恶意代码的检测与分类。当前,主流的恶意代码检测与识别方法主要包括静态特征分析、动态特征分析、混合特征分析[4]。

1.1 恶意代码特征提取

图像特征、字节熵、文件结构等是恶意代码检测中常用的几种静态特征,可直接从恶意代码文本中提取。Nataraj 等人提出将恶意代码文本图像化的方法[5],用灰度图像表征恶意代码。Guo 等人在此基础上提取恶意代码的图像GIST 特征[6],集成K 最近邻(K-Nearest Neighbor,KNN)算法和随机森林等模型实现恶意代码检测。蒋永康等人提出将汇编指令映射为图像矢量[7],并基于图像矢量实现恶意代码的检测与分类。Al-Khshali 等人提出基于恶意代码文件结构和机器学习算法的检测模型[8],验证了恶意代码文件结构特征的有效性。孙博文等人提出了基于代码图像增强的恶意代码检测方法[9],在灰度图像基础上构建RGB 三维图像,实现检测与分类。Saxe 等人使用信息熵分析恶意代码文本[10],提出利用字节熵直方图检测恶意代码的方法。Gibert 等人将熵特征应用于恶意代码的同源性分析[11],实现了恶意代码的家族分类。

操作码序列OPCODE、控制流图(Control Flow Graph,CFG)等静态特征需要借助IDA Pro、OllyDump 等逆向分析工具,可获取恶意代码样本的程序语义等相关特征。Santos 等人提出基于操作码和密度空间聚类算法实现恶意代码检测的方法[12]。Lee 等人在提取操作码的基础上[13],采用N-Gram算法生成操作码序列,以提取恶意代码语义特征,进而实现检测与分类。

本文主要采用静态特征实现恶意代码的检测与分类,还有一些学者通过虚拟环境来动态模拟执行恶意代码样本,捕获恶意代码实时运行的行为状态作为动态特征,以及利用静态特征和动态特征组合起来的混合特征实现恶意代码的检测与分类[14]。

1.2 恶意代码检测模型

近几年,机器学习算法得到了快速发展,在恶意代码检测与分类中也取得较多成果。Luo 等人利用图像特征[15],结合KNN、支持向量机(Support Vector Machine,SVM)等机器学习方法实现恶意代码的检测和分类。Li 等人对操作码序列进行筛选[16],结合增量学习策略改进SVM 算法的分类效果。唐明东等人将KNN 算法应用于恶意代码的检测与识别[17],胡君萍[18]和黄光华等人[19]从距离计算和权重组合等方面对KNN 算法进行了改进。杨望等人提出了一种基于多特征集成学习的恶意代码静态检测框架[20]。

本文设计了一种基于多特征融合和增强模型的恶意代码检测方法。一是将传统的单特征提取方式改变为多维度提取恶意代码特征,并采用优化算法对特征进行优化处理,增强了特征的区分度;二是将传统的单模型模式改变为聚合增强模型模式,利用贝叶斯优化策略进行多指标的超参数优化,采用投票策略进行增强模型结果的聚合。

2 特征提取及优化

本文选取恶意代码的图像GIST 特征、操作码序列、字节统计值、文件结构4 种静态特征作为恶意样本的特征;并采用主成分分析法、随机森林等算法对上述特征进行优化,删除冗余、无效的特征,筛选出区分度高、信息增益强的特征,以提高恶意代码检测分类性能。

2.1 图像GIST 特征

可视化恶意代码检测方法是静态特征提取的主流方法之一,核心思想是将PE 文件可视化为灰度图像,提取图像的纹理和结构特征,从而实现恶意代码的检测与识别。本文选择将PE 文件可视化为灰度图像,采用GIST 算法进行图像GIST 特征的提取。图像GIST 特征提取流程如图1 所示。

图1 图像GIST 特征提取流程

2.2 操作码序列

操作码序列包含了丰富的代码功能信息,能较好地表达程序的语义,广泛应用于恶意代码的检测与识别任务中。计算机程序执行时,需要将源代码翻译为汇编指令,进而由计算机硬件实现相关功能。汇编指令通常包含操作码和操作数两部分,其中操作码表示指令要执行的功能信息。

本文先将PE文件批量输入反汇编工具IDA Pro,以获取样本的汇编指令信息,包含操作码、操作数,并采用N-gram 算法[21]对汇编指令进行切片,提取PE 文件的OPCODE 序列特征,该特征包含了恶意代码的程序语义信息。操作码序列特征提取流程如图2 所示。

图2 操作码序列提取流程

2.3 PE 文件结构

PE 文件中存储了代码的文件结构属性和执行逻辑等相关内容。本文通过LIEF 工具对恶意代码文件进行解析,从文件属性、文件头信息、导出表、导入表、节区信息等角度进行统计分析,获取恶意代码的文件结构特征。

2.4 字节统计值

Windows 恶意代码的PE 文件在计算机内部存储的也是一连串01 二进制数值。本文利用统计学方法,对PE 文件中的字节进行统计分析,提取了字节统计特征。字节统计特征包含字节统计值和字节熵两部分。字节统计值是统计文件中每8 个二进制位的整数值(0~255)的出现频率。字节熵是统计滑动窗口内的(字节值,熵)对的出现频率,生成字节熵直方图。

2.5 主成分分析法和随机森林

主成分分析法(Principal Components Analysis,PCA)是一种用于机器学习任务中进行数据降维的方法[22],能有效提取数据的主要特征分量。PCA 的主要思想是基于方差最大理论,将方差最大的方向作为主要特征,构造多组正交特征,实现主成分提取,从而实现特征优化和数据降维的效果。数据降维过程:先对原始数据零均值化,计算协方差矩阵,计算对应的特征向量和特征值,计算每个特征值的贡献度,计算特征值的累计贡献度,筛选出主成分。

随机森林(RandomForest,RF)是由多棵决策树构建的森林模型,常用于特征重要性排序。主要思想是基于信息增益、信息增益率、基尼系数、均方差等信息,依据数据误差,计算特征相对重要性,实现特征重要度排序。

2.6 超参数优化

贝叶斯参数优化是一种常用的参数调优策略,本文将其应用于模型的参数优化,以获取最佳参数组合的模型。贝叶斯优化算法通过对目标函数形状进行学习,充分利用先验信息,找到使目标函数向全局最优值提升的参数。

3 算法模型

3.1 模型框架

基于多特征融合和贝叶斯优化策略,本文设计了一种多特征融合和增强模型的恶意代码检测方法,该方法包含特征融合和增强模型两个层次。第1 层为特征融合层,依据特征提取算法分别提取恶意代码的图像GIST、OPCODE 序列、PE 文件结构、字节统计值4 种特征,分别采用PCA、RF 等方法进行特征优化,获取恶意代码的融合特征,用于后续模型的检测分类。第2 层为增强模型层,选择RF、SVM、KNN 等作为学习模型,在训练过程中使用贝叶斯优化策略,对上述3 种模型的参数进行优化,得到最优参数组合的增强模型。采用投票策略实现多模型预测结果的聚合,作为最终预测结果。多特征融合和增强模型检测方法框架如图3所示。

图3 多特征融合和增强模型检测方法框架

3.2 特征融合层

特征融合层的主要功能是实现恶意代码样本的特征提取并优化,融合优化后的特征作为恶意代码的特征。通过GIST算法、IDA反汇编工具、LIEF工具、统计方法等分别提取恶意代码的图像GIST 特征、OPCODE 序列、PE 文件结构、字节统计值4 种特征,经过PCA、RF 等方法进行特征优化降维,以获取恶意代码的高区分度、低维度的组合特征。

3.3 增强模型层

增强模型层的主要功能是利用贝叶斯优化策略对选用的KNN、支持向量机、随机森林等学习模型进行超参数优化。分别依据准确率和精准率两个指标,进行模型的训练优化,可得贝叶斯优化后的最佳参数组合,即为增强模型。将恶意代码的数据特征分别输入上述增强模型中,采用多数票和权重投票等方式进行结果聚合,计算得到最终的预测结果。

对于支持向量机算法,优化的参数主要有:惩罚系数(C)、核函数类型(kernel)、gamma等。对于随机森林算法,优化的参数主要有:弱分类器数量、评估标准、最大深度、最大特征个数等。对于KNN 模型,优化的参数主要有:k值(n_neighbors)、距离度量(distance)、权重组合方式(weights)等。本文还改进了KNN 算法的距离度量方式和权重组合方式,其中:距离度量方式有曼哈顿距离(manhattan)、欧式距离(euclidean);权重组合方式有归一化加权(Normalize)、反比例加权(Reciprocal)、高斯加权(Gauss)。上述3 种权重组合方式的公式为:

式中:weights[i]为当前第i个邻居的权重值;dis[i]为与第i个邻居的距离;dis_max为k个近邻中的最大距离;dis_min表示k个近邻中的最小距离;反比例加权中,const为常量;高斯加权中,sigma为常量。

4 实验结果及分析

4.1 数据集及评价标准

本文的实验选用DataCon 开放数据集中的16 051个样本进行测试[23]。将数据集分别按训练数据与测试数据的比例为5 ∶5 和8 ∶2 两种情况开展模型验证实验。在实验过程中,将训练数据与测试数据的比例为5 ∶5 的称为实验1,将比例为8 ∶2 的称为实验2。本文选取准确率(Accuracy)、精准率(Precision)、召回率(Recall)、F1 值这4 个指标进行模型评价。

4.2 实验设置与结果分析

在特征融合阶段,将提取得到的图像GIST 特征、字节统计值等特征通过PCA 方法进行优化,特征贡献度设定为0.90,即保留能够解释原数据90%以上的方差。将提取得到的PE 文件结构、OPCODE 序列等特征通过RF 优化方法进行特征优化,将特征重要度阈值设定为0.005。本文在选定操作码序列特征时,分别提取了2-gram 和3-gram操作码片段,将两组操作码片段按权重策略组合为变长操作码序列,即操作码序列特征。本文保留了操作码序列特征的前1 000 维数据进行优化。

经特征优化方法,实验1 中数据原特征维度由2 485 降到296,约为原数据维度的11.9%。实验2 中数据原特征维度由2 485 降至323,约为原数据维度的12.9%。两组实验中,图像GIST 特征和OPCODE 序列特征下降幅度最为明显。数据特征优化方法及优化结果数据如表1 所示。PE 文件结构特征重要度排序、操作码序列特征重要度排序分别如图4、图5 所示,图示数据为重要度排序前30 的主要数据特征。

表1 各特征优化方法及结果

图4 PE 文件结构特征重要度排序

图5 操作码序列特征重要度排序

在增强模型阶段,利用贝叶斯优化策略分别对KNN、支持向量机、随机森林等学习模型进行超参数优化。在贝叶斯优化算法执行过程中,本文选取准确率和精准率两个指标进行优化,得到两组优化参数组合,可分别得到KNN、支持向量机和随机森林的两种增强模型。

为了验证本文方法的分类性能,分别在实验1数据和实验2 数据上进行了分析验证。首先,提取恶意代码的GIST 特征、PE 文件结构、OPCODE 序列等特征;其次,利用PCA、RF 等方法进行特征融合,将训练数据输入KNN、支持向量机、随机森林等模型进行训练,训练中结合贝叶斯优化方法进行模型增强;最后将测试数据分别输入增强模型进行结果预测,并采用投票策略聚合预测结果。

本文还选取了未经参数优化的KNN、随机森林、SVM 等模型,以及机器学习中常见的多层感知机(Multilayer Perceptron,MLP)、AdaBoost 等 模型进行对比分析。其中,多层感知机是一种简单的神经网络模型,AdaBoost 算法是采用Boosting 学习策略的集成学习方法,两种模型都经常应用于分类任务。相关实验结果数据分别如表2、表3 所示。

表2 多特征融合和增强模型实验1 结果

表3 多特征融合和增强模型实验2 结果

从表2 和表3 的数据,可以看到本文设计的方法在实验1 和实验2 中,准确率、精准率和F1 值均为最高,验证了多特征融合和增强模型方法的有效性。其中在实验1 数据中,精准率达到了98.98%,准确率达到了97.66%,F1 值达到了96.64%,显示了该方法具有良好的分类效果。

与未经参数优化的学习模型对比,可以看到本文模型在准确率、精准率、召回率和F1 值等4 个指标上,均优于支持向量机和随机森林,在准确率、精准率和F1 值等3 个指标上高于KNN 算法。此外,本文设计的方法的检测性能也优于常见的多层感知机、AdaBoost 等方法。

5 结语

本文提出了一种多特征融合和增强模型的恶意代码检测方法,该方法使用低纬度的数据特征、采用贝叶斯增强模型,经实验测试,检测性能及泛化能力较优。针对机器学习模型在单特征单模型上易出现过拟合问题,从图像GIST、PE 文件结构、字节统计、操作码序列等多个层面进行特征提取,采用PCA、RF 等方法进行特征优化,使用贝叶斯优化策略增强SVM、KNN、随机森林等学习模型,对各增强模型的预测结果采用投票策略进行聚合,增强了本文模型的泛化能力。由于当前恶意代码及对抗技术的加速发展,后续的工作中将在操作码序列的规范化和优化处理上进一步改进和完善,并结合深度学习模型,如循环神经网络、卷积神经网络等,改进结果聚合策略,进一步提高模型的检测性能。

猜你喜欢
字节特征图像
改进的LapSRN遥感图像超分辨重建
No.8 字节跳动将推出独立出口电商APP
有趣的图像诗
如何表达“特征”
No.10 “字节跳动手机”要来了?
不忠诚的四个特征
抓住特征巧观察
简谈MC7字节码
线性代数的应用特征
遥感图像几何纠正中GCP选取