随着黑客正在实施最新技术来绕过防护,网络攻击正变得越来越复杂。勒索软件和0 day供击是过去几年中最普遍的威胁,如今逃避沙盒的恶意软件将成为网络攻击者未来的主要武器。
沙盒技术被广泛用于恶意软件的检测和预防,因此,黑客一直寻找方法让他们的恶意软件在沙盒中保持不活动状态。这样,逃避沙箱的恶意软件可以绕过保护并执行恶意代码,而不会被现代网络安全解决方案检测到。
在本文中,我们描述了恶意软件用来避免沙箱分析的技术,并说明了用于检测逃避沙箱的恶意软件的现有方法。本文对于正在开发网络安全解决方案的开发人员很有用。
在讨论逃避沙箱的恶意软件之前,让我们定义什么是沙箱。沙箱是一种用于恶意软件检测的自动化技术,已被传统的防病毒程序和其他安全应用程序广泛使用。通过将潜在危险的程序放置在不会造成任何危害的受控虚拟环境中,安全软件可以分析恶意软件的行为并开发针对该恶意软件的保护措施。
虽然沙箱技术被认为是有效的,但网络罪犯现在正在应用新技术,让恶意软件逃避沙箱。据估计,近98%的现代恶意软件至少使用一种逃避技术。此外,超过32%的恶意软件配备了六种或更多的方法来避免在防病毒沙盒中被检测到。例如,Cerber勒索软件运行28个进程来确定它是否已到达目标环境。一些网络安全专家甚至预测,到2020年,可能会出现第一个使用AI算法逃避虚拟环境的恶意软件。
什么是逃避沙箱的恶意软件?
逃避沙箱的恶意软件是一种新型恶意软件,可以识别出它自身是否在沙箱或虚拟机环境中。这些恶意软件只有在被控环境之外才会执行其恶意代码。
第一个绕过沙盒保护的恶意软件出现在1980年代。该恶意软件使用逃避技术,该技术允许病毒加密自己的代码,因此安全专家无法读取它。自那时以来,网络犯罪分子已经开发了500多种逃避技术,并基于这些技术开发了多个当代恶意软件家族。
如今,加密的恶意软件可以隐藏更复杂的威胁,旨在长时间攻击受害者的系统。此外,还有全新类型的具有沙盒逃避技术的恶意软件,它们甚至可以绕过那些使用机器学习算法的防护技术。
逃避沙箱的恶意软件的真实示例
近年来,通过逃避沙盒的恶意软件进行的攻击越来越多。尽管他们以不同的方式攻击计算机,但他们都使用了允许恶意软件感知其环境的技术。以下是一些逃避沙箱的恶意软件的示例:
- 2016年发布的Locky勒索软件是逃避沙箱的经典示例。Locky是通过感染了加密DLL文件的JavaScript代码传播的。该恶意软件要求使用run32dll.exe来执行DLL。但是,run32dll.exe在沙盒环境中不可用,所以,这使得恶意软件无法被检测到。另一个来自Locky家族的恶意软件KeRanger,是在下载到系统三天后才开始起作用。
- 在2018年中,在中东发现了新版本的RogueRobin木马。这种面向政府的恶意软件是通过电子邮件在附加的RAR存档中传播的。一旦启动,该恶意软件使用一个虚拟机映像来验证它运行的系统的BIOS版本、CPU内核和物理内存,并且不会在沙盒中运行。
- 在2019年,黑客利用HAWKBALL后门攻击中亚的政府部门。该恶意软件利用Microsoft Office漏洞传递有效负载并收集系统信息。它能够执行本机Microsoft命令,调查主机,甚至可以验证其使用的进程是否已调试。
- 2019年3月,检测到一个使用改进的沙盒规避技术的macOS恶意软件的新样本。与以前的版本相比,OSX_OCEANLOTUS.D具有带有UPX字符串的Mach-O签名,这使得它在虚拟环境中的静态分析过程中不会被察觉。此外,该后门可执行文件还会检查它是否已连接到调试器,并收集了有关主机的数据。
如您所见,逃避沙箱的恶意软件会使用不同的技术来混淆沙箱。让我们更深入地了解恶意软件是如何逃避反恶意软件程序的,以及在沙盒分析过程中我们如何检测恶意的恶意软件。
最常见的沙盒规避技术
为了避免检测,恶意软件使用特殊的沙盒规避技术,这些技术主要基于检测用户或系统的交互或获得环境意识。
检测用户交互
用户以不同的方式与计算机系统交互,但是在沙盒环境中没有类似于人类的交互。因此,黑客可以让恶意软件等待用户的特定动作,然后才展示恶意行为。以下是一些用户操作可以激活逃避沙箱的恶意软件的示例:
- 滚动文档。现代恶意软件可以编程为只有在滚动到文档中的特定位置后才能执行。例如,只有在用户将RTF文档滚动到第二页后,才会激活恶意软件。为了检测到这一点,该恶意软件包含Microsoft Word文档中使用的段落代码。尽管RTF文件还包含段落标记(./par),但恶意软件代码包含一系列段落,在执行利用代码之前,需要滚动这些段落。而沙盒环境不包含任何滚动动作,从而使恶意软件保持休眠状态。
- 移动并单击鼠标。对某些恶意软件进行了编程,以检查鼠标移动和单击的速度,如果速度可疑,则保持不活动状态。例如,Trojan.APT.BaneChan仅在用户单击一定数量的鼠标后激活。
检测系统特征
可以对逃避沙箱的恶意软件进行编程,以查找真实系统的某些功能,这些功能在沙箱或虚拟环境中不可用。
- 核心计数技术允许恶意软件发现虚拟系统和物理系统之间的差异,例如CPU核心的数量。这就是为什么许多沙盒供应商隐藏他们的实际配置,这样黑客就无法检测沙盒规范。
- 数字系统签名。一些恶意软件被设计用来查找系统的数字签名,其中包含有关计算机配置的信息。
- 安装程序。该技术允许恶意软件通过在操作系统中查找活动进程来检查防病毒程序的可用性。Client Maximus恶意软件就是逃避沙箱的恶意软件的一个示例,该应用程序使用隐形驱动程序来应用此技术。
- 操作系统重新启动。恶意软件可能会被设计为仅在系统重新启动时激活。之所以使用此技术,是因为某些沙箱无法在重新启动后继续保持运作状态。虽然虚拟环境可能会尝试通过登录和注销用户来模拟重新启动,但恶意软件可以检测到这一点,因为并非所有重新启动触发器都会执行。
环保意识
开发出可感知环境的恶意软件的网络犯罪分子通常都知道沙盒的工作原理。因此,他们可以轻松地对病毒进行编程,以检测它们是否在裸机环境中运行。
为了检查其环境,可以对恶意软件进行编程以检测安装在受感染系统上的设备,或者查找仅属于虚拟环境的指示器,例如虚拟机监控程序调用,某些文件名和沙盒的典型进程。
此外,这种恶意软件可以在将沙箱命名为“样本”或“恶意软件”时对其进行检测。此外,病毒在发现诸如vmusrvc.exe,boxservice.exe或vmtoolsd.exe之类的进程时,可以检测到它处于虚拟环境中。
例如,旨在挖掘Monero加密货币的BlackSquid恶意软件使用了多种方法来感知其环境。特别是,此恶意软件检查了常见的沙箱用户名和寄存器断点以获取硬件断点。它还验证了磁盘驱动器模型,设备驱动程序和动态链接库。
其他规避技术
规避沙盒的其他流行技术包括计时和数据混淆。
基于计时的技术
在某些情况下,恶意软件会使用基于计时的技术来逃避沙箱。沙盒通常仅在有限的时间段内分析恶意软件,基于计时的技术很乐意滥用此功能。
以下是三种常见的基于时间的沙盒规避技术:
- 睡眠。当恶意软件使用长时间睡眠调用时,它可以在执行前成功离开沙盒。
- 定时。在某些情况下,恶意软件可以编程为在特定日期和特定时间执行。
- 暂停代码。恶意软件可能包含恶意代码,这些恶意代码执行无用的CPU周期以延迟实际代码,直到沙盒完成测试为止。
混淆内部数据
有一些沙盒规避技术可让恶意软件更改或加密其代码和通讯,以使沙盒无法对其进行分析。
- 快速通量。这项技术是基于改变DNS名称和IP地址,并被那些想要隐藏网络钓鱼和恶意软件发送地址的僵尸网络广泛使用。它允许恶意软件绕过安全解决方案创建的恶意网站黑名单。例如,Necurs僵尸网络通过使用域名生成算法来更改网站地址,该算法每四天创建一个新的域名。
- 数据加密。某些恶意软件(例如Trojan Dridex)也可以加密API调用,以使传统的恶意软件沙箱无法读取它们。Andromeda僵尸网络使用多个密钥来加密与服务器的通信。
如何检测逃避沙箱的恶意软件
我们描述的规避技术可以让开发人员更深入地了解如何检测规避沙盒的恶意软件。以下是一些原则,您可以在您的安全解决方案中实现,以防止沙盒规避恶意软件。
- 动态改变睡眠时间。沙盒通常会分析恶意软件几秒钟,而长时间的分析会大大增加检测睡眠时间的恶意软件的机会。然而,这种方法可能不会有效,因为它需要更多的时间。相反,您可以让沙盒动态更改其时间设置,以欺骗恶意软件并刺激其执行。
- 模拟人机交互。沙盒环境默认情况下不会模拟互动,但是您可以添加一些类似于用户的互动,以更好地分析恶意软件。但是,请记住,现代恶意软件技术可能很狡猾,可以检测到虚假的鼠标单击或移动。
- 添加真实的环境和硬件工件。在沙箱中检索硬件信息将帮助您检测恶意软件,以检查硬盘大小,最近使用的组件,CPU编号,操作系统版本,内存容量以及其他系统和硬件特性。
- 除了动态分析外,还要进行静态分析。沙盒技术是动态恶意软件分析的一种形式,它可以在安全的环境中检查恶意软件的行为。虽然逃避沙箱的恶意软件会不执行任何操作,但您可以对其进行完全静态的代码分析。静态分析将检查文件中是否存在逃避技术或加密的代码段。
- 使用指纹分析。指纹技术允许您分析恶意软件文件并找到恶意代码的指标。指纹也可以用来检测恶意软件的规避特征。
- 使用基于行为的分析。基于行为的分析提供了旨在检测和打击规避技术的功能。在此分析过程中,沙箱与恶意软件本身进行交互以查找可能的执行路径。而且,它模拟过程交互看起来很像主机。一旦检测到沙盒规避技术,沙盒便会抵消其恶意代码。
- 自定义您的沙箱。通过将其他用于恶意软件检测的创新功能添加到沙箱中,可以显着提高其检测恶意软件的效率。例如,您可以使用包含多种环境和迭代分析的多沙盒阵列。检查计算机系统API以外的恶意软件通信也很有效。您还可以在沙盒中添加一项功能,该功能可以在运行时搜索和验证恶意代码的痕迹。
- 添加内核分析。尽管大多数沙箱解决方案都在用户模式下运行,但某些类型的恶意软件旨在将恶意代码注入内核空间(rootkit或驱动程序),从而逃避沙箱攻击。例如,早期版本的Turla恶意软件已加载并利用了易受攻击的VirtualBox驱动程序,并禁用了对签名驱动程序加载的检查。因此,通过在解决方案中添加内核分析,可以防止恶意软件进入内核。
- 实施机器学习。基于机器学习算法的恶意软件分析可以在恶意代码执行之前有效地检测沙盒逃避技术。机器学习算法可以分析恶意软件不活动或睡眠的每种行为,以此作为逃避技术的信号。此外,它还可以收集数以百万计的其他信号,以共同检测恶意代码。
- 将内容解除防护和重建(CDR)视为一种额外的安全措施层。CDR通常被认为是沙盒的对立面,但它可以作为其他安全解决方案的附加组件。此技术从文件中删除所有活动内容,并为用户提供经过清理的文档。它允许您立即防止隐藏在文档中的恶意软件,但也有可能导致包含脚本(如用JavaScript编写的Office宏)的损坏文件,即使它们不是恶意的。
结论
规避沙盒的恶意软件旨在避免被基于沙盒技术的保护程序检测到。这意味着传统的恶意软件检测方法对这些恶意软件无效。
本文翻译自:https://www.apriorit.com/dev-blog/545-sandbox-evading-malware