恶意软件检测(12)Neurlux: Dynamic Malware Analysis Without Feature Engineering

Neurlux: Dynamic Malware Analysis Without Feature Engineering

  • 论文:https://dl.acm.org/doi/10.1145/3359789.3359835#:~:text=Neurlux%20does%20not%20rely%20on%20any%20feature%20engineering%2C,report%20is%20from%20a%20malicious%20binary%20or%20not.
  • 项目:https://github.com/ucsb-seclab/Neurlux

摘要

恶意软件检测在计算机安全中起着至关重要的作用。现代机器学习方法一直以提取恶意特征的领域知识为中心。然而,可以使用许多潜在的功能,手动识别最佳功能既耗时又困难,特别是考虑到恶意软件的多样性。在本文中,我们提出了Neurlux,一种用于恶意软件检测的神经网络。Neurlux不依赖任何特征工程,而是从详细描述行为信息的动态分析报告中自动学习。我们的模型借鉴了文档分类领域的思想,使用报告中的单词序列来预测报告是否来自恶意二进制文件。我们调查了我们模型的学习特征,并显示了它倾向于给予报告的哪些组成部分最高的重要性。然后,我们在两种不同的数据集和报告格式上评估了我们的方法,表明Neurlux改进了现有技术,可以有效地从动态分析报告中学习。此外,我们还表明,我们的方法可移植到其他恶意软件分析环境,并可推广到不同的数据集。

说明

随着恶意软件变得越来越复杂,恶意软件分析也需要不断发展。传统上,大多数反恶意软件使用基于签名的检测,将可执行文件与已知恶意软件签名列表进行交叉引用。然而,这种方法有局限性,因为对恶意软件的任何更改都可能更改签名,因此同一恶意软件的新版本通常可以通过加密、混淆、打包或重新编译原始样本来逃避基于签名的检测。VirusTotal报告称,每天分析超过68万个新样本[40],其中可能有相当多的样本只是之前看到的样本的重新打包版本,正如Brosch等人[3]观察到的那样。超过50%的新恶意软件只是现有恶意软件的重新打包版本。

近年来,由于需要将技术推广到以前看不见的恶意软件样本,因此产生了利用机器学习技术的检测方法[25,26,38]。恶意软件分析可以大致分为两类:代码(静态)分析和行为(动态)分析。静态分析和动态分析都有其优点和缺点。尽管动态分析提供了可执行行为的清晰画面,但它在实践中面临着一些问题。例如,对不可信代码的动态分析需要一个复制目标主机的虚拟机,这需要大量的计算资源。此外,恶意软件可能不会表现出其恶意行为,或者虚拟化环境可能不会反映恶意软件所针对的环境[5,15,27,30]。为了避免这些限制,一些相关工作仅依赖于从静态分析中提取的特征来实现对大量恶意软件样本的快速检测。然而,可以采用各种加密和混淆技术来阻碍静态分析[19,24]。这对静态恶意软件检测器来说是一个更严重的问题,因为包装在今天的良性样本中也被广泛使用。样本[28]。尽管动态分析被证明容易受到规避技术的影响,但运行时行为很难混淆。动态分析二进制文件可以解包并记录其与操作系统的交互,这是恶意软件分析的一个有吸引力的选择。

无论使用静态分析还是动态分析,大多数基于机器学习的恶意软件检测器都严重依赖于相关的领域知识[12,13,34]。这些方法通常依赖于恶意软件专家手动调查的功能,这需要大量的功能工程。例如,Kolbitsch等人[13]捕获了PE可执行程序在为此目的设计的特定功能中的行为图。恶意软件不断被创建、更新和更改,这可能会使最初精心设计的功能不适用于较新的恶意软件或不同的恶意软件家族。在这种情况下,必须不断完善成本高昂的特征工程工作。因此,找到一种降低人工特征工程成本的方法来从原始数据中提取有用的信息是至关重要的。

最近有一些关于基于深度学习的恶意软件分类的工作,这不需要特征工程。然而,现有的深度学习方法并没有利用来自现有动态分析系统的信息,而是倾向于选择一种类型的动态特征[14]或使用静态特征[6]。这些解决方案遗漏了关于每个样本所采取的行动的完整信息。

在本文中,我们提出了Neurlux,这是一个使用神经网络分析动态分析报告的系统。Cuckoo[21]等服务通过在沙盒中跟踪可执行文件来提供对可执行文件的详细动态分析。此分析包含诸如网络活动、注册表更改、文件操作等信息。我们使用这些报告作为分析的基础。也就是说,给定一个动态分析报告,我们希望能够预测该报告是针对恶意软件样本还是良性可执行文件。

我们的直觉是,我们可以将这些报告视为文件。凭借这种直觉,我们提出了Neurlux,这是一种神经网络,它在不需要任何特征工程的情况下学习并操作(清洁的)动态分析报告。Neurlux借用了文档分类领域的概念,将报告视为一系列单词,这些单词构成了一系列句子,从而创建了一个有用的模型。Neurlux打算用学习这些行为伪像或启发式的神经网络来取代昂贵的手工启发式。

为了检查我们的方法是否偏向于特定的报告格式(即沙盒),我们在评估中包括了两个不同的沙盒,即杜鹃沙盒[21]、杜鹃沙盒和一个商业反恶意软件供应商的沙盒(我们将其称为VendorSandbox)。此外,我们使用了两个不同的数据集,一个由商业反恶意软件供应商VendorDataset提供,另一个是标记的基准数据集EMBER[2]EmberDataset。

为了证明Neurlux比特征工程方法做得更好,我们实现了三种这样的技术,并与稍后讨论的技术进行了比较。此外,我们实现并比较了由Karbab等人[11]提出的MalDy模型作为基线。MalDy将行为(动态)报告形式化为一个单词袋(BoW),其中特征是报告中的单词。总之,我们做出了以下贡献:

  • 我们提出了Neurlux,这是一种利用文档分类概念来检测恶意软件的方法,该方法基于沙箱生成的行为(动态)报告,而无需进行功能工程。唯一的预处理步骤是清理报告以提取单词,在此基础上,我们的模型学习相关的单词序列,这有助于其预测。Neurlux在我们的K倍验证中显示出高准确度,达到96.8%的测试准确度。
  • 我们在动态分析报告中创建并测试了几种恶意软件分类方法,包括新方法,如集成功能的堆叠集合和功能计数模型。我们与这些方法进行了比较,表明Neurlux优于特征工程方法。
  • 我们通过在新的数据集和新的报告格式(即由新的沙盒生成)中测试Neurlux来评估其泛化能力,并表明它的泛化能力比我们评估的方法更好。
  • 可执行文件的源代码和数据集将在github上发布。