APP下载

基于卷积神经网络的恶意代码API分类

2023-05-30梅振辉方欢

赤峰学院学报·自然科学版 2023年2期
关键词:卷积神经网络

梅振辉 方欢

摘 要:恶意代码已经成为威胁网络安全的重要因素之一,安全人员一直致力于研究如何有效检测恶意代码,在动态分析方法中可以通过程序的API调用序列进行分析。通过对恶意软件的API调用序列进行编码处理,可以获得图片格式的数据,进而使用卷积神经网络训练出分类模型,从而实现对恶意软件进行分类,获得较高的准确率,针对阿里云天池上的数据集进行实验验证,实验使用有向图编码方式,采用不同的卷积神经网络架构,对比不同方法的准确性。

关键词:卷积神经网络;恶意代码分类;API调用序列

中图分类号:TP309  文献标识码:A  文章编号:1673-260X(2023)02-0039-05

1 引言

恶意软件是當今互联网面临的主要安全威胁之一,准确地检测出恶意软件,并且把恶意软件进行准确分类对于防范网络攻击很重要。恶意软件检测技术主要分为静态分析技术和动态分析技术[1],静态分析技术主要通过语法、语义和控制流来判断是否为恶意代码,动态分析技术是通过实际执行代码,观察程序的执行是否有危害计算机操作的行为来判断是否是恶意程序。恶意代码会有一系列的对抗技术来阻止安全人员对其检测分析,其中包括加壳、代码混淆技术和反虚拟技术。静态分析技术容易受到对抗技术影响,在动态分析技术中可以通过可执行程序的API(Application Programming Interface)序列进行分析,恶意代码在执行某些恶意行为时,要通过调用一系列的API来完成,不同的恶意行为需要调用不同的API序列,因此正常软件和恶意软件所执行的API序列特征有很大差异,不同类型的恶意软件执行的API序列特征也有差异。同类恶意家族类型的软件,产生的API序列具有相似的行为,所以将API序列可视化为图像之后也具有相同的纹理、结构等特征。此时,针对恶意软件分类的问题,可以转换为图像分类问题,可以使用机器学习算法和深度学习算法的分类器进行分类。本文使用有向图将API序列进行编码为图像格式的数据,然后使用了四种经典的卷积神经网络进行训练分类,准确地分析程序是否为恶意软件以及恶意程序的类型。

本文结构如下,第二节介绍了相关工作,第三节介绍了我们的研究方法,在第四节中介绍了本文的实验和结果分析,最后一节进行了总结和展望。

2 相关工作

对恶意软件的检测,有些研究者研究把恶意的可执行程序转化为图像格式的数据,然后使用深度学习和群体智能算法对恶意软件进行分类[2]。本文主要研究如何通过使用可执行软件的API序列来对恶意软件进行分类。

对于通过使用API调用序列来判断恶意软件的类型的工作有很多,主要的思想就提取每种恶意软件类型中的数据信息,对提取的数据信息采用不同的编码方式进行编码,然后使用机器学习或者深度学习建立分类器,从而实现对恶意代码进行分类。Xu等人最早提出了在windows平台上为已知病毒和可疑代码构建API调用序列[3],通过序列对比进行相似性测量,判断程序是否为恶意代码。不同于传统的基于序列挖掘和图匹配检测恶意代码,为了对抗恶意样本的反检测行为,赵翠镕等人设计提出了一种基于程序语义API依赖图的动态分析方法[4],使用随机森林进行分类。不同于其他文献只使用API调用序列特征进行学习,韩兰胜等人提出使用可执行程序运行时API函数调用名、API函数的输入参数以及两种特征的组合作为特征[5],利用信息增益选取关键特征,最后使用决策树进行分类,效果要高于仅使用函数名作为特征的方法。Acarman等人使用了n-gram提取特征作为向量[6],用以发现代表恶意软件行为的特征,然后使用机器学习分类器训练建立恶意软件分类模型。Ki等人提出通过使用提取的API调用序列模式和关键API调用序列[7],利用了DNA序列比对算法,可以精确地检测未知恶意软件或恶意软件变体。Schofield等人通过提取API调用序列的TF-IDF向量和分类向量[8],使用一维卷积神经网络进行训练分类。Sun等人提出使用Word2Vec模型训练语言模型对提取序列中的名称进行向量化[9],使用时间卷积网络(TCN)训练分类模型。

文献中提出的方法都使用阿里云天池中的恶意代码数据集进行验证。Chai等人采用了一种LGMal[10]恶意软件检测框架结合了堆叠卷积神经网络和图卷积网络,使用堆叠卷积神经网络学习API调用序列中的局部语义特征,使用图卷积网络用于学习API调用语义图结构信息以捕获全局语义特征。Xu等人提出一种基于卷积神经网络(CNN)和长短期记忆(LSTM)网络的混合深度学习结构[11],将API的调用顺序与其他统计特征相结合,得到的向量信息通过卷积输入LSTM单元进行训练。Zhang等人提出了一种基于谱的有向图网络(SDGNet)架构[12]来对有向图进行分类。王天歌使用了两种方法[13]训练分类模型,一种使用n-gram算法对API序列进行特征提取,然后用随机森林进行训练模型,另一种使用词向量的方法对API序列进行向量化表示提取特征,最后用卷积神经网络学习进行训练[14]。

现有的恶意软件API分类的文献中的编码方式主要提取不同API名称的数量信息,或者使用n-gram和词向量提取特征,其中使用数量的编码方式,并不能包含序列中的行为信息,使用n-gram和词向量的方式也只能够包含恶意执行序列的部分行为信息。针对以上的问题,本文提出了使用有向图编码的方式,对API执行的序列编码为图像格式,使用经典的卷积神经网络进行训练,可以充分利用卷积神经网络提取API执行序列中的行为信息,从而对不同种类的恶意软件进行分类。

3 研究方法

卷积神经网络(Convolutional Neural Network)是目前基于深度学习的计算机视觉领域中重要的研究方向之一,因为其具有强大的特征学习与特征表达能力,被广泛应用于图像分类和分割、目标检测等的应用中。卷积神经网络最初被LeCun提出用于手写字识别,CNN有多层结构组成:包括卷积层、非线性层、池化层和全连接层。卷积层和全连接层有参数,池化层和非线性层没有参数。

LeNet[15]是Yan LeCun在1998年引入的用于手写数字识别的网络。他的网络模型共有7层,包含了三个卷积层、两个池化层、一个输入层、输出层,其网络如下图1所示。

AlexNet[16]是由Hinton研究组于2012年提出的一种模型。其主要贡献在于:(1)采用ReLU作为非线性激活函数,缓解了梯度消失问题;(2)使用Dropout方法用于防止过拟合;(3)通过参数优化策略增强CNN的学习能力;(4)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力处理神经网络训练时大量的矩阵运算。ResNet[17]由何凯明等人在2015年提出,解决了一般网络模型增加卷积层数,造成误差率上升的问题。MobileNet[18]由Google团队在2017年提出,核心思想是使用深度可分离卷积代替标准的卷积操作,它是一个轻量级的深度神经网络,计算复杂度也较低,适合移动和嵌入式应用。

在本文中,我们将使用以上四种结构的卷积神经网络,对经过有向图编码后的恶意代码数据进行分类,本文的实验框架如下图2所示。

4 实验和结果分析

4.1 数据集描述

本次试验使用阿里云天池大数据平台上的公开数据集[14],数据集提供的数据来自windows可执行程序经过沙箱程序模拟运行后的API指令序列,数据经过脱敏处理,样本数据收集于互联网,其中恶意文件的类型有勒索病毒、感染型病毒、木马程序、挖矿程序、DDOS木马等。天池平台提供了训练集和测试集样本,其中训练集共有13887个数据样本,具体每种样本信息如表1所示。其中因为测试样本没有提供标签,所以在本次试验中,我们只使用13877个数据样本,把这些样本划分训练集和测试集,我们采用了5折交叉验证,验证对比了不同CNN网络架构训练的两种编码方法的准确率。

4.2 数据预处理

首先我们对Windows API具有相同含义但是函数名不同的API进行处理,例如CopyFileW、CopyFileExW和CopyFileA三个函数有相同的含义,但是分别以W、ExW和A结尾,是因为计算机系统对于不同的编码提供的API不同,以W结尾的API主要对UNICODE编码使用,Ex表示拓展的API函数,A结尾主要是针对ASCII编码格式使用。对于这种情况,如果把这三个API都作为一个单独的特征,会使生成的图像数据很稀疏,因此,对于这三个API,我们把它们统一用CopyFile替换,对于其他的也类似处理,这样可以有效地减少特征空间。

本节介绍如何把序列数据转化为图像格式的数据,为了实现这一目标,我们要解决两个问题,第一问题,是如何把API序列转为图像,第二个问题,是每个API序列的长度不固定,如何转化为固定大小的矩阵?第一个问题的解决方法是,通过记录相邻的API名称在序列中出现的次数,构成有向图矩阵,矩阵中的每个数值可以作为一个像素值,同时用图像的形式存储API序列,图的长度由所有不同的API名称的数量决定,所以使用有向图的形式存储为图像可以容纳任意长度的API序列,第二个问题也得以解决。因为数据集中的程序执行的不同线程之间没有顺序关系,所以首先我们将每个文件子线程顺序调用的序列连接在一起,然后连接不同线程之间序列,组成一条API序列,对于这个序列,提取所有序列中所有的API名称组成字母表,通过把序列转为有向图向量,可以获得一个图像格式的数据。提取两种序列特征,一种是提取两个相邻API序列,构成一个有向图组成图像格式数据,另一种是分别从API序列中提取间隔为1、2、3的三个相邻的序列组成3通道的图片格式。

为了便于读者理解,我们以字母表为{A,B,C,D,E}中构成的序列AABDDCDCBD进行说明,他们被编码为类图像格式如下图3和图4所示。本文的数据处理以及模型训练的代码公开在https://github.com/meiief/Malicious-code-classification。

4.3 实验环境

为了更加高效和稳定地进行模型搭建和模型参数的训练,本文采用了基于pytorch的深度学习框架,实验具体的硬件环境和软件环境如表2所示。对每次训练我们设置训练最大迭代次为50轮,并使用早停技术,当连续5次准确度没有提高时,停止训练。对于训练神经网络使用的参数,我们采用随机梯度下降(stochastic gradient descent)优化器优化器,动量为0.5,学习率参数设置为0.001。

4.4 结果分析

对于每种方法的试验结果准确度如下表3所示,为了直观展示,我们绘制了图5。由图可以清楚地发现,在使用3通道的编码方法训练的结果中,四种经典卷积神经网络中三种网络的准确度比1通道的准确度高,这是因为3通道的编码方式提取了更多的行为信息,但是同时也耗费了更多的训练时间和内存资源。

5 總结

本文通过把API序列编码为图像格式的数据,提取了API序列中更多的行为信息,把恶意代码分类问题转化为图像分类问题,采用了四种经典的卷积神经网络架构进行训练模型,并使用真实的数据集进行试验,得到了较好的结果。其中对API序列进行三通道编码的准确度明显高于1通道的编码,这是因为3通道包含的行为特征更多,同时训练的时间也更长,对于未来的研究,我们将计划考虑数据集中的数据特征,如关键每个出现的次数、每个程序的线程数量等,同时使用更有效的编码方式,使得编码后的数据更多包含API序列中的行为,这对提高准确度可能会更有效。

——————————

参考文献:

〔1〕汪嘉来,张超,戚旭衍.Windows平台恶意软件智能检测综述[J].计算机研究与发展,2021,58(05):977-94.

〔2〕JIN X, XING X, ELAHI H, et al. A malware detection approach using malware images and autoencoders; proceedings of the 2020 IEEE 17th International Conference on Mobile Ad Hoc and Sensor Systems (MASS), F, 2020 [C]. IEEE.

〔3〕XU J-Y, SUNG A H, CHAVEZ P, et al. Polymorphic malicious executable scanner by API sequence analysis; proceedings of the Fourth International Conference on Hybrid Intelligent Systems (HIS'04), F, 2004 [C]. IEEE.

〔4〕赵翠镕,方勇,刘亮.基于语义API依赖图的恶意代码检测[J].四川大学学报:自然科学版,2020,57(03):488-94.

〔5〕韩兰胜,高昆仑,赵保华.基于API函数及其参数相结合的恶意软件行为检测[J].计算机应用研究,2013,30(11):3407-10.

〔6〕PEKTAA, ACARMAN T. Malware classification based on API calls and behaviour analysis [J]. IET Information Security, 2018, 12(02): 107-17.

〔7〕KI Y, KIM E, KIM H K. A novel approach to detect malware based on API call sequence analysis [J]. International Journal of Distributed Sensor Networks, 2015, 11(06): 659101.

〔8〕SCHOFIELD M, ALICIOGLU G, BINACO R, et al. Convolutional neural network for malware classification based on API call sequence; proceedings of the Proceedings of the 8th International Conference on Artificial Intelligence and Applications (AIAP 2021), F, 2021 [C].

〔9〕SUN J, LUO X, GAO H, et al. Categorizing malware via a Word2Vec-based temporal convolutional network scheme[J]. Journal of Cloud Computing, 2020, 9(01): 1-14.

〔10〕CHAI Y, QIU J, SU S, et al. LGMal: A joint framework based on local and global features for malware detection; proceedings of the 2020 International Wireless Communications and Mobile Computing (IWCMC), F, 2020 [C]. IEEE.

〔11〕XU A, CHEN L, KUANG X, et al. A hybrid deep learning model for malicious behavior detection; proceedings of the 2020 IEEE 6th Intl Conference on Big Data Security on Cloud (BigDataSecurity), IEEE Intl Conference on High Performance and Smart Computing,(HPSC) and IEEE Intl Conference on Intelligent Data and Security (IDS), F, 2020 [C]. IEEE.

〔12〕ZHANG Z, LI Y, DONG H, et al. Spectral-based directed graph network for malware detection [J]. IEEE Transactions on Network Science and Engineering, 2020, 8(02): 957-70.

〔13〕王天歌.基于API調用序列的Windows平台恶意代码检测方法[D].北京:北京交通大学,2021.

〔14〕CLOUD Alibaba. Alibaba Cloud Malware Detection Based On Behaviors [Z]. 2018.

〔15〕LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278-324.

〔16〕KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks [J]. Advances in neural information processing systems, 2012, 25.

〔17〕HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition; proceedings of the Proceedings of the IEEE conference on computer vision and pattern recognition, F, 2016 [C].

〔18〕HOWARD A G, ZHU M, CHEN B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications [J]. arXiv preprint arXiv:170404861, 2017.

收稿日期:2022-09-22

通讯作者:方欢(1982-),女,安徽池州人,博士,硕士生导师,教授。研究方向:Petri网理论与应用、行为轮廓、变化挖掘、过程挖掘。

基金项目:国家自然科学基金(61902002)

猜你喜欢

卷积神经网络
基于深度神经网络的微表情识别
卷积神经网络中减少训练样本时间方法研究
卷积神经网络语言模型研究
基于卷积神经网络的车辆检索方法研究
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
深度学习技术下的中文微博情感的分析与研究
基于卷积神经网络的树叶识别的算法的研究