基于沙箱回避的 APT 研究*

2015-08-02 03:58增,勇,
信息安全与通信保密 2015年3期
关键词:沙箱对话框鼠标

孙 增, 施 勇, 薛 质

(上海交通大学信息安全工程学院,上海 200240)

基于沙箱回避的 APT 研究*

孙 增, 施 勇, 薛 质

(上海交通大学信息安全工程学院,上海 200240)

通过对日益复杂化的 APT(Advanced Persistent Threat,高级持续性威胁) 生命周期中危险阶段的认识,简要介绍 APT检测手段的演变过程,详细分析新型 APT 利用技术手段逃避沙箱检测的细节。 针对现有的 APT 沙箱检测不足以应对这种新型 APT 的问题,从 APT 逃避沙箱的方式角度出发,有针对地提出新型沙箱检测技术策略。 对于未来不断进化的 APT,可能会出现许多新的伎俩,探索建立统一的大数据分析跟踪网络或许是尽早发现 APT 的有效途径。

APT;危险阶段;检测手段;沙箱回避;人机交互;特殊设置

0 引言

随着 APT(Advanced Persistent Threat,高级持续性威胁) 发生事件的日益增多,人们已经认识到已知的 APT 攻击的许多攻击细节,以及常见的攻击步骤。 不同的安全厂商和安全机构从各自的特长出发提出多种检测 APT 的策略,方法和工具。 目前利用沙箱检测恶意代码的行为已经成为 APT 检测的主流手段。 同时,APT 的进化还在持续,利用新技术逃避沙箱检测的 APT 案例经常出现。 因此,需要分析这些逃避沙箱的技术,找出现有 APT检测沙箱的不足,提出有针对的改进措施。

沙箱检测技术是一种应对 APT 通过零日漏洞发动攻击的有效方式。 利用沙箱接管调用接口或函数行为,通过重定向技术把程序生成和修改的文件定向到自身的文件夹中,并会在确认病毒行为后实行“回滚”机制让系统复原。 通常使用沙箱检测技术模拟一系列应用程序行为和网络行为所产生的后果,再通过大数据分析来判定其是不是 APT攻击。

1 APT 的危险阶段分析

已知的 APT 生命生命周期可大致分为:准备阶段,初始化攻击,实施攻击,清理痕迹。 它们的具体活动特征可以概括出四个危险攻击阶段[1]:准备,入侵,交互,窃取。 通过对每个阶段的 特征和动作分析可以发现 APT 在攻击者暴露的几率,实施攻击的代价,被检测出可能性,实时补救的代价,防御手段的多少,取证调查的可能性等方面在不同阶段有着不同的等级(如表1所示)。

表 1 APT 危险节点分析

对于以上 APT 危险阶段的认识经历了较长一段时间,人们通过大量的安全事件分析,逐渐的揭开 APT 攻击的神秘面纱,同时又有针对和侧重的提出相应的检测手段。 随着认识 APT 的过程不断完善的,相应的检测手段也在不断演进。

2 APT 检测手段的演变

最早的 APT 检测是在传递和 C&C 阶段进行内容过滤,在传递和提升权限阶段进行反恶意软件,在利用和 C&C 阶段进行入侵检测。 这种传统的真对特定阶段的检测,往往可以发现些单一入侵迹象,但是单一迹象很难说明整个攻击事件的影响范围,也很容易混淆视听。随后发展到对于整个攻击链的调查取证和对传递阶段的着重侦查发现。这种花费大量时间收集去证明攻击发生的方法很难对攻击造成实质性的打击,避免不了类似的攻击造成的损失,同时在调查取证过程中如果失去捕获其中一个阶段的证据就意味着失去全部。

到目前为止,基于 APT 的检测的手段有很多,侧重点也五花八门涵盖了APT攻击生命周 期[2]的各个阶段。 沙 箱 技术也在下一代 APT 检测中扮演核心角色,利用沙箱对主机中运行加载类似 PDF、 OFFICE、 EXE、 DLL、 ZIP、 FLASH、 JavaS-cript、HTML 对象等的负载后的行为进行分析, 并标记出可以行为。 目前基于沙箱技术的 APT 检测技术越来越被重视,同时逃避沙箱检测[3]的 APT 的样本也逐渐增多,新型 APT 的沙箱回避技术正在被广泛研究。

3 新型 APT 的沙箱回避技术

通常的,沙箱系统被看作处理许多的恶意代码样本和分析检测攻击案例的起始。 由于许多人会把沙箱和虚拟机混淆,可能使得许多公司将虚拟机当作沙箱使用,在个人用户终端这种想象更加普遍。

越来越多的 APT 攻击案例表明,黑客们正在编写新的恶意代码,这种恶意代码可以通过寻找沙箱在系统内存、正在运行是的程序、注册表和文件系统中留下的典型特征来判断是否有沙箱正在运行,从而采取相应的手段逃避沙箱的检测,这种行为成为沙箱回避。

新型的 APT 设计越来越精巧,利用沙箱系统工作原理和本身的缺陷和沙箱在检测 APT 中恶意代码行为中的普遍应用,想方设法逃避沙箱技术的检测。 常用的沙箱回避手段有:人际交互[4],特殊配置,特殊环境,典型的虚拟机系统等。 甚至,有些恶意代码经常利用注入到其他的程序中的手段来避免被沙箱系统发现( 例如 iexplore.exe)。 同时, 它们还通过创建一些用于达到其它目的的子进程来逃避检测。

3.1 人机交互

通常在沙箱系统环境没有鼠标移动和对话框弹出关闭等人为操作,APT 通过判断入侵系统中的有无鼠标的点击和对话框的弹出判断自身是否出去沙箱的环境中。 这种 APT 在入侵到目标系统之后就会一直处于潜伏状态,直到它们检测到目标系统中有鼠标移动、点击以及对话框的智能反应等人机交互的情况时,它们才开始执行恶意代码。

3.1.1 鼠标点击

恶意代码是利用 0x0E 作为参数值,去调用安装在挂钩程序WH-MOUSE-LL 中的 SetWinodwsHookExA() 函数,从而实现对低级别的鼠标输入的监控。 当鼠标被单击时,会通过关联指针 fn调用 UnhookWindowsHookEx()函数停止对鼠标的监控,然后调用sub-401170()函数执行恶意代码(如图 1 所示)。

图1 恶意代码监视鼠标动作后执行流程图

一些与 APT 相关的恶意代码,利用这种技术不断进化出其它更高级的逃避沙箱技术[5],例如通过设置鼠标点击后的延时在察觉到有鼠标点击之后的一段时间内才会执行恶意代码或者增加循环计数功能在检测到鼠标若干次单击后才会执行恶意代码。甚至有些恶意代码会检测鼠标的移动方向,只有在鼠标向特定的方向移动后才会执行。 有些恶意 PDF 文件只有在用户鼠标向下滚动到特殊的页面是才会被触发执行恶意行为。这些恶意代码的隐蔽性更高,更不容易被察觉,从而很容易的逃避沙箱系统的监控。

3.1.2 对话框

APT 恶意代码会在应用程序和动态链接库中利用 MessageBox()和 MessageBoxEx()这两个应用程序接口创建对话框。 恶意代码只有在用户点击按钮之后才会执行。通常弹出的对话框是警示性的对话框,只有当用户点击弹出对话框上的“确定”按键时,说明恶意代码已经在真实的目标系统中,这时恶意代码被激活和执行。

图2 开启对话框的 JavaScript恶意代码

例如,恶意代码使用 JavaScript 的 app.alert()来开启 Adobe Acrobat PDF 文档内的对话框( 如图2所示),当使用者点击“ 确定”时,恶意代码会使用 app.launchURL()方法开启恶意的 URL。

3.2 特殊设定

越来越多的网络攻击者已经开始关注有关沙箱系统的配置[6],并利用这些配置参数运用一些手段有针对的逃避检测。

3.2.1 睡眠呼叫

由于沙箱要检测大量的加载文件,因此在对单一文件的检测时间是有限的,邮箱恶意代码会设置睡眠时间,延时执行恶意行为从而避免沙箱的检测。 研究发现恶意代码 Trojan Nap 可以延长睡眠时钟[7],等待沙箱检测完之后再执行代码。 代码利用超时变量参数 0x0927C0(600 秒,10 分钟)调用 SleepEx()使得在 10分钟之后恶意代码才可以被执行。 10分钟的时间大于大多数沙箱检测文件样本所需的时间,这样恶意代码的行为就不会被沙箱发现(如图3 所示)。

图3 Trojan Nap 调用 SleepEx() 的方法

3.2.2 时间触发器

同理,为充分利用沙箱检测个体文件时间的有限性。 很多情况下,恶意代码就像一颗“定时炸弹”,它会利用时间触发器功能和睡眠唤醒功能共同作用,使得在时间没有到达预置的时间时,恶意代码将不会被执行,从而避开沙箱的监控。

例如恶意代码 Trojan Hastati 利 用 GetLocalTime()应用程序接口获得系统的当前时间,如果获取到的当前时间没有到达恶意代码设置的时间,恶意代码将会睡眠等待一段时间之后再检测时间,如此往复循环下去,直到到达设定的时间为止(如图 4所示)。

图4 触上条件没到恶意代码继续睡眠

3.2.3 执行路径

通常沙箱是将文件拷贝到根目录下并在根目录下执行相关的操作,这点和实际工作环境下[8]有所不同,在实际工作环境下是根据用户选择的目录下进行操作,很少在根目录下执行。 这时恶意代码就会利用 mmioOpen() 和 GetCommadLineA() 这两种方式(如图 5 所示)在 Windows 应用程序接口中辨别代码是否在根目录下运行。

图5 恶意软件运用 mmioOpen()功能检查执行路径

相比 mmioOpen() 而言,GetCommadLineA()的使用更加容易理解,这种方法是通过检索当前命令行字符串[9]实现的。 当命令行的字符串只出现一个反斜杠时就可以认定文件是在根目录下被执行的,例如:“C: /filename.exe.”这时恶意代码就终止或不执行,从而逃避沙箱的检测。

3.2.4 隐藏进程

基于文件的沙箱是通过监控所有正在系统中运行的进程来识别出可以的恶意行为。它是通过微软提供的一个名叫PsSetCreateProcessNotifyRoutine 内核指针完成的。 随着这个内核程序的运行,Windows 上包含一个用来接收已经注册的反馈的数组。

恶意代码 Pushdo 运用拆解工具从内核中提取出 PsSet-CreateProcessNotifyRoutine 指针,通过这个指针就很容易的移除数组中的所有安全软件的反馈,一旦这些反馈被移除,恶意代码就可以 创建和终止进程而不会被发现(如图 6 所示)。这样,那些运用沙箱的杀毒软件就不会得到恶意软件运行时产生的警告通知。

图6 恶意代码检索 PsSetCreateProcessNotifyRoutine 指针

3.3 特殊环境

许多恶意代码都是在特定版本的应用或操作系统中利用特定漏洞执行的,而所有的沙箱系统都有预先设定的配置环境,如果沙箱没有特定版本的安装应用,那么有些恶意的 Flash 文件和PDF 文件就不会下载,这时沙箱就检测不到恶意代码。

同时,这些恶意的 Flash 和 PDF 文件就是恶意代码通过编码手段嵌入到 PDF 和 Flash 文件中,进一步逃避沙箱检测,甚至有些恶意代码为了逃避沙箱还会做 DLL 加载检测,通过计算负载的 Hash 值来判断是否需要加载。

3.4 经典的虚拟机系统

沙箱是一种虚拟环境,利用对典型虚拟机环境的检测,恶意代码可以从操作系统枚举注册表键值中的所有磁盘名称。如果注册表键值中的磁盘名称存在于系统磁盘名称中,恶意代码就可以判定自己运行在虚拟环境中,从而不会执行恶意行为。

另外,恶意代码[10]还通过对经典虚拟机的系统服务、自带的特殊文件、VMX 通信端口等一些指标判断自己是否在虚拟的环境中,从而尽可能的躲避沙箱的检测。

基于 Andriod 的恶意代码通过函数调用来判断所处的环境是否是虚拟环境。 例如通过调用 isEmulator 函数检查设备的MODEL 值(谷歌 ADTbundle 模拟器的 MODEL 变量会含有字符串“ SDK”)来判断是否正在 Android QEMU 模拟器下运行 ( 如图7所示)。

图7 isEmulator 函数的相关代码

3.5 循环运用多种逃避技术

新型的 APT 综合运用多种沙箱回避技术,既保证自己的行踪不会被沙箱检测到,又保证已经加载在系统中的恶意代码尽快发挥作用,避免因长期驻留系统中而被反恶意代码软件发现。这种综合的手段是以感知到的外部情况(虚拟机环境,人机交互,执行路径等)为条件,循环调用“睡眠回叫”技术,最终在满足以上条件后以隐藏进程的方式实施恶意行为(如图 8所示)。

图8 循环运用多种逃避技术流程图

4 现有 APT 检测沙箱的不足

越来越多的恶意代码具有交互性、耗时性和智能性。 交互性使得它们在遇到特定的人机交互操作后才能执行;耗时性有助于逃脱自动化分析系统的控制;智能性可以感知所处的环境从而隐藏自己的恶意行为。 利用恶意代码进行攻击的 APT案例越发频繁,暴露出现有的基于沙箱的 APT 检测存在一些不足:

第一,现有的 APT 检测沙箱对加载的负载检测时间是有限的,做不到长时间的跟踪检测。

第二,现有的沙箱技术不能有效应对恶意代码对目标系统和应用的版本检测,也无法检测出嵌入文件式的逃避和动态链接库DLL 加载检测逃避技术。

第三,针对利用系统特殊的 API和函数的沙箱逃避技术,有些的 APT 沙箱检测解决方案中对调用类似这些特殊 API或者特殊系统函数的程序定义为恶意代码,这种处理方式会导致误报,因为相关的 API和系统函数也会被运用在正常的程序中。

第四,现有的 APT 同时具备很多种沙箱逃避技术并进行有效的综合利用,而现有的沙箱还不具备发现这些所有逃避的能力。 对于大多数的沙箱通常只具有个别的手段可以预防 APT 逃避沙箱检测。

5 新型 APT 检测沙箱

一款较好的沙箱应同时兼具更好的可视性和隐蔽性。也就是说,理想化的沙箱能最大限度的看清楚的恶意代码的执行步骤,同时又能不被恶意代码发现。 最初的沙箱采用的是用户模式的挂钩,之后分别向可视性和隐蔽性进化:第一,采用重视隐蔽性的内核模式的挂钩,这种传统的沙箱隐蔽性很好但可视性不足,用户不能够清楚的发现恶意代码的执行过程。 第二,采用调试运行的方式,形成了可视性很好但隐蔽性不足的虚拟运行环境。 恶意代码正是利用传统沙箱和虚拟环境的不足,逃避沙箱的检测。

云计算环境下的沙箱技术是通过拥有大量数据的云平台对计算机软件和移动端应用做深度分析,先让它们在云沙箱中执行一次,获取其真实细致的行为信息,从而在短时间内全面检测一款完全未知的计算机软件和移动端应用的可疑行为和安全性,而任何行为或者病毒攻击都将被局限于云沙箱中,保障用户使用的系统本身是完全安全的。 结合对逃避沙箱的技术手段的剖析,提出基于系统仿真的新型云沙箱。 这类沙箱具有长期检测分析、目标仿真、弹性的云计算环境部署和强大的攻击样本库等特性。

首先,设置多次返回检测的方式有效的解决恶意代码通过设置睡眠逃过检测的问题;同时配合响应的出发机制,保证恶意代码在刚执行的第一时间就能被沙箱发现,从而达到检测分析的效果。 其次,具有仿真人机交互能力,并通过定制设置在系统中加入移动鼠标、点击鼠标、点击对话框等程序模块;使得恶意代码察觉不出运行的环境是虚拟环境。 再次,根据不同网络环境的需要,设置不同的功能和检查粒度,从而更加有效的部署在云计算环境下的云沙箱检测平台。 最后,以集中存储分发共享的方式处理攻击样本,形成强大的样本特征库,有助于更加精确快速的检测。

6 结语

目前基于沙箱的 APT 检测技术越来越成熟,已经被很多安全产品集成。 同时,APT 针对沙箱逃避技术的认识和探索远没停止,随着 APT 检测技术的进步,越来越多的攻击案例将会出现,基于沙箱逃避技术的恶意代码更加多样。 只有认识现有的逃避沙箱的细节,发现未来可能发展的趋势,同时对现有的沙箱检测技术不断的更新和完善才能更有效的应对类似 APT 的各种攻击。 另外,针对沙 箱检测如何提高检测的准确率,减少误报也是沙箱检测 APT 系统的研究方向,整合大数据平台[11]构建关键证据链式的检测技术是应对未来不确定的持续性威胁的较好出路。

[1]HBGary.The New Battle Field Fighting and Defeating APT Attackers in the Enterprise[EB/OL] .[2014-01-15] .https: // hbgary.com/community-whitepapers.

[2]黄达理,薛质.进阶持续性渗透攻击的特征分析研究[J].信息安全与通信保密,2012(05):87-89.

[3]Gartner.Gartner:“ 五种类型的先进威胁防御(ATD) ” 助企业防御针对性的攻击[EB/OL].[2013-11-01] .http: //security.cnw.com.cn/htm2013/20131101-285578.shtml.

[4]AhnLab.Invasion of Malware Evading the Behavior-based A-nalysis[R] .America:AhnLab, 2014:2-7.

[5]Lastline, Labs.The Threat of Evasive Malware[R] .America:Lastline Labs, 2013:1-8.

[6]Abhishek, Singh, Zheng.Hot Knives through Butter:Evading File-based Sandboxes[R] .America:FireEye, 2013:3-14.

[7]Seculert.Advanced Threat Protection Solution[R] .America:Seculert,2013.

[8]Counter, Threat, Unit.Lifecycle of an Advanced Persistent Threat[R].USA: DELL,2012.

[9]Jon, Oltsik.APT Protection: Sourcefire FireAMP May Be the Right Product at the Right Time[R] .USA: Enterprise Strategy Group, Inc,2012.

[10]IMPERVA.Advanced Persistent Threat:[R] .USA: IMPERVA,2012.

[11]周涛.大数据与 APT 研究检测[J].信息安全与通信保密,2012(07):29.

APT based on Sandbox Avoiding

SUN Zeng,SHI Yong ,XUE Zhi
(Institute of Information Security Engineering, Shanghai Jiaotong University, ShangHai 200240, China)

Based on the cognition of the dangerous phase in the life cycle of gradually complex APT(Advanced Persistent Threat) ,the evolution process of APT detection means is described,the techinical details to escape the sandbox testing by ADT are analyzed. The existing APT sandbox test is not enough to deal with the new APT question, and in light of this and from the angle of APT sandbox avoiding, a new sandbox detection technology strategy is proposed in this paper.For the future evolution of APT, there may be a lot of new tricks, thus exploration and establishment of unified big-data analysis tracking network may be an effective way to find APT as early as possible.

advanced persistent threat;dangerous phase;detection means;sandbox avoiding;human-computer interaction;special setup

TP309.5

A

1009-8054(2015)01-0092-05

孙 增(1987—),男,硕士,主要研究方向为网络攻击防御、高级持续性攻击(APT);

2014-10-27

高级XXXX 技术研究( 秘密级)(No.CNITSEC-KY-2013-009/2)

施 勇(1979—),男,博士,讲师,主要研究方向为计算机网络、信息安全;

薛 质(1971—),男,博士,教授,主要研究方向为网络攻击与防御。■

猜你喜欢
沙箱对话框鼠标
正常恢复虚拟机
Bootlace Worms’Secret etc.
What Is Beauty?
Removing a stone
巧用沙箱检测文件安全
文件检测方法及沙箱
浅谈VB的通用对话框《CommonDialog》控件的使用
沙箱技术研究综述
鼠标折叠笔
45岁的鼠标