首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

常见沙箱绕过技术

常见沙箱绕过技术

延迟执行

有许多恶意软件都使用基于时间的绕过技术,主要是利用已知的Windows API来延迟恶意代码的执行,常用的API有NtDelayExecution, CreateWaitTableTImer, SetTimer。这些技术在沙箱识别出来之前非常流行。

GetTickCount

沙箱可以识别出恶意软件并通过加速代码执行的方式来进行应对,可以使用多种方法来进行加速检查。其中一种方法就是使用Windows API GetTickCount和一行检查使用时间的代码。研究人员发现多种恶意软件家族使用的方法的变种:

沙箱厂商可以通过创建超过20分钟的简介使机器多次运行来轻易绕过反逃逸技术。

API洪泛

另一种更加流行的方法是在循环中调用垃圾API来引入延迟,即所谓的API flooding。下面是恶意软件中使用该方法的代码:

Inline Code

因为沙箱无法很好地处理行内代码,因此会产生DOS条件。另一方面,许多沙箱无法检测此类行为。

现在的沙箱能力更加多样化,并有代码插入和全模拟的能力,可以识别和报告暂停代码(stalling code)。因此,有了一个可以绕过大多数高级沙箱的方法。

下面是恶意软件在过去纪念使用的基于时间的绕过技术增长图:

硬件检测

恶意软件广泛使用的另一类绕过技术就是对硬件进行指纹操作,尤其是对物理内存的大小、可用HD大小/类型和可用CPU核数进行检查。

这些方法在Win32/Phorpiex, Win32/Comrerop, Win32/Simda和相关的恶意软件家族中非常流行。研究人员对这些变种进行追踪分析发现,Windows API DeviceIoControl()和一些控制代码被用来提取存储类型和大小的信息。

勒索软件和加密货币挖矿恶意软件也用GlobalMemoryStatusEx ()方法来检查可用的物理内存。类似的检查如下所示:

内存大小检查:

下面的沙箱中实现的API拦截代码示例,可以对返回的存储大小进行操作:

因为现有的调用无法在已有的沙箱中拦截,因此基于Windows Management Instrumentation (WMI)的方法就非常流行。

下面是恶意软件家族检查存储类型和大小的路径图:

CPU检查

温度检查

恶意软件作者还在不断地添加新的方法来绕过沙箱系统。另一个检查就是检查执行的处理器的温度。

示例代码如下:

检查是通过系统中的WMI调用实现的。该调用后,虚拟机系统是永远不会返回结果的,因此可以很容易地确定是都在沙箱中运行。

CPU数

Win32/Dyreza这样主流的恶意软件都使用CPU数作为绕过的方法。许多恶意软件家族最初都使用简单的基于API的方法。之后,大多数恶意软件开始使用WMI和基于PEB访问的方法。

恶意软件中的绕过代码不依赖于API来识别沙箱环境,恶意软件作者也开始更频繁地使用该方法。下面是类似的检查示例:

实际上有很多方法可以获取CPU核心数,访问PEB的方式虽然比较静默,但是可以通过内联程序集代码或使用固有函数的方式来实现。

获取CPU核心数的恶意软件绕过沙箱方法发展图如下:

用户交互

另一种恶意软件广泛使用的绕过沙箱的方法就是利用“自动分析系统(沙箱)无法与人类交互”。一般的沙箱都不会模拟用户行为,恶意软件可以加入自动分析系统和其他真实系统的差别的代码来实现。事实上有多款恶意软件已经通过监控windows事件和停止执行来识别沙箱。

下图是使用GetForeGroundWindow来确定调用相同的API是否会修改Windows handle的Win32/Gataka变种。类似技术也出现在 Lockiny勒索软件变种中。

下面是另一个Win32/Sazoora 恶意软件的截图,通过检查鼠标的移动来识别沙箱,也有很多恶意软件通过这种方法来识别沙箱。

恶意软件还会部署大量的技术来检查与受感染系统的历史交互信息。比如,Dridex恶意软件就使用Auto Execution宏,该宏只有在文件关闭时才触发。下面是VB代码的示例:

还有恶意软件攻击活动在MRU文件中引入注册表键值检查来验证有受感染机器的历史交互。该方法中的验证也做了类似的检查。

使用注册表key来检查MRU:\HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\User MRU

以上检查的代码版本:

环境检查

恶意软件还会对目标环境进行指纹处理,这样就可以利用沙箱的错误配置。开始的时候,使用Red Pill 技术就可以检测虚拟环境,直到沙箱开始加固架构。恶意软件作者开始使用新的技术,比如检查主机名或注册表来验证安装的程序。

Locky和Dridex恶意软件使用检测网络的方法:

结论

传统沙箱通过运行虚拟化解决方案来构建沙箱环境,比如VMware, VirtualBox, KVM, Xen。这给了恶意软件很多的漏洞来绕过沙箱。恶意软件作者不断加入新的技术和方法来绕过传统的安全解决方案以更好地检测沙箱。

注:本文翻译自:https://securingtomorrow.mcafee.com/other-blogs/mcafee-labs/evolution-of-malware-sandbox-evasion-tactics-a-retrospective-study/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191030A0LK8T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券