欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

恶意软件沙箱规避策略演变过程研究

来源:本站整理 作者:佚名 时间:2019-09-11 TAG: 我要投稿

恶意软件规避技术广泛用于规避检测机制、加大分析及理解难度。在规避技术中,由于目前沙箱正成为判断恶意威胁的一种最快速和最简单的方式,因此反沙箱检测是比较重要的一类技术。许多企业会使用这类系统来触发已发现的恶意文件及URL,提取更多攻击特征,拓展防御能力,阻止其他相关的恶意活动。现在我们都将安全理解成一个整体过程,沙箱系统是这个生态系统中的一部分,因此我们必须重点关注恶意软件所使用的技术,研究如何针对性防御这些技术。
从历史角度来看,沙箱可以帮助研究人员可视化呈现恶意软件在一段时间内的行为。在过去几年中,随着技术的不断发展,恶意软件开发者开始改进恶意代码,不断深入系统底层来检测沙箱环境。
由于沙箱变得越来越复杂,不断改进检测机制,我们观察到有多款恶意软件会动态修改规避策略,保持对防守方的技术优势。在下文中,我们将回顾恶意软件开发者在过去几年中最常用的一些规避策略,可以看到相关恶意软件家族代码在不断拓展,引入更为隐蔽的技术。
在本文中,我们将重点关注恶意软件最常用的一些规避技术,如下图所示。此外恶意软件还用过其他一些技术,这里没有全面覆盖。

 
0x01 规避技术
延迟执行
在早期阶段,研究人员观察到有多款恶意软件会使用基于时间的规避技术,利用已知的一些Windows API(如NtDelayExecution、CreateWaitTableTImer、SetTimer等)来延迟执行恶意代码。在沙箱环境开始识别并防御之前,这些技术依然非常受攻击者欢迎。
GetTickCount
当沙箱检测到恶意软件,想通过加速代码执行的方式防御恶意软件时,攻击者也开始通过多种方法来识别环境中的加速执行机制。有多款恶意软件家族(包括Win32/Kovter)会在代码中使用GetTickCount这个Windows API来判断代码运行时间是否匹配预期时间,我们也在一些恶意软件家族中看到该方法的一些改进版。

沙箱厂商很容易就能绕过这种规避技术,只要简单创建超过20分钟的快照,让主机运行更长时间即可。
API Flooding
在Win32/Cutwail恶意软件中,我们观察到后续不断被使用的一种方法,那就是在循环中调用无用的API来引入执行延迟,这也就是所谓的API Flooding(API洪泛)技术。使用该方法的恶意软件代码片段如下所示:

内联代码
前面的代码可能会导致DOS效果,因为沙箱无法有效处理这种逻辑。另一方面,随着时间的推移,这种行为也不难检测,沙箱开始能够处理基于API的停顿代码。此时攻击者开始通过另一种策略来实现同样效果,那就是引入内联汇编代码,在执行恶意代码之前等待5分钟。我们发现恶意软件使用过这种技术,如下所示:

沙箱的功能不断加强,配备代码检测技术以及完整的系统模拟功能,能够识别并报告停顿代码。事实证明,这种简单的方法可以规避大多数高级沙箱。根据观察分析,我们梳理了过去几年中恶意软件在基于时间的规避技术方面的演进流程,如下图所示:

硬件检测
识别硬件指纹是恶意软件所广泛采用的另一类规避策略,恶意软件会重点检查物理内存总量、可用硬盘大小及类型以及可用的CPU核心。
这些方法在某些恶意软件家族中非常流行,比如Win32/Phorpiex、Win32/Comrerop、Win32/Simda等。根据我们对这些变种的跟踪,我们注意到恶意软件会将DeviceIoControl() API与特定的控制代码一起使用,获取存储类型及存储大小的相关信息。
研究人员发现勒索软件及加密货币挖掘类恶意软件会使用GlobalMemoryStatusEx ()技巧来检查主机上的可用物理内存总量,类似的检测方法如下所示。
检查存储空间大小:

沙箱会使用一些API拦截代码,用来操控函数所返回的存储空间大小,典型代码如下:

此后,恶意软件开始青睐基于WMI(Windows Management Instrumentation)的技术,因为当时已知的沙箱无法简单地拦截这些调用。



我们梳理了一些恶意软件家族在存储类型及大小检测上的演进过程,如下图所示:

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载