APP下载

基于CNN的恶意软件分类方法

2021-12-28张豪

计算机时代 2021年12期
关键词:卷积神经网络深度学习

张豪

摘  要: 传统的基于机器学习的恶意软件分类方法需要从恶意软件文件中提取许多特征,这给分类带来了很高的复杂性。针对这一问题,提出了一种基于卷积神经网络(CNN)的恶意软件分类方法。现有的恶意软件样本由大量字节组成,该方法首先计算恶意样本大小并对样本中字节数进行统计。然后将恶意样本大小特征和字节统计特征融合并归一化。最后对基于CNN构建的模型训练并对测试样本进行分类。实验结果表明,对比基线实验中最优的XGBoost算法,该方法不仅训练耗时短而且准确率更高。

关键词: 恶意软件分类; 深度学习; 卷积神经网络

中图分类号:TP391          文献标识码:A     文章编号:1006-8228(2021)12-48-04

Abstract: Traditional malware classification methods based on machine learning need to extract many features from malware files. This brings high complexity to classification. To solve this problem, a malware classification method based on convolutional neural network (CNN) is proposed. The existing malware samples consist of a large number of bytes. This method first calculates the size of the malware samples and counts the number of bytes in the samples; Then fuses the malicious sample size feature and byte statistics feature and makes the normalization; Finally, the model based on CNN is trained to classify the test samples. The experimental results show that compared with the optimal XGBoost algorithm in the base line experiment, this method not only takes less time to train, but also has higher accuracy.

Key words: malware classification; deep learning; convolutional neural network

0 引言

恶意软件是指,其目的是对计算机造成损害的软件,恶意软件会窃取信息、窃取处理器功率和导致系统故障[1]。目前有几种恶意软件检测技术。基于签名的检测是基于在一组已知的恶意签名字节码上匹配字节码[2]。签名方法速度很快,但纯粹是反动的,无法识别新的恶意软件。行为分析在受控环境中执行程序,并观察恶意行为,这是缓慢且有风险的[3]。启发式分析使用文件的特征来确定它是否是恶意软件[4]。启发式分析受到其分类模型有效性的限制。深度学习可以用来创建分类模型,所以使用深度学习来扩展启发式分析,有可能大大提高启发式分析的性能。

深度学习在计算机视觉、自然语言处理等应用领域已经取得了巨大的成功。因此,深度学习技术被用来解决复杂的网络安全问题。Popov等人[5]提出了一种基于Word2Vec和机器学习的恶意软件检测方法。他们把汇编指令序列看成一个文档中的一个句子,把一个单独的汇编指令看成一个词,然后用Word2Vec计算样本集上不同指令的词向量。接下来,他们获取每个样本的前n个指令,将每个指令构建成一个矩阵,最后使用CNN构建一个分类模型。测试结果表明,该方法准确率达到96%。Trung等人[6]提出了一种基于自然语言处理(NLP)和API的恶意软件分类方法。他们首先使用动态分析技术获取恶意软件的API调用序列,然后使用n-gram、Doc2Vec、TFIDF等自然语言处理方法将API调用序列转换成向量。接下来,利用SVM、KNN算法等构建一个分类模型。测试结果准确率在90%-96%之间。Bugra等人[7]提出了一种基于深度学习的恶意软件分类方法,样本矩阵化的过程类似于Popov等人[5]的过程,然后使用GBM(梯度增强机)[8]构建分类模型,达到96%的准确率。

为了解决现有恶意软件分类特征提取和模型训练过于复杂等问题,本文提出了一种基于卷积神经网络(CNN)的恶意软件分类方法。恶意软件样本由大量字节组成,其值范围从0x00到0xFF。因此,每个恶意软件样本都可以被视为由字节写入的文档。本文首先计算每个样本的大小并对每个样本的字节进行统计。其次,将字节统计特征和惡意样本大小特征融合并归一化。接下来,基于CNN构建模型在训练样本上训练。最后,使用训练好的模型对测试样本进行分类。该方法在特征提取阶段不使用专家经验和数据依赖。该方法在降低特征维数的同时避免了过拟合。该方法在微软恶意软件分类挑战数据集(BIG2015)的公共样本集上进行了测试[9]。结果表明,该方法训练耗时短的同时还具有较高的准确率。

1 基于CNN的分类方法

在这一部分中,将说明所提出基于CNN的恶意软件分类的流程,如数据集选取、数据特征提取、分类模型构建。

1.1 数据集选取

微软举办了一场恶意软件分类竞赛,发布了微软恶意软件分类挑战(BIG2015) ,BIG 2015数据集中的每个样本由两个文件组成,一个是去掉PE头的字节文件,另一个是样本汇编代码文件。本文仅使用字节文件,该字节文件由大量的十六进制字节组成。

1.2 数据特征提取

本文对恶意软件字节文件的静态特征提取包括以下两个方面:①字节文件大小;②字节文件中0x00到0xFF的数量统计。

通过对BIG2015数据集的观察,每个恶意软件字节文件的大小均不相同,所以本文先计算每个字节文件的大小(以MB为单位),将其作为静态特征之一,对采用箱线图对其进行可视化。

从图1中可以看到,每个恶意家族的大小均不相同且有较大差异,所以可以将字节文件大小作为恶意软件特征之一。每个字节文件都是由0x00、0x01…0xFF组成,所以我们对其进行数量统计,然后我们将两个特征进行融合,可以得到字节文件特征。为了降低计算复杂度,最后对每个特征进行归一化处理,字节文件部分静态特征如图2所示。

1.3 分类模型

本文基于CNN设计了恶意软件分类模型,该方法在降低特征维数的同时避免了过拟合。

本文恶意软件识别模型如图3所示,每一层的功能描述如下。

输入层:对每个恶意软件的字节文件进行特征提取,转换成[1×258]维的矩阵;

卷积层:采用了两个并行的卷积结构,每个卷积结构都由1维卷积、BN层、ReLU激活函数和一维最大池化组成。通过不同卷积池化的参数,提取多种信息特征。卷积层的输入是[1×258]维,每个卷积结构输出维度是[8×85]。

连接层:将卷积层的输出进行拼接,作为MLP层的输入。连接层的输出维度为[1×1360]。

预测输出层:采用多层感知器(MLP)作为本文模型的预测输出。该MLP由三层结构组成,每层结构如下:全连接层(FC)、激活函数、Dropout层。最后一层的激活函数为softmax激活函数。第一FC层的输出维度是[1×400],第二FC层的输出维度是[1×200],最后FC层的输出维度是[1×9]。

2 实验

2.1 实验数据划分

微软恶意软件分类挑战发布的BIG 2015数据集,其中包含训练和测试集。但是测试集没有给出准确的分类结果,因此无法在测试集上验证。但是训练集有九个恶意软件家族的10868个样本,每个样本信息均唯一,所以本文的实验仅使用BIG 2015标注的训练集。本文执行BIG2015训练集随机抽样来为本文实验生成新的训练集、验证集和测试集。首先,将样本集平均随机分为十个部分,其中一个作为测试集。剩余九个中的一个用作验证集,剩余八个用作训练集。最终训练集、验证集和测试集的比例为8:1:1。经过训练后,使用测试集对分类模型进行测试。

2.2 实验环境

实验硬件环境为:Intel(R) Core(TM) i5-3210M CPU@2.50GHz,RAM 8G,Windows10系统。主要软件和开发工具包为:Python 3.7、PyTorch v1.4.0、scikit-learn 0.22.2。

2.3 基线实验和训练过程

在学术领域,已经有一些将恶意软件转换成灰度图像的研究工作。然后采用深度学习方法对灰度图像进行分类。这些方法取得了良好的效果。Kim等人[10]提出了一种方法,通过深度学习分析图像检测恶意软件。他们在微软恶意软件分类挑战的训练集上进行了实验,最高准确率为91.76%。Rahul等人[11]也将恶意软件字节文件转换为灰度图像,同样在BIG 2015数据集上进行了测试,平均准确率达到94.91%。

本文将字节统计特征和恶意样本大小特征融合并归一化。归一化后的特征用于训练模型。所提出的模型与其他机器学习算法(如KNN和XGBoost等)在本文提取的特征下训练,再进行比较。此外,本文算法还与现有取得良好效果的算法进行了对比。

我们为本文模型训练选择的优化方法是Adam自适应学习率算法。损失函数使用交叉熵损失函数。训练初始学习率设置为0.0001,训练轮数为50次。每轮单批次大小设置为128。对于所有的实验,我们选择在验证集上工作最好的模型,然后在测试集上对其进行评估。

2.4 实验结果与分析

2.4.1 实验结果

本文实验使用的性能指標为训练耗时以及测试集上的准确率(%)。实验结果如表1所列。

2.4.2 实验结果分析

从表1的结果数据可以明显的看出:

⑴ 与所有的机器学习算法中最优的XGBoost算法相比,本文模型的训练耗时仅为其1/3,但是本文模型的准确率达到了98.39%,相比XGBoost算法提高了0.91%,由此可得出,与XGBoost算法相比本文模型不仅训练耗时短而且准确率更高。

⑵ 本文算法与现有的其他深度学习三种算法相比,本文的算法准确率最高。该实验结果表明,传统的恶意软件灰度图可视化方法由于填充、截断等操作,不能完全表示所有特征,容易造成误报,而本文通过对字节文件的特征提取方法不仅复杂度低且具有较高准确率。

3 结论

随着当前恶意软件分类方法中使用的特征类型的不断增加,特征提取的难度也在增加。因此,分类的复杂性变得越来越高。本文提出了一种基于字节文件静态特征和CNN的恶意软件分类方法。本文首先计算每个恶意样本的大小并对每个样本中的字节进行统计。其次,我们将字节统计特征和恶意样本大小特征融合并归一化。最后我们使用基于CNN构建的模型训练并对测试样本进行分类。实验结果表明,基于字节特征和CNN的分类方法不仅训练耗时短且准确率达到了98.39%。基于该方法,可以对新的恶意软件样本进行分类。这将大大提高恶意软件分析的效率。

参考文献(References):

[1] Snow E, Alam M, Glandon A, et al. End-to-end Multimodel Deep Learning for Malware Classification[C]//2020 International Joint Conference on Neural Networks (IJCNN). IEEE,2020:1-7

[2] Santos I, Penya Y K, Devesa J, et al. N-grams-based File Signatures for Malware Detection[J].ICEIS (2),2009.9:317-320

[3] Firdausi I, Erwin A, Nugroho A S. Analysis of machine learning techniques used in behavior-based malware detection[C]//2010 second international conference on advances in computing,control, and telecommunication technologies. IEEE,2010:201-203

[4] Bazrafshan Z, Hashemi H, Fard S M H, et al. A survey on heuristic malware detection techniques[C]//The 5th Conference on Information and Knowledge Technology. IEEE,2013:113-120

[5] Popov I. Malware detection using machine learning based on word2vec embeddings of machine code instructions[C]//2017 Siberian symposium on data science and engineering (SSDSE). IEEE,2017:1-4

[6] Tran T K, Sato H. NLP-based approaches for malware classification from API sequences[C]//2017 21st Asia Pacific Symposium on Intelligent and Evolutionary Systems (IES). IEEE,2017:101-105

[7] Cakir B, Dogdu E. Malware classification using deep learning methods[C]//Proceedings of the ACMSE 2018 Conference,2018:1-5

[8] Friedman J H. Greedy function approximation: a gradient boosting machine[J].Annals of statistics,2001:1189-1232

[9] Ronen R, Radu M, Feuerstein C, et al. Microsoft malware classification challenge[J].arXiv preprint arXiv:1802.10135,2018.

[10] Kim H J. Image-based malware classification using convolutional neural network[M] //Advances in computer science and ubiquitous computing. Springer, Singapore,2017:1352-1357

[11] Rahul R K, Anjali T, Menon V K, et al. Deep learning for network flow analysis and malware classification[C]//International Symposium on Security in Computing and Communication. Springer, Singapore,2017:226-235

[12] Roseline S A, Geetha S, Kadry S, et al. Intelligent Vision-Based Malware Detection and Classification Using Deep Random Forest Paradigm[J].IEEE Access,2020.8:206303-206324

猜你喜欢

卷积神经网络深度学习
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
有体验的学习才是有意义的学习
电子商务中基于深度学习的虚假交易识别研究
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
基于卷积神经网络的树叶识别的算法的研究