恶意代码检测技术研究综述
2023-06-25郭沁怡
郭沁怡
摘要:恶意代码的危害性逐渐增大,且已威胁到网络和信息安全。该文归纳了目前较为常见的三种恶意代码检测方法,并讨论了每种方法的优缺点,最后对当前检测技术所面临的问题进行总结,并阐述了未来可能的研究方向,旨在为恶意代码检测技术的发展提供帮助。
关键词:检测技术;恶意代码;传统方法;机器学习;深度学习
中图分类号:TP311.12 文献标识码:A
文章编号:1009-3044(2023)13-0079-03
开放科学(资源服务)标识码(OSID)
0 引言
互联网的快速发展丰富了人们的生活,给人们带来了便利,但也存在着不可避免的安全风险。由于计算机技术的发展,因黑客攻击而导致财产损失的案例越来越多,而恶意代码是最常见的攻击手段之一。恶意代码与正常代码的区别在于,恶意代码是为特定的恶意目的而编写的计算机程序,通常是将其与正常的计算机程序相结合,并选择在特定环境下执行其功能。个人、社会乃至国家都将面临恶意代码带来的严重危害。因此,恶意代码检测问题不仅是防范的重点,同时也是一大难题。目前网络安全领域也将重点放在如何精准高效地检测出恶意代码。
1 传统恶意代码检测方法
恶意代码,又称恶意软件,是可以对用户、计算机或网络造成各种伤害的软件。通过手动分析恶意代码的具体特征来检测恶意软件,不仅费时,而且检测效率低,不实用。传统的恶意代码检测可分三种:启发式检测法﹑签名检测法和行为特征检测法。
1.1 启发式检测法
启发式检测方法主要是将上层系统信息和从内核获得的系统状态进行对比,以此来检测隐藏的文件、进程和注册表信息[1],还有关于通过监测特定系统资源来检测恶意代码的研究。启发式检测主要分为两种检测方法:静态启发式检测和动态启发式检测。
静态启发式检测技术依赖于对代码片段的分析来检测病毒。通过对文件外部的静态信息进行分类,结合病毒的感染形式,模拟对代码执行过程的跟踪,以确定其是否为病毒。动态启发式检测是基于反病毒的VM技术。通过模拟英特尔处理器、计算机硬件组件(内存、硬盘等)和Windows操作系统,建立一个反病毒虚拟机,然后将需要检测和执行的程序加载到模拟系统。两者比较可以看出,静态启发式扫描是一种静态行为检测方法,它将病毒可能执行的一些行动作为签名代码列入病毒数据库。而动态启发式扫描技术多了一项对CPU的模拟。在加密病毒的情况下,直接的静态启发式扫描无法检测到这一点。动态启发式扫描通过模拟一台具有基本操作环境的计算机来解决这个问题,首先模拟运行一个可能是病毒的文件,然后在解密病毒后进行静态启发式扫描[2]。
1.2 签名检测法
Android是时下非常流行的移动操作系统,尽管Android系统的开放性受到应用开发者的欢迎,但存在许多安全隐患。当前,Android设备和Windows PC是恶意软件主要的攻击目标。检测Android中的恶意软件的主要方法是传统的签名检测技术。签名检测的原理是将被测应用程序的签名与已知恶意软件的签名进行比较。如果签名相同,被测应用程序就是恶意软件。传统的签名检测方法的优点是快速和高效,但在检测混淆代码或重新包装的恶意软件方面并不有效,因为它只分析被检测应用程序的整体签名,只要攻击者稍微改变代码,例如名称,恶意软件的签名就会发生重大变化,使传统的签名检测无效[3]。
1.3 行为特征检测法
传统的检测方法的优点是一旦识别出恶意代码的静态签名,就可以准确地检测和删除,而缺点是在没有预定的签名代码的情况下,无法对未知的恶意代码进行有效检测。行为特征检测是将恶意代码的行为特征进行定义和抽象化来检测和捕获程序的异常行为的方法,以保护操作系统和合法应用程序[4]。一般来说,具有行为特征的恶意代码检测系统由四层组成,即行为监测层、行为分析层、行为决策层和联动响应层以及恶意行为库[4]。
行为检测是基于从恶意代码中提取的特征。与基于启发式的检测方法相比,该方法聚焦在恶意代码的实际行为,有效避开了只混淆代码的方法可能带来的影响,具有效率高、误报率低的优点,因此在恶意代码检测工具中被普遍使用,是目前恶意代码检测比较常见的方法[1]。然而,这种方法也有缺点,例如无法防止行为混淆方法,如行为等价替换。
2 基于机器学习技术的恶意代码检测
机器学习,或使计算机能够在没有特殊编程的情况下学习。机器学习是人工智能的一个重要领域,包含了广泛的模型,有些偏向于符号,有些偏向于连接,有些则两者都不偏向。在信息安全领域,不同类型的机器学习模型也可用于解决恶意软件检测问题。以下是三种传统机器学习检测方法:
1) 支持向量机(SVM) 检测法
Android惡意软件可以通过窃取隐私、耗费流量和抵扣电话费等方式造成严重损害,并将用户置于危险之中。而Android系统使用权限机制来控制应用程序对系统资源和用户私人信息的访问,因此, Android应用程序使用的权限与它们的行为密切相关,通过分析权限信息可以有效检测Android恶意软件。
SVM,又名最大边缘算法,是由Vapnik提出的一种机器学习方法。SVM是以统计学习理论为基础,将结构风险降到最低,其学习策略是间隔最大化。SVM的特点是有着强泛化能力,能够解决小样本、高密度和非线性问题。支持向量机的原理是在正负数据中找到最优超平面,使这个超平面能最大限度地将正负数据的分布展现出来,如图1所示[5]。
在图1中, H是最优超平面,H1和H2分别是两个平行于H的支持平面, margin是H1和H2之间的距离[5]。原则上,SVM避免了传统的归纳和推理过程,允许从训练模型到预测模型的高效“过渡性推理”,大大简化了传统的分类和回归问题[6]。然而,这种方法有一些缺点,例如,很难将SVM算法应用于大型训练样本。由于SVM算法在求解支持向量时运用二次规划,过程中需要计算一个m阶的矩阵(m为样本数),对于大量的m来说,存储和计算这个矩阵会消耗大量的内存和计算时间。
2) 决策树检测方法
在机器学习中,决策树是一种树状结构,其中叶节点代表类别,非叶节点代表定义类别的属性。决策树是一个预测模型,提供了属性和类别之间的映射[7]。树上的每个节点代表被测试对象的一个属性,节点之间的分叉路径代表测试某个特定属性的结果,最后的预测也只能在决策树的叶子节点上显示。
决策树模型以前被用来从恶意应用分类的未知文件中提取静态信息,但基于神经网络的模型有固有的缺点。首先,无法知道哪些信息在网络的输入层起着关键作用,导致需要收集所有的数据供已形成的网络模型使用,这不仅限制了处理,也使已形成的网络模型中包含的知识无法被提取并用于其他相关项目。其次,神经网络所需的样本数量不应过大,因为输入节点的元数据,即可以提取的PE文件的数量很难与隐藏层的数量相匹配,尽管有经验理论可能会提供一些指导,但在应用于具有“变化粒度”的多層次模型时,就会更加复杂。然而,决策树可以用来弥补神经网络的这些缺点,它可以通过统计方法获得数据,有着评估过程中快速而直观的优点。
3) 随机森林检测法
随机森林是一个分类器,包含几个随机构建的决策树。当有输入时,几棵树分别评估,最终的分类结果是由匹配过程得到的。随机森林有能力对许多类型的信息产生非常准确的分类器,减少泛化和错误,而且学习过程很快[7]。
随机森林结合了“Bootstrap aggregating”想法和“Random Subspace Metho”的想法,其中随机性体现在样本和特征中。前者对于确保每棵树都有随机数量的特征很有用,而后者则有助于保证样本分裂的多样性。与决策树相比,随机森林作为一种由弱分类器整合而成的强分类器的组合式分类器,在有效降低风险、抗噪声、分类器更好地泛化以及减少过拟合等方面具有优势。在建立随机森林的过程中,必须经历两个阶段,第一阶段是森林生成阶段,第二阶段是决策阶段。
随着研究的深入,使用机器学习从大量的数据中提取潜在的价值,并发现数据中信息之间的关联性,正在吸引越来越多的关注。最近的研究集中在如何将大数据挖掘、机器学习和深度神经网络的知识与大量的恶意代码实例相结合进行检测[8]。现阶段,研究学者对恶意代码的探索基本上都是应用数据分析和机器学习。根据机器学习的检测方法可以分成两阶段:从海量信息中提取特征与建立检测模型。Bayer等人[9]提出了基于概率的聚类算法来检测恶意代码,用局部敏感哈希来表示恶意代码行为信息。这类聚类算法方法能够很好地寻找最近邻。Shabtai等人[10]依据恶意代码的静态数据特点,提出了一种用于恶意代码检测的机器学习模型,达到了相对较高的准确度和较低的漏报率。该方法运用N-Gram优化算法获取恶意代码的命令层和字节数层特点,并用多分类器进行训练,对这些分类器的分类结果使用一种主动学习机制以及加权算法。Sun等人[11]等给出了一种基于静态数据特征提取的恶意代码检测方法。该方法获取字节码、PE文档、汇编代码的特点,挑选8个分类器模型从而找寻最理想的分类器。经过特征融合后,随机森林分类器最终获得了93.56%的F1分数。
使用机器学习检测恶意代码的技术方面涉及两个关键点:特征提取和检测分类模型的选择。在特征提取层面,找寻更好的特征提取方法;在模型选择方面,找到更好的分类算法模型和检测准确率。因而,传统式机器学习检测方法的主要缺点是随机森林(RF) 、SVM算法(Support Vector Machines) 、决策树算法(DT) 等分类器模型较为简单。这种模型不能全自动高效地获取恶意代码更深层次的特征,并且基于机器学习的恶意代码检测依赖于人工特征提取,不能完全准确地描述恶意代码。而特征提取大大影响了恶意代码检测的结果,导致恶意代码检测的准确率较低等问题[8]。
3 基于深度学习技术的恶意代码检测方法
深度学习算法可以将处理过的恶意软件数据作为检测或分类的输入,为最终检测或分类进行高效的特征提取。
卷积神经网络(CNN) 是一类包含卷积计算且具有深度结构的前馈神经网络[12],常用于视觉图像分析。卷积神经网络在各领域被广泛应用,如图像处理、自然语言处理、文本处理及恶意软件检测等。
卷积神经网络通常由输入层、卷积层、池化层以及全连接层组成。各种常规神经网络的结构基本相同。如图2所示,在卷积神经网络中,首先输入层输入数据,通过卷积层对输入数据进行计算得到输入数据的特征空间。其次,池化层用于筛选特征空间中的突出特征,经过几次反复的卷积和融合,得到输入数据的最终特征空间。最后,提取的特征空间被用作全连接层的输入。全连接层的主要功能是完成从输入数据到标签的映射,以实现分类目标。
对于机器学习算法检测技术性的缺点,深度学习模型可以全自动获取恶意代码更深层次的特征,更准确地描述恶意代码。因而,根据深度学习的恶意代码检测理论是这两年的新研究趋势。Yujie Fan[13]利用恶意代码的指令层操作码序列特征来发现恶意代码操作码序列模式,根据神经网络算法来高效地检测恶意代码。Pascanu等人[14]获得了恶意代码语义层系统的序列特征,并根据递归神经网络对恶意代码进行检测分类。试验结果显示,自动门递归算法模块351(GRU) 和LSTMl36模型具有较好的分类特性。Cui Z等人[15]将恶意代码的特征展示在二值图像中,运用CNN全自动获取恶意代码图像的特征,对图片进行归类从而达到恶意代码检测的目的。
深度学习发展趋势十分迅速,近些年,根据深度学习的恶意代码检测研究逐渐增加。利用深度学习模型,例如CNN、RNN、深层置信网络等模型,成了一个新的研究领域,其检测效果很好。但是,传统的基于深度学习的恶意代码检测方式存在劣势。因为恶意代码特征序列长度并不是相对稳定的,所以在单用LSTM作为恶意代码的检测模型的情形下,LSTM模型不能获取较长序列的特征信息内容;单用卷积和神经系统模型作为恶意代码的检测和分类模型时,通过CNN训练后,特征与前后文不相干,会严重影响检测实际效果。
4 结束语
恶意代码作为一种强有力的网络攻击工具,从窃取数据和身份信息、损坏系统和数据信息以及拒绝服务等多方面对个人、组织机构和国家构成了重大威胁。恶意代码的检测是一个至关重要的研究方向,虽然,研究者们在恶意代码检测技术方面取得了很大的进展,但是各种新型的恶意代码不断涌现[16],因此,基于图像纹理特征的恶意代码检测将具有极高的应用场景和研究价值。在未来的研究中可以探讨的两个方面是:首先,可以研究新型的恶意代码可视化技术,将图像中独特的家族特征纳入其中,并利用GAN来解决数据集分布不均的问题,提高模型的通用性;其次,目前检测方法中使用的深度学习模型主要是CNN和RNN,未来的研究可以考虑结合数据可视化、图像处理、GAN以及GCN技术来更有效地检测新的恶意代码[17]。
参考文献:
[1] 王蕊,冯登国,杨轶,等.基于语义的恶意代码行为特征提取及检测方法[J].软件学报,2012,23(2): 378-393.
[2] 陈月玲.基于程序语义的计算机病毒检测方法[D].青岛:青岛大学, 2007.
[3] 宁卓,邵达成,陈勇,等.基于签名与数据流模式挖掘的Android恶意软件检测系统[J].计算机科学,2017,44(B11):317-321.
[4] 左黎明,汤鹏志,刘二根,等.基于行为特征的恶意代码检测方法[J].计算机工程,2012,38(2): 129-131.
[5] 张玉玲,尹传环.基于SVM的安卓恶意软件检测[J].山东大学学报(工学版),2017,47(1): 42-47.
[6] 王义锋.基于XGBoost+RF的个人信贷风险预测研究[D].重庆:重庆大学,2020.
[7] 戴逸辉,殷旭东.基于随机森林的恶意代码检测[J].网络空间安全,2018,9(2):70-75.
[8] 陈克.基于深度学习的恶意代码检测技术研究[D].北京:北京交通大学,2020.
[9] Bayer U, Comparetti P M, Hlauschek C, et al. Scalable, behavior-based malware clustering[C]//NDSS,2009:8-11.
[10] Shabtai A,Moskovitch R,Elovici Y,et al.Detection of malicious code by applying machine learning classifiers on static features:a state-of-the-art survey[J].Information Security Tech Report,2009,14(1):16-29.
[11] Sun B W,Li Q,Guo Y H,et al.Malware family classification method based on static feature extraction[C]//2017 3rd IEEE International Conference on Computer and Communications (ICCC).December 13-16,2017,Chengdu,China.IEEE,2018:507-513.
[12] 何景暉,敖银辉,赵伟良.光缆交接箱端口状态的视觉检测方法[J].微处理机,2021,42(2):53-57.
[13] Yujie,Fan.Malicious sequential pattern mining for automatic malware detection[J].Expert Systems With Applications,2016(52):16-25.
[14] Pascanu R,Stokes J W,Sanossian H,et al.Malware classification with recurrent networks[C]//2015 IEEE International Conference on Acoustics,Speech and Signal Processing (ICASSP).April 19-24,2015,South Brisbane,QLD,Australia.IEEE,2015:1916-1920.
[15] Cui Z H,Xue F,Cai X J,et al.Detection of malicious code variants based on deep learning[J].IEEE Transactions on Industrial Informatics,2018,14(7):3187-3196.
[16] 韩晓光.恶意代码检测关键技术研究[D].北京:北京科技大学, 2015.
[17] 李豪,钱丽萍.恶意代码可视化检测技术研究综述[J].软件导刊,2022,21(5): 9-16.
【通联编辑:代影】