基于网络安全的恶意软件检测方法研究
2022-04-29胡纲
胡纲
关键词:网络安全;恶意软件检测方法;分类;特征
1引言
现代信息技术高速发展,一切都在适应数字化浪潮,而不是人工工作方式。技术有其优缺点,科技使人类的生活更便捷,也会出现网络被攻击、数据丢失,使隐私数据被人滥用的现象。因此,在如今的网络世界中,设备的安全非常重要。而且,互联网的使用量与日俱增,互联网被广泛使用的一个缺点是许多计算机系统很容易受到攻击,并感染上恶意软件病毒。恶意软件有不同的名称,如恶意代码、恶意程序或恶意可执行文件,目的是破坏计算机系统的数据保密性、完整性和可用性,甚至可以在用户不知情的情况下改变和删除系统、数据。
2恶意软件的类型
2.1病毒
病毒将其恶意代码附着在干净的代码上,等待用户或自动程序来执行它们。类似于生物病毒,它可以快速而广泛地传播,对计算机的核心部分造成损害。
2.2蠕虫
蠕虫的名字来自于它们感染系统的方式。从一台被感染的机器开始,它在网络中穿行,连接到其他机器以继续传播、感染。这种类型的恶意软件可以非常迅速地感染整个设备网络。
2.3木马/特洛伊
这种类型的恶意软件隐藏在合法软件中,或将自己伪装成合法软件。它将通过创建后门,让其他恶意软件变种轻松访问,从而破坏网络安全[1]。
2.4间谍软件
间谍软件隐藏在计算机的后台,这种类型的恶意软件会在用户不知情的情况下收集信息,如信用卡资料、密码和其他敏感信息。间谍软件是直接或不经意地安装在计算机上的软件。虽然间谍软件与木马/特洛伊程序类似,但它却被包装成另一个程序。
2.5勒索软件
勒索软件也被称为恐吓软件,它的破坏性是很大的。它不仅能够锁定网络并锁住用户,直到支付赎金,而且它已经把当今世界上一些最大的组织作为目标。
2.6隐蔽式劫持
隐蔽式劫持主要针对一些新型的加密应用,如劫持“加密货币”,即指未经授权使用他人的计算机来挖掘加密货币。密码劫持是攻击者强迫用户提供比特币的另一种方式,只是它在用户不一定知情的情况下发挥作用。而且,加密挖矿的恶意软件会感染用户计算机,利用用户的CPU周期来挖取比特币,为攻击者牟利。挖矿软件可能在用户的操作系统的后台运行,甚至作为浏览器窗口的JavaScript。
2.7恶意广告
恶意广告是利用合法的广告或广告网络,暗中向无保护的用户计算机提供恶意软件。例如,网络犯罪分子可能花钱在一个合法网站上投放广告,当用户点击该广告时,广告中的代码要么将他们重新定向到一个恶意网站,要么在他们的计算机上安装恶意软件。在某些情况下,嵌入广告的恶意软件可能在用户没有任何行动的情况下自动执行。
2.8空文件
空文件的恶意软件攻击不会下载恶意文件或向磁盘写入任何内容破坏系统。攻击者只是利用易受攻击的应用程序,将恶意代码直接注入主内存,还可以利用受信任和广泛使用的应用程序,如利用微软办公室或Windows操作系统中的管理工具(如PowerShell和WMI)来运行脚本,并将恶意代码直接加载到易失性内存中。
2.9隐形恶意软件
隐性病毒是一种隐藏的计算机病毒,它可以攻击操作系统进程,还能避开典型的反病毒或反恶意软件扫描。隐性病毒隐藏在文件、分区和启动扇区中,善于故意躲避检测。隐形恶意软件根据其隐藏的内容有不同的类型,即Rootkits、代码突变、反模拟、目标机制。
Rootkit可以通过用户模式挂接、内核模式挂接或结合两者的混合方式来注入恶意代码[2]。代码突变是指恶意软件改变其代码,利用突变引擎躲避反病毒软件,但它可以通过仿真检测。另一种隐蔽的恶意软件反仿真在仿真环境中运行时表现不同。它们可以感知环境并根据环境改变行为。隐形恶意软件的目标机制只在选定的系统上运行和传播。对于基于组件和基于模式的隐形恶意软件有不同的应对措施。为了检测基于组件的隐性恶意软件,可以使用签名和启发式方法检测钩技术,这导致高假阳性率或跨视图检测和基于规范的方法被滥用,其中API调用的输出与旨在做同样事情的低级调用进行比较。另外一种对策是使用硬件解决方案,其中一台干净的机器可以用来监测另一台机器是否存在Rootkits/隐性恶意软件。虚拟化技术也能够检测隐性恶意软件,但它们也容易受到反变异恶意软件的影响。对于检测基于模式的隐性恶意软件,可以使用基于签名、行为、启发式和模型的技术。图1为恶意软件的几大类型。
3恶意软件检测
恶意软件检测有多个阶段,它们共同作用于恶意软件的检测或分类。以前的研究主要集中在Windows、智能手机和嵌入式系统(IOT)的恶意软件检测上。如今,对智能手机中的恶意软件检测的研究正在增多。由于新的研究是基于恶意软件日益增长的复杂性而进行的,因此恶意软件的检测方法也在日益改变。但所有的研究中,主要的恶意软件检测过程基本保持不变。
3.1恶意软件的检测技术
3.1.1基于签名的检测
模式匹配是恶意软件检测中最常见的方法,而基于签名的检测是该领域最流行的方法。签名是每个文件的独特特征,类似于可执行文件的指纹。基于签名的方法使用从各种恶意软件中提取的模式来识别它们,比其他任何方法都更快且更有效。这些签名通常是以特别敏感的方式提取出来的,因为是独一无二的,所以使用签名检测方法的错误率很低。其中,低错误率是大多数普通商业反病毒软件使用这种技术的主要原因。但这些方法无法检测未知的恶意软件变体,而且需要大量的人力、时间和金钱来提取独特的签名。
3.1.2基于行为的检测
基于行为的恶意软件检测技术通过观察程序的行为,就可以得出它是惡意软件的结论。由于基于行为的技术观察可执行文件的行为,它们不容易受到基于签名技术的缺点的影响。简单而言,基于行为的检测器通过检查一个程序的行为,而不是它所说的内容来断定它是否是恶意的。在这些方法中,具有相同行为程序被收集起来。因此,单一的行为签名可以识别各种恶意软件的样本。这些类型的检测机制有助于检测不断产生新的变种的恶意软件,因为它们总是以类似的方式使用系统资源和服务。基于行为的检测器基本上由以下部分组成。
(1)数据收集器:该组件收集关于可执行文件的动态/静态信息。
(2)解释器:该组件将数据收集模块收集的原始信息转换为中间表示。
(3)匹配器:该组件用于将相关表示法与行为签名进行比较。
3.1.3基于启发式的检测
在启发式方法中,检测器使用签名和行为技术的特征来检测恶意软件。它使用的特征包括API调用、CFC、操作码、n-gram,DLLs列表和其他混合特征。这种技术可以使用任何机器学习算法来训练和测试模型,并对恶意软件进行分类或检测[3]。它在一定程度上检测零日恶意软件的准确率很高,但它不能检测复杂的恶意软件。为了克服签名和基于行为的恶意软件检测方法的缺点,有研究给出了关于启发式检测方法和机器学习算法的调查,对API调用、CFC,N-gram,Opcode[4]和混合特征做了详细研究,其使用机器学习算法来生成一个与签名相似的模式。基于该签名,新的可疑程序被标记为恶意软件或良性软件。
3.1.4基于深度学习的检测
深度学习是人工神经网络工程( ANN)的一部分或子领域,能够在没有人类监督的情况下学习,从非结构化和无标签的数据中汲取营养。其主要用于减少恶意软件检测中的特征[5]。有研究者提出DL-Droid是一个使用动态分析和有状态输入生成的应用程序,用于检测Android系统中的恶意软件,并使用深度学习系统对有状态输入生成方法的检测性能和代码覆盖率与常用的无状态方法比较[6]。
3.1.5基于物联网和移动的检测
物联网( LoT)设备是指连接互联网的智能设备,如家用电器、网络摄像机和传感器。由于移动设备和物联网设备在用户中日益流行,它们也成为攻击者更喜欢的目标。正因如此,恶意软件检测模式正在从计算机领域向物联网和移动设备领域转变。有研究对目前所有已知的物联网恶意软件家族进行了分析,并将这项工作作为开源母版上传,使用细粒度特征的Android系统恶意软件檢测,它利用应用程序使用的权限作为静态特征,评估了1700个良性应用程序和1600个恶意应用程序,达到了94.50-/0的TP率。3.1.6基于模型检查的检测
在这种检测方法中,恶意软件的行为是手动提取的,并使用线性时间逻辑( LTL)对行为组进行编码,以显示软件特征。程序行为是通过查看一个或多个系统调用的流程关系来创建的,并通逋使用隐藏、传播和注入等属性来定义行为。通过比较这些行为,可以确定该程序是恶意软件还是良性软件。基于模型检查的检测可以在一定程度上检测一些新的恶意软件,但不能检测所有新一代的恶意软件。3.1.7机器学习算法
大多数检测使用不同类型的机器学习算法进行分类和检测。对于恶意软件的检测,我们可以根据文件类型应用任何机器学习算法,并根据准确性、logloss或其他性能指标选择最佳算法。例如,对一个Android文件(apk)进行分类,无论是恶意的还是合法的,都可以提取权限、api调用或系统调用特征,并可以应用任何分类算法,如SVM、随机森林等,以下是可能影响机器学习算法的因素:数据集、特征类型、用于选择最突出特征的特征选择算法、用于将应用程序归类为恶意或干净的分类算法、分类器的参数值(超参数)。4结束语
本文虽然介绍了7种恶意软件的检测方法,但没有一种方法能够完全检测出所有新一代的恶意软件,只有基于行为和模型检查的检测方法可以在一定程度上抵御混淆。结果显示,基于深度学习和云计算的方法也能很好地检测部分恶意软件,但它们不能完全检测所有类型的恶意软件。