A Comprehensive Study on Learning-Based PE Malware Family Classification Methods [ESEC/FSE 2021]
Yixuan Ma State Key Laboratory of Communication Content Cognition Tianjin, China College of Intelligence and Computing, Tianjin University
Shuang Liu College of Intelligence and Computing, Tianjin University Tianjin, China
随着机器学习技术的快速发展和在各种任务上取得的令人振奋的成果,机器学习算法在PE恶意软件族分类任务中也得到了广泛的应用. 使用机器学习的三种主流方法,按输入格式分类,分别是基于图像的、基于二进制的和基于反汇编的方法。
尽管发布了大量的方法,但是对这些方法没有一致的比较。此外,因为恶意软件的快速演变的性质, 在概念漂移(concept drift)的情况下没有比较。在这项工作中,作者在4个不同的数据集和一致的实验设置上对基于学习的PE恶意软件分类方法进行了深入的实证研究。
根据实验结果和对行业合作伙伴的采访,得到结论 (1) 没有哪一类方法显著优于其他方法; (2) 所有方法的概念漂移性能均有下降(f1得分平均为32.23%); (3) 预测时间和高内存消耗阻碍了现有方法被用于工业使用。
一句话: 基于图像、基于二进制和基于反汇编的三种主流方法做恶意代码分类任务综述
导论
在高额利润的驱动下,地下恶意软件行业一直在持续增长和扩张。据AVTEST[9]报道,每天有超过35万个新的恶意样本注册,恶意软件的总数在过去九年里增长了大约11倍. 具体来说是从2012年的9900万个,到2020年的11.39亿个。
众所周知,恶意软件家族发展迅速,而概念漂移 (即对象统计属性以不可预见的方式发生变化) 在领域内已经成为一个相当具有挑战性的问题。恶意软件族分类对于了解恶意软件族的演变趋势,更好地检测恶意软件具有重要意义。
而其中 PE 文件占用户上传恶意软件的50%左右。为了解决PE恶意软件分类问题,已经提出了大量的研究方法,其中基于学习的方法[18,40,62]近年来得益于机器学习尤其是深度学习技术的成功而流行起来。
第一类方法: 将PE恶意软件文件转化为图像,然后应用图像分类技术解决该问题[8,18,39,40,62]。
第二类方法: 直接将PE恶意软件文件作为二进制代码序列,通常采用自然语言处理领域的序列模型(NLP) 求解问题[10,26,43,44,46,51]。
第三类方法: 将PE恶意软件文件反编译为汇编代码,然后对汇编代码的控制流图(CFG)采用图结构分析[20,30,31,65]。
这三种方法分别在不同的数据集上进行了独立的评估,它们在评估的数据集上都表现出良好的性能。
虽然各类方法可以在各自的特定数据集上获得良好的效果, 但是依然还有以下三个问题需要考虑:
(1) 哪一类方法更准确和高效;
(2) 对于快速发展的恶意软件家族来说,概念漂移是一个常见而又现实的问题,不同的方法在这种情况下的表现如何;
(3) 行业采用这些方法的现状以及未来支持行业需求的研究方向。
为了回答这些问题, 论文从3类方法中抽取9个有代表性的方法进行统一实验
Image-based | Binary-based | Disassembly-based |
---|---|---|
VGG-16 | CBOW+MLP | MAGIC |
ResNet-50 | MalConv | Word2Vec+KNN |
Inception-V3 | MCSC | |
IMCFN |
论文贡献
(1) 首次对基于学习的PE恶意软件族分类方法进行了大规模、系统的实证研究
(2) 创建并公开了两个新的PE恶意软件家族分类数据集,一个用于普通分类目的,一个用于概念漂移目的
(3) 率先用大量具有代表性的方法对概念漂移情况进行了评价
(4) 为进一步促进恶意软件族分类的应用研究提供了实用建议和未来的研究方向
设计
Image-Based Techniques
基于图像的技术首先将恶意软件二进制文件转换为灰度图像或彩色图像,然后采用图像分类模型进行恶意软件族分类。Nataraj等人[40] 提出将恶意软件二进制文件转换为灰度图像,并利用图像的纹理特征采用k -最近邻(KNN)模型进行恶意软件分类。此后Ahmadi等人[8]采用boosting树分类器来更好地捕获多种新特征,如Haralick和局部二进制模式(LBP)。后来CNN在图像领域获得突破, Vasan等人[62]提出采用迁移学习,将ImageNet数据集[15]预训练的CNN网络与恶意软件文件的图像进行精细调整,以更好地符合恶意软件族分类任务。
优点: 基于图像的方法不需要特定领域的知识,许多现有的成熟的图像分类模型可以直接使用
缺点: 将恶意软件转换为图像会引入新的超参数(比如, 图像宽度),并强加不同行的像素之间不存在的空间相关性, 具有误导性.
Binary-Based Techniques
基于二进制的方法将恶意软件的二进制代码作为输入,将其视为序列信息。因此现有的顺序模型,尤其是来自NLP领域的模型可以用来执行分类任务. Jain等人[26]提出从原始字节序列中提取 n - gram 作为特征,并利用几个基本的机器学习模型,如 Naïve Bayes[49] 和 AdaBoost[16] 进行恶意软件检测, 但是该方法的计算代价随n的增加指数增大. 后来 Raff等[44] 提出了第一个端到端的浅层CNN模型,该模型直接将整个二进制文件作为输入进行恶意软件分类, 但是这个方法需要大的内存来存储大型恶意软件文件,因此处理能力有限。为了解决这一问题,提出了只关注二进制文件[46]的pe头的方法。它从pe报头中选取328字节作为输入,因此不受恶意软件文件大小的影响。之后Qiao et al.[43]将每个恶意软件二进制文件作为256个单词的语料库(0x00-0xFF),采用Word2Vec模型[38]获取词嵌入,然后将恶意软件表示为一个词嵌入矩阵,按字节升序表示,最后使用多层感知器(Multi-Layer Perceptron, MLP)对恶意软件进行分类。
优点: 基于二进制的方法不需要领域知识,并且考虑了恶意软件二进制文件中的上下文信息
缺点: 需要将恶意软件样本表示为字节序列可能会面临一些困难. 第一, 将每个字节作为字节序列中的一个单位,恶意软件字节序列的大小可能达到数百万时间步,相当消耗资源。第二,相邻的字节在空间上是相互关联的,但由于跳转和函数调用,因此二进制文件中的信息可能存在不连续性。
Disassembly-Based Techniques
基于反汇编的方法首先将二进制文件反汇编为汇编代码,并根据功能调用图(FCG)和控制流图(Control Flow Graph)等特征进行恶意软件分类. Kinable等人[30]提出通过现有的图匹配技术计算两个fcg之间的相似度得分,并将其作为恶意软件聚类的距离度量。Yan等[65]采用了深度图卷积神经网络(DGCNN)[66]对从反汇编文件中提取的AFCG进行属性聚合,这是DGCNN在恶意软件分类任务上的首次尝试。最近Santos等人[51]提出了一种基于操作码序列出现频率的特征表示方法。Awad等[10]将每个反汇编文件的操作码序列视为一个文档,并应用Word2Vec模型[38]生成文档的计算表示。最后,他们使用Word Mover’s距离(WMD)[33]度量和k近邻(KNN)对这些文件进行分类。还有采用SimHash[41]和MinHash[57]哈希投影将操作码序列转换为向量,然后将其可视化为图像进行分类。
优点: 基于反汇编的技术可以更好地捕获代码结构特征
缺点: 通常需要领域知识, 如汇编语言及其相应的分析方法
实验的9种方法列表
实验
研究目标
(1) 不同的PE恶意软件家族分类方法如何在不同的数据集上执行?
(2) 恶意软件概念漂移对各种模型的分类性能有何影响?
(3) 哪些因素阻碍了目前基于学习的PE恶意软件分类方法在工业上的应用,以及相应的改进方向?
实验方法
Image-Based
(1) VGG-16: 提出VGGNet,减少卷积层中的参数数量(卷积核更小),提高训练时间。
(2) ResNet-50: ResNet是针对传统CNN网络在网络层较深时信息传输中普遍存在的信息丢失、消失梯度和梯度爆炸等问题提出的模型。
(3) Inception-V3: InceptionNet 的目的是弄清楚如何使用一个密集的分量来近似或替换一个最优的局部稀疏卷积结构, V3是最先进的一个Inception版本
(4) IMCFN: IMCFN代表基于图像的恶意软件分类,使用微调卷积神经网络,是定制的恶意软件族分类任务
Binary-Based
(5) Word2Vec+MLP: 这种方法结合了Word2Vec和用于恶意软件族分类的多层感知(MLP)模型.
(6) MalConv: 这是第一个允许将整个恶意软件作为输入的端到端恶意软件检测模型。MalConv 首先使用一个嵌入层将原始字节映射到一个固定的8维向量。它可以通过同时考虑局部和全局上下文来捕获原始二进制文件中的高级位置不变性。
Disassembly-Based
(7) MAGIC: 一种端到端的恶意软件检测模型, 通过将恶意代码表示为 Attributed Control Flow Graph (ACFG) 用 Deep Graph Convolutional Neural Network (DGCNN) 来进行恶意软件族分类任务.
(8) Word2Vec+KNN: 该方法将恶意软件反汇编文件建模为恶意软件语言,提取其操作码序列作为恶意软件文档,并使用Word2Vec模型生成该文档的计算表示。
(9) MCSC: 首先从反汇编文件中提取操作码序列,并基于SimHash将它们编码为等长序列。然后将每个SimHash值作为一个二进制像素,并将SimHash映射到灰度图像, 最后用图像模型进行分类.
数据集
作者使用4种不同的数据集进行评估,分别是BIG-15 [50],Malimg [40], MalwareBazaar 和 MalwareDrift。前两个数据集采用了已有的研究方法的数据,而后两个数据集是为研究新构建的。
BIG-15 在2015年微软在Kaggle上的恶意软件分类挑战赛中首次发布。这个公共数据集包含来自9个家族的10868个PE恶意软件样本。
Malimg 包含9,435个恶意软件,于2011年从25个家族收集。该数据集仅包含从恶意软件二进制文件转换而来的灰度图像,并被广泛用于基于图像的恶意软件分类方法。
MalwareBazaar 是作者根据MalwareBazaar网站,它为恶意软件样本提供免费和不受限制的下载服务。首先从2020年发布的数据中选出前6个恶意软件家族,然后下载每个家族最近上传的1000个恶意软件样本。
MalwareDrift 是基于Wadkar等人[64]的结论构建的, 他们的实验证实,代码变化在𝜒2时间轴统计中出现尖锐的尖峰,这个特性量化了训练的支持向量机(SVM)中的权重差异.
实验结果分析
从表中我们可以看到,在BIG-15和MalwareBazaar数据集上,CBOW+MLP模型的方法在f1分上的表现是最好的,这说明它具有适应不同数据集的泛化性。 另一方面,在考虑不同类别的表现时,没有哪一个类别总是优于其他类别。
表7给出了不同方法在概念漂移场景下的评价结果。特别地,我们选择IMCFN作为基于图像的方法的表示,因为它显示了从之前的研究问题中最好的整体表现(最高的平均f1分数)。在表格中,我们可视化了不同方法的概念漂移对渐变颜色的影响,红色越深,得分下降越高
结论
(1) 没有哪类方法的性能优于其他方法,基于二进制的方法CBOW+MLP[43]在不同数据集上的性能最好;
(2) 在概念漂移的情况下,各类方法的性能下降幅度平均为32.23%,其中CBOW+MLP的[43]的性能下降幅度最大,为69.62%;
(3) 目前行业主要采用沙箱和模式数据库检测恶意软件家族,目前基于学习的方法预测时间长、易受恶意软件进化影响、资源消耗大,难以应用于行业实践。
总结
Related Works
[8] Mansour Ahmadi, Dmitry Ulyanov, Stanislav Semenov, Mikhail Trofimov, and Giorgio Giacinto. 2016. Novel Feature Extraction, Selection and Fusion for Effective Malware Family Classification. In Proceedings of the Sixth ACM on Conference on Data and Application Security and Privacy, CODASPY 2016, New Orleans, LA, USA, March 9-11, 2016, Elisa Bertino, Ravi S. Sandhu, and Alexander Pretschner (Eds.). ACM, 183–194. https://doi.org/10.1145/2857705.2857713
[9] AV-TEST. 2021. Malware Statistics and Trends Report by AV-TEST. Retrieved March 2, 2021 from https://www.av-test.org/en/statistics/malware/
[10] Yara Awad, Mohamed Nassar, and Haïdar Safa. 2018. Modeling Malware as a Language. In 2018 IEEE International Conference on Communications, ICC 2018, Kansas City, MO, USA, May 20-24, 2018. IEEE, 1–6. https://doi.org/10.1109/ICC. 2018.8422083
[18] Daniel Gibert, Carles Mateu, Jordi Planes, and Ramon Vicens. 2019. Using convolutional neural networks for classification of malware represented as images. Journal of Computer Virology and Hacking Techniques 15, 1 (2019), 15–28. https://doi.org/10.1007/s11416-018-0323-0
[20] Mehadi Hassen and Philip K. Chan. 2017. Scalable Function Call Graph-based Malware Classification. In Proceedings of the Seventh ACM Conference on Data and Application Security and Privacy, CODASPY 2017, Scottsdale, AZ, USA, March 22-24, 2017, Gail-Joon Ahn, Alexander Pretschner, and Gabriel Ghinita (Eds.).
ACM, 239–248. https://doi.org/10.1145/3029806.3029824
[26] Sachin Jain and Yogesh Kumar Meena. 2011. Byte level n–gram analysis for malware detection. In International Conference on Information Processing. Springer, 51–59. https://doi.org/10.1007/978-3-642-22786-8_6
[30] Joris Kinable and Orestis Kostakis. 2011. Malware classification based on call graph clustering. Journal in computer virology 7, 4 (2011), 233–245. https://doi.org/10.1007/s11416-011-0151-y
[31] Deguang Kong and Guanhua Yan. 2013. Discriminant malware distance learning on structural information for automated malware classification. In Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. 1357–1365. https://doi.org/10.1145/2487575.2488219
[39] Barath Narayanan Narayanan, Ouboti Djaneye-Boundjou, and Temesguen M Kebede. 2016. Performance analysis of machine learning and pattern recognition algorithms for malware classification. In 2016 IEEE National Aerospace and Electronics Conference (NAECON) and Ohio Innovation Summit (OIS). IEEE, 338–342. https://doi.org/10.1109/NAECON.2016.7856826
[40] Lakshmanan Nataraj, Sreejith Karthikeyan, Gregoire Jacob, and Bangalore SManjunath. 2011. Malware images: visualization and automatic classification. In Proceedings of the 8th international symposium on visualization for cyber security. 1–7. https://doi.org/10.1145/2016904.2016908
[43] Yanchen Qiao, Bin Zhang, and Weizhe Zhang. 2020. Malware Classification Method Based on Word Vector of Bytes and Multilayer Perception. In ICC 2020-2020 IEEE International Conference on Communications (ICC). IEEE, 1–6. https://doi.org/10.1109/ICC40277.2020.9149143
[44] Edward Raff, Jon Barker, Jared Sylvester, Robert Brandon, Bryan Catanzaro, and Charles Nicholas. 2017. Malware detection by eating a whole exe. arXiv preprint arXiv:1710.09435 (2017).
[46] Edward Raff, Jared Sylvester, and Charles Nicholas. 2017. Learning the pe header, malware detection with minimal domain knowledge. In Proceedings of the 10th ACM Workshop on Artificial Intelligence and Security. 121–132. https://doi.org/10.1145/3128572.3140442
[51] Igor Santos, Felix Brezo, Xabier Ugarte-Pedrero, and Pablo G Bringas. 2013. Opcode sequences as representation of executables for data-mining-based unknown malware detection. Information Sciences 231 (2013), 64–82. https://doi.org/10.1016/j.ins.2011.08.020
[62] Danish Vasan, Mamoun Alazab, Sobia Wassan, Hamad Naeem, Babak Safaei, and Qin Zheng. 2020. IMCFN: Image-based malware classification using finetuned convolutional neural network architecture. Computer Networks 171 (2020), 107138. https://doi.org/10.1016/j.comnet.2020.107138
[65] Jiaqi Yan, Guanhua Yan, and Dong Jin. 2019. Classifying malware represented as control flow graphs using deep graph convolutional neural network. In 2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks(DSN). IEEE, 52–63. https://doi.org/10.1109/DSN.2019.00020
Insights
(1) 就实践角度来说, 机器学习驱动的恶意软件分类需要进一步优化性能才有实际运用价值, 所以可以考虑从优化方向进行研究