Agent-based Vs Agent-less Sandbox for Dynamic Behavioral Analysis
来源:https://arxiv.org/ftp/arxiv/papers/1904/1904.02100.pdf
摘要:恶意软件可以通过静态分析或动态分析进行检测和分类。在静态分析中,对恶意软件样本进行逆向工程和分析,从而构建恶意软件的签名。这些技术可以通过多态、变形恶意软件、混淆和打包技术轻易地挫败,而在动态分析中,恶意软件样本是在受控的环境中使用沙箱技术执行的,以便对恶意软件的行为建模。本文通过基于代理和无代理的动态沙箱系统对Petya、Spyeye、volatile lecedar、PAFISH等进行了分析,以研究和测试它们在高级恶意软件检测中的效率。
一、引言
恶意软件也被称为“Malware”,在网络安全领域[1]出现了大量的变种。赛门铁克(Symantec)的互联网安全报告得出结论,2016年[2]开发了3.5亿个恶意软件变种,而熊猫安全(Panda security)表示,2013年[3]平均每天出现16万个新的恶意软件程序。恶意软件变种的显著增长是由于计算机系统和网络的普遍性,以及获取计算机系统和/或其数据的潜在经济利益。
尽管几种方法基于浅架构已经使用在过去的AV公司来检测恶意软件变种,要么是基于签名的[4],或heuristic-based[5],恶意软件的作者常常选择实现健壮的、隐秘的和成熟的方法,如模糊、多态病毒和变形机制,为了阻碍商业杀毒软件公司。为了应对每天被发现的数以千计的新恶意软件样本,安全公司和分析人员使用了不同的技术。恶意软件样本通常通过静态和动态分析进行分析。在静态分析中,只分析恶意软件样本的可执行二进制文件,不执行二进制文件。由于该技术使用模式识别的概念,并使用恶意软件二进制代码中的公共字节序列来检测恶意软件签名,因此被反病毒公司广泛用于检测恶意软件。这种技术速度快,不需要任何受控的环境来运行示例,但是很容易通过混淆、打包和代码重新排列技术来阻止它,而且它不能覆盖零日恶意软件攻击[6]。在动态分析恶意软件中,为了了解运行时行为,样本在受控环境中执行和监视。这种方法是计算密集型的,因为它需要在一个隔离的沙箱环境中运行恶意软件样本,以获得构件和特性,但它在描述恶意软件样本时往往具有更高的准确性。这种技术与底层代码无关,可以很容易地绕过代码混淆和多态编码。
安全分析人员广泛使用不同的技术、工具和机制来执行行为分析。恶意软件行为建模最广泛使用的工具之一是Cuckoo,尽管研究人员也更喜欢使用VirMon和WINAPIOverride32等工具来进行恶意软件分析。所有这些工具都有各自的优缺点,最终影响到特征工程过程,有时由于这些工具本身的局限性而忽略了非常重要的特征,导致分类系统性能低下。在本文中,我们旨在比较基于代理和无代理沙箱在检测复杂的恶意软件变体方面的效率和有效性。我们使用基于Cuckoo代理的沙箱和VMRay无代理沙箱对恶意软件进行行为建模,之后,我们通过检测一般恶意软件,更具体地说,检测复杂的恶意软件,来衡量这些工具的有效性。
二、相关工作
恶意软件检测、聚类和分类也是学术研究人员和行业专业人士的热门话题,在这里我们将介绍到目前为止用于检测恶意软件的不同方法。首先描述了一些使用静态特性的方法,然后解释了动态特性。[7]的作者使用静态分析从门户可执行文件中提取n-gram特征来检测恶意软件和良性样本,然后使用这些特征来区分良性样本和恶意样本。在最近的一项研究中,Opcode被用来检测恶意文件[8]。恶意软件样本被逆向工程,以获得一个操作码,这是机器语言指令的一部分,并描述要执行的操作。它在区分合法软件和恶意软件方面起着重要的作用。在[9]中,作者提出了一个基于字节频率检测恶意软件变体的模型。在这个模型中,如果可疑的恶意软件的字节频率与某些已知的恶意软件类相似,就可以检测到它。在[10]中,重点是API序列,它在大多数恶意软件文件中出现的频率更高,然后对序列应用相似性度量。在[11]中,研究人员提出了一个模型,通过计算动态链接库、api和PE头等特征的频率来检测可疑样本,然后利用这些信息获取特征选择,将样本标记为恶意或良性。在[12]中,提出了一种基于n-gram特征向量的恶意软件分类系统。通过对网络级构件的动态分析,得到网络级构件,构造n-gram特征向量,用于恶意软件的分类。本文作者声称,通过使用多种机器学习算法,分类准确率达到80%。[13]的研究人员分析了系统状态的变化,如创建的新进程的数量、编写的文件等。该方法是在未知的恶意软件变种上进行评估,这些变种的签名在当时是不可用的,并使用基于单链聚类的树结构来度量不同恶意软件组之间的相似性。
在[14]中,作者试图解决一个与恶意软件打包有关的问题,这是一种基于混淆方法的技术,用于在软件中隐藏恶意代码。为了解决这个问题,作者提出了一种生成每个打包恶意软件签名的技术。分析数据集分为两部分。第一部分用于构建不同系统实体之间的关系,包括过程、系统寄存器等,另一部分用于测试和评估。[15]的作者提出了一种基于定量数据流模型的检测系统,然后用图来描述不同系统实体之间的通信,包括进程、系统寄存器等。[16]的研究人员得出结论,恶意软件通常会对数据序列进行重复操作,比如执行解密或加密的循环,这可以通过迭代系统调用模式挖掘来解决。在[17]中,假定每个可执行文件的行为都可以由其运行时寄存器内容的值表示。
[18]的研究人员使用4-gram来建模API调用序列。通过比较所有4-gram样本的平均置信度,将样本分为恶意软件类和良性类。
[19]通过使用优先级参数,通过系统调用及其参数,引入了一个基于2-gram特性的模型样例行为。它成功地识别出具有类似行为的新型恶意软件,并将未知的恶意软件分配给这些发现的类。[20]的研究人员将恶意软件中出现的作为段威胁的良性文件构建的函数库去除,计算段熵,提取每个段的3-gram操作码。
在[21]中,与传统技术相比,作者使用迭代模式挖掘来检测恶意软件,其假设是恶意软件对从正在运行的感染到正在运行的循环(执行解密/加密过程)等数据序列进行重复操作。该研究的作者将整个过程分为五个步骤。在第一步中,他们收集恶意软件样本,在下一步中,他们通过在VMWARE和Qemu等受控的虚拟环境中运行这些样本,捕获与操作系统api的PE交互。在这个步骤API中,调用日志用于构造数据集,而且,在这个步骤中,它们看到迭代API模式出现的次数超过最小阈值。在最后一步,他们使用模式特征作为一个数据集来分类恶意软件。采用不同的算法对SVM、随机森林等模型进行训练,其准确率达到95%,检出率为98.4%。
三、提出了研究工作
正如第二节所总结的,先前的研究导致了能够对恶意软件进行动态分析的平台。这是两种类型:基础动态分析和高级动态分析平台。使用Capture-Bat、Regshot、APATE DNS、PEID、PE explorer、Sysinternal等动态分析工具进行分析,使用Virmon、Cuckoo、WINAPIOverride32等高级动态分析工具对恶意软件行为进行建模。先进的动态分析平台的测试都是基于agent的,他们通常会把自己的agent放到分析机上去捕捉恶意软件的特性,但是当前的恶意软件是足够智能的,当他们发现自己在被基于agent的沙箱分析时,可以绕过分析,并在分析之前引爆自己。在本研究中,我们采用了基于agent和无agent的沙箱,并在这些环境中执行恶意软件集,以找出最适合捕获复杂恶意软件特征的沙箱,如图1所示。
为了进行这项研究,我们使用了两个不同的试验台,一个布谷鸟沙盒和另一个VMRay分析仪沙盒。Cuckoo Sandbox是一个被广泛使用的开源平台,用于在受控环境中模拟恶意软件的行为。它是在2010年谷歌赞助的夏季代码项目中作为一个夏季项目开发的。该恶意软件分析系统的目的是为创建、删除、API调用、参数和返回值等提供恶意软件的自动分析。Cuckoo主要关注DLL、PDF、office文档,以及不同的windows可执行文件,并进一步考虑Java文件。VMRay Analyzer是一种针对恶意软件的无代理动态行为分析工具。与其他建立沙盒解决方案在市场上,它是嵌入在hypervisor为了监控恶意软件的行为,克服传统沙箱的问题,因此恶意软件可能无法检测到它被引爆控制环境选择VMRay分析器的一个原因是它克服前进逃避技术和选择的另一个原因是其重要特性例如逃避阻力,可定制的自动化,方便部署,VMRay的声誉引擎和无缝集成如表二所示。
在第一个实验中,我们使用了VMware workstation version(12.5.9)虚拟环境,在虚拟环境中我们搭建了一个安装了Cuckoo sandbox的Ubuntu虚拟机(16.04 LTS),对恶意软件进行动态分析,得到恶意软件的构件,了解恶意软件的行为。为了在Ubuntu的控制环境中执行恶意软件,我们在Windows XP- sp3机器上设置了VBox,并在XP虚拟机上安装了cuckoo agent等软件,使其能够有效地捕捉恶意变种在执行时的行为。在第二个实验台上,我们使用了VMRay analyzer,它托管在VMRay云环境中,VMRay analyzer公司给予我们30天的特殊访问权限来进行实验。实验环境在云中配置了几乎所有版本的Windows从Windows XP SP1、SP2和SP3, Windows 7, Windows 8和10(所有服务包),此外,为了更清楚地了解行为这些机器配置了所有必要的软件例如MS Office 2007, 2010, 2013,阅读器版本9、10、12等。在我们提出的概念模型中,我们使用了Cuckoo和VMRayanalyzer,如图2和图3所示,对两种沙箱提取的伪影进行了对比,如表2所示。
四、实验结果
我们从不同的来源(如传染源转储和动物园)获取恶意样本,并在两个环境中执行这些样本。在这里,我们提到了其中几个的结果,包括勒索软件Petya、Spyeye、Volatile Cedear、Dyre和PAFISH。这些示例分别在基于代理和无代理的环境下,在不同版本的Windows上执行,例如Windows 7 (SP-1 32位和64位)、Windows 8(64位)和Windows 10(64位),如图4所示。使用两种不同类型的沙箱(i)基于代理的沙箱和ii)无代理沙箱工具,通过动态分析机制分析恶意样本的行为和行为。我们通过在基于代理和无代理沙箱环境中执行不同的恶意软件样本进行了实证分析,发现无代理沙箱在检测复杂的恶意软件时更有效,当发现自己被沙箱代理检测时,这些恶意软件会绕过或崩溃。这项研究背后的动机是对这些恶意软件变体的行为进行建模,这些变体能够阻止代理的基本沙箱,因此它们不会被检测到。
在分析过程中,我们密切监控了操作资源中发生的变化,例如DNS请求、HTTP请求、文件相关活动、注册表相关活动、API调用及其返回值、服务活动、IRC命令以及我们在实验中看到的进程树。在布谷鸟Petya通常给我们非常有限的功能,无法产生的功能,这有助于了解恶意软件的行为。
在我们看来,这背后的原因是,几乎所有的高级恶意软件通常在执行时监视运行的环境,在找到分析平台时,它们通常会停止执行,或者在某些情况下只给出不重要的特性,而相反,当这些高级恶意软件在无代理沙箱中执行时,结果完全相反,我们能够捕获一些非常重要的特性,例如零天检测,如表2所示,我们发现这些特性在设计先进的威胁检测和缓解平台时会起到重要的作用,我们将在未来的工作中证明这些特性的重要性,因此通过分析,我们得出这样的结论:在捕获智能恶意软件和提取其特性方面,无代理沙盒更加有效和健壮。
五、未来工作
本次会议讨论了我们未来的工作和框架,包括三个阶段:监视阶段、特性工程阶段和学习阶段。
在监控阶段,我们会从不同的类中提取恶意软件样本,然后执行它们来控制环境,从而对恶意软件的行为进行建模。对于行为分析,我们将使用国产的内置式无代理沙箱或者一些开源的无代理沙箱,如图5所示。使用这个工具的原因是,我们从实验中发现,无代理沙箱是一种规避机制,现在复杂的恶意软件和apt可以检测到它,因此,他们停止执行。此外,[23]中使用的功能也将被考虑在内,这样我们就可以从恶意软件的执行中收集尽可能多的信息。
B.特征工程阶段
在这个阶段,将根据API调用及其参数创建特性集,这是通过从本地工具或开源工具生成的文本文件中提取字符串信息来实现的。一旦我们得到了特性,我们将应用特性选择技术来获得重要的特性集。在这一阶段的最后阶段,我们将使用不同的NLP技术,例如n-gram,将特征转换为二进制向量,然后将其输入到deep learning algorithm进行训练,如图6所示。
C.学习验证阶段
在这一阶段,将二元向量给出给学习算法,如图6所示。在我们的例子中,我们将使用生成算法和我们将关注深层信念网络DBN和使用这背后的原因是,他们很善于创造的不变表示对象即使特定对象改变它的大小,对比,角度等,他们产生了很有前景的结果在许多图像分类项目,而且具有精度高。此外,还将探讨博弈论模型和信任的应用。
VI.CONCLUSION
本文回顾了过去通过静态或动态分析检测恶意软件的方法,发现动态分析是一种有效的恶意软件行为分析方法。动态分析通常是在沙箱环境中进行的,在我们的研究中我们发现传统的沙箱并没有规避阻力,因为它们将自己的代理丢弃在控制环境中,而控制环境可以被智能恶意软件检测到,因此它们在寻找代理时并没有解包或执行,所以在我们的研究中我们发现无代理沙箱是动态分析的最佳解决方案。