摘 要:针对传统静态分析方法很难捕捉到恶意软件复杂多变的动态行为问题,实验基于动态特征分析技术,通过研究八种常见恶意软件的WindowsAPI调用序列,发现了API调用序列的前后顺序和调用频率会直接反映恶意软件的恶意行为,实验使用TF-IDF技术将API调用序列向量化,设计基于CNN-BiLSTM双流融合网络的深度学习模型对这种API调用的前后依赖关系进行建模,实现对常见恶意软件的动态检测。实验结果表明,该模型的测试准确率达到了95.99%,优于RF、SVM、LSTM、BiLSTM和CNN-LSTM模型,为恶意软件的检测提供了借鉴参考。
关键词:API调用序列;动态检测;深度学习;特征表示
中图分类号:TP311.5;TP309 文献标识码:A 文章编号:2096-4706(2024)08-0177-06
DOI:10.19850/j.cnki.2096-4706.2024.08.038
0 引 言
随着互联网和计算机设备的普及,网络安全越来越受到人们的重视和关注。根据国家互联网应急中心发布的网络安全报告[1],2021年上半年我国境内感染计算机恶意程序的主机数量约446万台,同比增长46.8%,位于境外的约4.9万台计算机恶意程序控制服务器控制我国境内约410万台主机,给国家、社会及个人带来了巨大的财产损失。因此,如何快速准确地检测和识别恶意软件成为网络安全领域的一个关键任务。
目前,静态检测和动态检测是进行恶意软件特征分析的两种主流方法[2]。静态检测是指通过对恶意软件代码进行静态分析,即在不运行程序的情况下从代码层面提取静态特征进行恶意软件的识别和检测。动态检测是指通过运行恶意软件实时监测程序的运行状态和行为,再通过提取动态特征来检测恶意软件的恶意行为。
近年来,基于动态行为分析的恶意软件识别逐渐成为发展趋势,其主要思想是通过监测和分析恶意软件在运行时所调用的系统API接口,提取相应的动态特征并利用机器学习和深度学习算法对恶意软件进行分类和检测。相比于传统基于签名匹配和启发式规则的检测方法,该技术具有不依赖于病毒库、可检测未知攻击、难以被绕过等优势,可以有效提高恶意软件检测的准确率[3]。
针对上述问题,本文通过使用在沙箱中运行软件提取出的WindowsAPI调用序列,将API调用序列用TF-IDF(Term Frequency–Inverse Document Frequency)词向量表示模型转化为高维向量,最后使用CNN-BiLSTM双流融合网络结构进行词向量训练,从而实现识别恶意软件的目的。本文的核心内容如下:
1)根据恶意软件在API调用序列的前后顺序和调用频率中存在的特定依赖关系,提出一种使用双流融合网络模型(CNN-BiLSTM)对恶意软件进行分类的方法,将恶意软件检测建模为文本分类问题,通过实验验证了模型的准确性。
2)通过实验对比了基于API调用频率和TF-IDF词向量这两种表征方法的分类性能,实验结果表明采用TF-IDF词向量的API序列表征方法具有更好的分类性能。
1 相关工作
现如今,基于机器学习与深度学习的恶意软件检测逐渐成为主流方法。其主要过程如图1所示,首先对恶意软件和良性软件进行静态或动态分析,然后选择合适的表征方法将特征向量化,通过训练分类模型检测恶意软件。
1.1 静态检测
对于通过静态特征分析检测恶意软件而言,大多数的研究是从可执行文件中提取出恶意软件的静态特征,例如API调用序列、操作码序列和字节序列。Ye等人[4]开发了基于可解释性字符串的恶意软件检测系统,可解释的字符串包含应用API调用序列和反映攻击者意图和目标的重要语义字符串,可通过使用集成学习Bagging对文件样本进行分类并预测恶意软件的确切类型。Ding等人[5]将恶意软件表示为操作码序列并使用DBN模型进行检测,与其他常用分类算法SVM、KNN、DT相比,DBN的性能最好。Ding等人[6]提出一种用于提取可执行文件中操作码行为特征的基于控制流的方法,通过该方法提取的行为能够完整地表征可执行文件的行为特征,实验结果表明,所提出的基于控制流的方法具有更高的准确率和更低的误报率。Raff等人[7]使用恶意软件完整的字节序列作为特征,通过词嵌入技术将字节序列表示为固定长度的向量作为卷积神经网络的输入来进行恶意软件的检测。Saxe等人[8]使用PE文件信息、可阅读字符串和字节序列作为特征,并使用卷积神经网络进行恶意软件分类。Santos等人[9]将操作序列码出现的频率用作特征来对恶意软件进行检测和分类。Kumar等人[10]使用PE文件头中各个字段的原始值和派生值作为集成特征建立一个基于特征的集成模型,实验表明使用集成特征集的模型分类性能明显优于使用原始特征集的模型分类性能。Jeon等人[11]使用从二进制文件中提取的操作码序列作为特征,通过构建卷积神经网络来进行恶意软件的识别与检测,实验表明该模型的检测精度达到了96%。
随着恶意软件技术的不断改进,恶意软件开发者通过使用各种技术来混淆和加密其代码,以此逃避静态检测,所以说静态检测方法在恶意软件检测上存在一定的局限性。
1.2 动态检测
对于通过动态特征分析检测恶意软件而言,很多研究是将恶意软件放在沙箱中运行的,基于沙箱动态来分析恶意软件的行为特征。Huang等人[12]提出一种新的多任务前馈神经网络,使用API调用序列作为特征用于恶意软件的分类任务,该系统接受了450万个文件的训练,并在200万个文件的保留测试集上进行了测试,实现了0.358%的错误率。Qiao等人[13]使用Cuckoo沙箱来捕获恶意软件在Windows系统中的API调用序列,引入了基于API调用序列频繁项集的恶意软件二进制文件聚类方法。在大型恶意软件数据集上的实验表明,仅使用API调用序列的频繁项集就可以在显著减少计算时间的同时达到较高的恶意软件聚类精度。Tian等人[14]使用一个在虚拟环境中运行的自动化工具从可执行文件中提取API调用序列,然后应用模式识别算法和统计方法对恶意软件进行分类,在由1 368个恶意软件和456个良性软件构成的数据集上进行实验,分类准确率超过97%。Liu等人[15]使用从cuckoo沙箱中提取出的恶意软件API调用序列作为特征,并构建BiLSTM模型进行恶意软件分类,实现了97.85%的准确率。Catak等人[16]通过在隔离的沙箱环境中运行分析恶意软件并记录API调用序列,使用文本分类中常用的LSTM算法将恶意软件建模为文本分类问题,模型的检测准确率高达95%。Li等人[17]使用API调用序列构建基于马尔科夫链的有序循环图,然后使用图卷积神经网络来检测恶意软件,实验表明,该方法在大多数检测中具有较好的性能,准确率高达98.32%。
可以看出,与静态检测相比,动态检测方法是直接提取恶意软件行为特征进行分析,不存在代码混淆和加密的问题,更有利于辨别恶意软件的恶意行为。
2 基于动态行为的恶意软件检测
在恶意软件的恶意性识别中深度学习技术表现出良好的效果。基于已有文本分类模型的参考,本实验通过分析恶意软件在沙箱中运行时产生的API调用序列,发现了API调用序列的前后顺序和调用频率会直接反映恶意软件的恶意行为,因此基于CNN-BiLSTM双流融合网络模型对API调用序列的这种前后依赖关系进行建模,此模型既可以考虑到API调用概率的局部依赖关系,又可以考虑到API调用概率的长期依赖关系,通过分析恶意软件的API调用行为来进行恶意软件的识别。经过对数据集的统计,所有软件共使用298种系统API调用函数,如图2所示,实验采用TF-IDF算法将API调用序列映射为一个固定长度的向量,首先计算出原始API调用序列的字典,然后根据字典计算出每条API调用序列的词频向量,再根据词频向量计算出相应位置的TF-IDF值,这样就得到了最终的TF-IDF向量。
如图3所示为实验的具体流程,API调用序列在经过TF-IDF向量化后会形成一个298维的向量作为卷积层的输入,首先经过卷积层对API调用序列的局部依赖关系进行提取,然后再经过双向长短期记忆网络层对API调用序列的长期依赖关系进行提取,最后经过全连接层的映射形成最终的预测结果。此外,还选择了五种模型作为对比模型,并比较了不同模型组合对分类结果的影响。这五种模型为随机森林(RF)、支持向量机(SVM)、LSTM、BiLSTM和CNN-LSTM。
分别对模型中用到的网络层结构进行介绍:
1)卷积层的作用是通过局部特征映射来提取输入数据的重要特征,并将其映射为更低维度的表示形式。这样做不仅可以减少数据的复杂性,还可以提供更具辨识度和判别性的特征,使得后续的长短期记忆网络能够更好地处理和学习相关信息。
2)池化层一般接在卷积层之后,其本质其实就是下采样操作,可以有效减少数据的维度,这样可以降低计算复杂度,从而防止过拟合,提高计算效率。
3)双向LSTM层在特征处理中起着重要的作用。双向LSTM层通过添加一个反向传输层来提取API调用序列的前后依赖关系和上下文信息,这样的设计允许模型同时对时间序列数据进行正向和逆向的分析,从而更加全面地理解和利用序列中的信息。
4)随机丢失层的作用是通过随机丢弃一定比例的神经元的输出来减少神经网络中的过拟合现象。在训练过程中,Dropout层会随机地将一些神经元的输出设置为零,这些被丢弃的神经元会在下一次训练中随机选择另外一些神经元进行替换,从而提高模型的泛化能力。
5)全连接层连接上一层所有的节点,通过学习适当的权重参数来提取特征、映射输入数据、引入非线性变换以及产生最终的预测结果。
3 实验结果分析
本节通过一系列的实验对CNN-BiLSTM双流融合网络模型以及其他机器学习模型进行比较,分析卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)融合的优势,并提出API序列调用频率和TF-IDF词向量这两种表征方法的选择建议。
3.1 实验数据集
本实验所采用的数据集由两个公开的数据集构成:公开数据集Mal-API-2019和阿里云天池安全算法挑战赛所提供的公开数据集。公开数据集Mal-API-2019由7 107个8种不同恶意家族的恶意软件在沙箱中运行时提取的API调用序列构成,这8种恶意家族分别为Spyware、Downloader、Trojan、Worms、Adware、Dropper、Virus和Backdoor。采用这7 107个恶意软件的API调用序列作为本实验的恶意数据集。阿里云天池安全算法挑战赛所提供的公开数据集同样也是由11万个良性软件在沙箱中运行时产生的API调用序列构成。本实验从这些序列中清洗出7 005个序列作为本实验的良性数据集。综上所述,本实验所采用的数据集由7 107个恶意软件和7 005个良性软件在沙箱中运行时提取的API调用序列构成,部分API调用序列如图4所示,具体数据集构成如表1所示。
3.2 实验结果分析
为了比较不同模型对恶意软件的分类性能,本实验比较了RF、SVM、LSTM、BiLSTM、CNN-LSTM、CNN-BiLSTM这6种模型的准确率性能。此外,本实验还选用API调用频率和TF-IDF词向量作为模型输入,评估不同表征方法在恶意软件分类上的性能表现。
实验结果分别展示了模型的准确率、精确率、召回率、F1值四组数据。下面分别给出使用API调用频率和TF-IDF词向量作为模型输入的实验结果。
从表2和表3的分类结果可以看出,CNN-BiLSTM双流融合网络模型相对于其他方法有更好的分类性能,在准确率、精确率、召回率和F1值这四个指标
上都优于RF、SVM、LSTM、BiLSTM和CNN-LSTM
模型。CNN-BiLSTM双流融合模型能够对时间序列进行多粒度特征提取。CNN在卷积层中使用不同大小的滤波器,可以捕捉API调用序列中的多尺度特征,这些特征对于理解API调用序列局部结构非常重要,而BiLSTM更擅长建模长期依赖关系,通过将CNN和BiLSTM相结合,CNN-BiLSTM能够同时利用API调用序列的局部特征和全局特征,提取更丰富的特征表示,实现更好的恶意软件检测效果。
除了模型的准确率指标之外,实验还对API调用频率和TF-IDF词向量这两种表征方法进行了对比,图3和图4分别为API调用频率在CNN-BiLSTM模型上的Accuracy值和Loss值,图5和图6分别为TF-IDF词向量在CNN-BiLSTM模型上的Accuracy值和Loss值。
由图5可以看出,基于API调用频率特征表示的CNN-BiLSTM模型在经过第53个Epochs时因为过拟合而停止了迭代,由图6可以看出,基于TF-IDF词向量特征表示的CNN-BiLSTM模型在经过第38个Epochs时就已经停止了迭代,可以说明基于TF-IDF词向量特征表示的模型比基于API调用频率特征表示的模型拟合速度更快,且从图5和图6中Accuracy、Loss曲线来看,基于TF-IDF词向量特征表示的模型比基于API调用频率特征表示的模型在训练集和测试集上的差距要小,说明基于TF-IDF词向量特征表示的模型比基于API调用频率特征表示的模型拟合效果要好。综上所述,基于TF-IDF词向量特征表示的方法更能够体现API调用序列在前后顺序和调用频率上的依赖关系,能够在使用API调用序列检测恶意软件的过程中达到更好的性能和表现。
4 结 论
本文探索了如何利用深度学习技术进行动态恶意软件检测。通过研究恶意软件API动态调用序列,引入CNN-BiLSTM双流融合网络模型对API调用序列的前后依赖关系进行建模。实验结果表明,该方法能够结合CNN和BiLSTM的优点,同时利用API调用序列的局部信息和全局信息进行上下文建模,从而提高模型的表达能力。本文还对API调用频率和TF-IDF词向量这两种表征方法进行了对比,实验证明基于TF-IDF词向量特征表示的方法更能够体现API调用序列的统计特征,在恶意软件动态特征分类中的效果更好。后续的研究工作将会探究恶意软件可视化检测技术,以更有效地检测出新型的恶意代码。
参考文献:
[1] 国家互联网应急中心.2021年上半年我国互联网网络安全监测数据分析报告[R/OL].[2023-07-23].https://www.cert.org.cn/publish/main/upload/File/first-half%20%20year%20cyberseurity%20report%202021.pdf.
[2] 王志文,刘广起,韩晓晖,等.基于机器学习的恶意软件识别研究综述 [J].小型微型计算机系统,2022,43(12):2628-2637.
[3] YE Y F,LI T,ADJEROH D,et al. A Survey on Malware Detection Using Data Mining Techniques [J].ACM Computing Surveys (CSUR),2017,50(3):1-40.
[4] YE Y F,CHEN L F,WANG D D,et al. SBMDS: an Interpretable String Based Malware Detection System Using SVM Ensemble With Bagging [J].Journal in Computer Virology,2009,5(4):283-293.
[5] DING Y X,CHEN S,XU J. Application of Deep Belief Networks for opcode Based Malware Detection [C]//2016 International Joint Conference on Neural Networks (IJCNN). Vancouver:IEEE,2016:3901-3908.
[6] DING Y X,DAI W,YAN S L,et al. Control Flow-based opcode Behavior Analysis for Malware Detection [J].Computers amp; Security,2014,44:65-74.
[7] RAFF E,BARKER J,SYLVESTER J,et al. Malware Detection by Eating a Whole EXE [J/OL].arXiv:1710.09435v1 [stat.ML].[2023-07-28].https://arxiv.org/pdf/1710.09435.pdf.
[8] SAXE J,BERLIN K. Deep Neural Network Based Malware Detection Using Two Dimensional Binary Program Features [C]// 2015 10th International Conference on Malicious and Unwanted Software (MALWARE).Fajardo:IEEE,2015:11-20.
[9] SANTOS I,BREZO F,UGARTE-PEDRERO X,et al. Opcode Sequences as Representation of Executables for Data-mining-based Unknown Malware Detection [J].Information Sciences,2013,231:64-82.
[10] KUMAR A,KUPPUSAMY K S,AGHILA G. A learning Model to Detect Maliciousness of Portable Executable Using Integrated Feature Set [J].Journal of King Saud University-Computer and Information Sciences,2019,31(2):252-265.
[11] JEON S,MOON J. Malware-detection Method with a Convolutional Recurrent Neural Network Using Opcode Sequences [J].Information Sciences,2020,535:1-15.
[12] HUANG W Y,STOKES J W. MtNet: A Multi-task Neural Network for Dynamic Malware Classification [C]//DIMVA 2016: Proceedings of the 13th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. Berlin:Springer-Verlag,2016:399-418.
[13] QIAO Y,YANG Y X,JI L,et al. Analyzing Malware by Abstracting the Frequent Itemsets in API Call Sequences [C]//2013 12th IEEE International Conference on Trust, Security and Privacy in Computing and Communications.Melbourne:IEEE,2013:265-270.
[14] TIAN R H,ISLAM R,BATTEN L,et al. Differentiating Malware from Cleanware Using Behavioural Analysis[C]//2010 5th International Conference on Malicious and Unwanted Software. Nancy:IEEE,2010:23-30.
[15] LIU Y Y,WANG Y W. A Robust Malware Detection System Using Deep Learning on API Calls [C]//2019 IEEE 3rd Information Technology, Networking, Electronic and Automation Control Conference (ITNEC). Chengdu:IEEE,2019:1456-1460.
[16] CATAK F O,YAZI A F,ELEZAJ O,et al. Deep Learning Based Sequential Model for Malware Analysis Using Windows exe API Calls [J/OL].PeerJ Computer Science,2020[2023-07-08].https://pubmed.ncbi.nlm.nih.gov/33816936/.
[17] LI S,ZHOU Q,ZHOU R,et al. Intelligent malware detection based on graph convolutional network [J].The Journal of Supercomputing,2022,78(3):4182-4198.
作者简介:王玉胜(1996—),男,汉族,甘肃武威人,硕士研究生在读,研究方向:计算机信息安全技术与应用;毛子恒(1998—),男,汉族,江苏宿迁人,硕士研究生在读,研究方向:网络与信息安全、恶意加密流量识别。
收稿日期:2023-09-19
Dynamic Behavior Detection for Malware Based on Dual-stream Converged Networks
WANG Yusheng, MAO Ziheng
(School of Electronics amp; Information Engineering, Liaoning University of Technology, Jinzhou 121001, China)
Abstract: To address the problem that traditional static analysis methods are difficult to capture the complex and changeable dynamic behavior of malware, the experiment is based on dynamic feature analysis techniques, through studying the WindowsAPI call sequences of eight common malware, it is found that the before-and-after order of API call sequences and the call frequency will directly reflect the malicious behavior of malware. The experiment uses TF-IDF (Term Frequency-Inverse Document Frequency) technique to vectorize the API call sequences, and designs a Deep Learning model based on CNN-BiLSTM dual-stream converged network to model the before-and-after dependency relationship of such API calls and realize the dynamic detection of common malware. The experimental results indicate that the test accuracy of this model reaches 95.99%, which is better than RF, SVM, LSTM, BiLSTM and CNN-LSTM models, and provides reference for malware detection.
Keywords: API call sequence; dynamic detection; Deep Learning; feature representation