如何高效检测恶意软件?
  • 刘正轩
  • 发表时间:2024-03-01
  • 来源:中国教育网络

传统的安全检测手段已无法完全应对现阶段的恶意软件攻击环境,在此背景下,人们也在尝试引入机器学习、深度学习、家族聚类等方法,以便更高效地检测恶意软件。

Your Image Alt Text


随着信息网络技术的发展,计算机在现代社会的生产活动中具有极重要的地位,同时也一直面临着来自恶意软件攻击的威胁。恶意软件指在使用者不知情、未允许的情况下,攻击者在用户计算机及其他相似终端上运行的恶意程序。其目的为绕过权限控制,利用操作系统或应用程序的漏洞来侵害用户合法权益。攻击者通过恶意软件来窃取数据库信息、个人隐私或控制其他网络资源,严重影响了计算机使用安全。

恶意软件威胁程度加深

近期,针对银行、医院等重要机构进行数据加密勒索的WannaCry病毒,通过加密被害主机数据以勒索用户付费解密数据,给30多万受害者造成了约80亿美元的损失。


除了危害大以外,目前的恶意软件攻击还表现出数量多、变化快的特点,且大部分普通计算机使用者都是潜在的恶意软件攻击目标。2023年3月2日,中国互联网络信息中心发布的第51期《中国互联网络发展状况统计报告》中显示,截至2022年12月,中国网民规模达10.67亿,网络普及率高达75.6%。


国外安全公司赛门铁克在其2018年互联网安全威胁报告(Internet Security Threat Report)中指出,“WannaCry和Petya/NotPetya”快速传播的主要原因是恶意软件的快速变化,各个恶意软件家族的发展十分迅速,勒索软件、木马、病毒、恶意挖矿程序等多种形式的恶意软件不断涌现。赛门铁克观察到了68个恶意家族变种和超过10000种恶意代码变种。恶意软件变种的数量呈指数级增长,是识别恶意软件的一大挑战。


另外,据安全公司AV-TEST所述,在过去的五年里,其发现的恶意软件总数从2018年的7.2亿个增加到了2022年的12.3亿个。其中,Windows恶意软件占比可达95%以上,说明PE(Portable Executable)文件仍然是恶意软件最常见的表现形式。


现有的恶意软件数量众多且种类繁杂,因恶意软件作者往往会对已有的恶意软件进行改造或重构,以生成恶意软件变体,其中具有一定的“代码重叠”。在长期的恶意软件分析过程中,安全分析人员尝试将具有足够多“代码重叠”的一组程序视为同一类型的恶意软件,即恶意软件家族。通过对恶意软件进行聚类来减少安全分析中的工作量。但由于攻击者会持续编写新的恶意软件,并利用其不断发起针对智能化系统的大规模网络攻击,所以多数企业、政府机构和网络用户目前仍然面临着来自未知恶意软件的安全威胁。


很多研究者已经意识到,传统的安全检测手段已无法完全应对现阶段的恶意软件攻击环境,所以尝试引入机器学习、深度学习、家族聚类等方法来更高效地检测恶意软件,并取得了一定成效。然而,也有部分研究指出,一些恶意软件检测方法存在缺陷,如未考虑到检测耗时、可解释性、置信度、用户需求等。因此,面对繁多的恶意软件攻击,如何高效地检测恶意软件成为当前面临的重要课题。

现阶段检测方法

现阶段,恶意软件的检测方法主要包括静态检测和动态检测。


静态检测

静态检测主要通过提取文件静态信息、文件属性信息及存储在文件头中的区间信息作为特征进行检测分析。其中,一种主要的检测方法是通过文件的二进制字节信息来判断软件的恶意性,如通过检查文件区间熵和字节分布的情况来检测恶意软件。另一种常用的静态检测方法是从文件头中提取信息作为特征进行检测,这类通过文件属性和文件基础信息提取特征进行检测的方法在多数研究中都取得了一定效果。


此外,也有一些特殊的静态检测方法,如将待测文件转化为灰度图,并通过图形识别的方式,来找出恶意软件中存在的相似图案,以此达到恶意软件检测的效果。其中,也有研究人员不对软件信息进行提取,而是直接将文件的前2MB字节输入到卷积神经网络中进行训练及检测,并取得了很高的检测正确率,这也表明恶意软件检测有很多待研究的潜在方向。


动态检测

动态检测主要指将软件置入沙箱等虚拟环境中运行,提取其中动态的运行信息作为主要特征,进行恶意软件检测。在实际研究中,研究人员主要尝试提取软件的函数调用信息作为特征来检测和分析恶意软件。常见的方法是将恶意软件置入虚拟环境中运行,在监控其行为的同时,收集软件的运行数据进行检测。很多研究人员都会将软件在沙箱运行时调用的API序列作为主要特征进行检测,并通过N-Gram、Doc2Vec等方法进一步提取其中的特征信息。


也有部分研究发现,在提取普通的API调用序列之外,也可以尝试加入调用API时的参数、函数以及路径名来提高检测的正确率。同时,也有研究发现了恶意软件的网络行为可以作为恶意攻击的一个重要指标,因此可以通过软件流量的网址和域名来辅助进行恶意软件分类。


动静结合检测

也有很多研究尝试了将动态检测方法和静态检测方法相结合,以获得更高的检测正确率。这些检测方法能够同时使用多种静态特征和动态特征进行检测。这种动静结合的检测方法往往能取得较好的检测效果,但是也存在一些问题,如检测结果存在不可解释性,较难判断是哪些特征发挥了主要作用。这导致这种动静结合的检测方法需要较高的文件处理时长,同时高纬度的特征也会一定程度上降低检测分类器的效率。


工具辅助检测

Your Image Alt Text


除了提取动态特征以及静态特征之外,研究人员在进行恶意软件检测时也会尝试使用其他软件工具进行辅助,以提升检测的效率。其中,多数研究人员会使用VirusTotal、AVCLASS等工具提供的结果来辅助进行检测。VirusTotal是安全研究人员常用的恶意软件分析工具,集成了多款恶意软件检测引擎,可以提供不同检测引擎对同一软件的检测结果。AVCLASS是由恶意软件检测专家开发的一款恶意软件标签工具,旨在从VirusTotal提供的结果中提取对安全研究人员有意义的标签。之后的AVCLASS2在AVCLASS的基础上进行了改进,以解决VirusTotal提供的标签没有统一命名标准的问题。也有研究人员会尝试通过网络爬虫爬取公开网址上的恶意软件情报,来更新恶意软件样本。在一些研究中,研究人员使用这些工具提供的标签来训练神经网络,以应对恶意软件检测领域数据集匮乏的状况。


一方面,在常规的恶意软件检测研究外,已经有研究者发现现阶段的恶意软件检测方法存在不同的问题,一些文件以外的因素也会影响恶意软件检测和分析的效果。例如,辅助研究人员的恶意软件检测工具,存在检测结果会随时间变化这一缺点,导致研究人员如果过度信任工具的检测结果,会造成较多的检测误判和检测漏判。同时,很多研究中对恶意软件的定义不明确,对检测规则的设置也没有统一标准。很多研究人员会以一半以上的检测引擎提示恶意作为判断恶意软件样本的标准。也有研究人员认为,只要重点关注数个高质量检测引擎的检测结果即可。


此外,多项实验表明,如果对软件进行一定的修改,如更改文件的签名或者文件大小等,虽然并没有改变文件恶意与否的本质,但却会很大程度上降低恶意软件检测器的分类正确性。其主要原因是,恶意软件检测的效果高度依赖训练时使用的数据样本,因此较难发现数据集之外的新型恶意软件,同时各类特征提取方法由于存在维度限制,并不能提取文件样本中的完整信息,降低检测效果。


另一方面,很多研究中都存在特征的可解释性问题,如在多数研究中都使用到了提取文件熵作为特征检测恶意软件的方法。然而现阶段的研究发现,熵很可能只是作为识别软件是否打包的指标,并不能直接作为区分恶意软件的关键。这种情况在使用多种特征拼接组合进行检测的恶意软件研究中表现更为明显,很多研究人员常提出类似于“一刀切”的解决方案,直接将提取的特征进行拼接组合,而不考虑不同特征对实际结果的检测贡献以及特征的提取难度等。有部分研究尝试对恶意软件特征进行选择,以去掉冗余性高的特征子集。然而,这类研究主要集中于单个特征上,而非针对不同特征的组合进行研究。同时,一些研究也存在较难复现的情况,主要原因是这些研究使用了非公开的数据集进行研究,或是使用了特殊的硬件及软件。

总结

综上所述,现阶段有多种恶意软件的检测方法,但也有研究指出当前的识别检测方法存在一定缺陷,使得研究中的恶意软件检测方法变得难以应用到实际生产环境中。因此,在现阶段的恶意软件检测研究中,研究者在考虑检测正确率的同时,也应把各个特征的提取难度、重要程度、表现结果等实际因素纳入考量,在综合评估的基础上设计恶意软件检测方法并通过实际实验进行检测,以确保新设计的恶意软件检测模型具有可行性和实用性,提高恶意软件的检测效率,减少恶意软件带来的危害。