【技术分享】在细节中捕捉恶魔 :提升Cuckoo沙箱捕获恶意Office样本行为的能力

https://p3.ssl.qhimg.com/t01d6465f87d626a2d0.jpg

PPT下载链接: https://pan.baidu.com/s/1i46t29f  密码: i7hm


问题

沙箱和恶意代码行为

APT

鱼叉式网络钓鱼攻击

沙箱:Sandbox是功能强大的用于观察可执行文件或客户端应用程序漏洞利用的行为的工具

Cuckoo Sandbox:最流行的开源沙箱环境

微软 Office 文档攻击技术

Office漏洞

在Office Word中执行IE漏洞利用

恶意的包对象

恶意的宏

微软 Office 文档漏洞

栈溢出:CVE-2012-0158、CVE-2010-3333

UAF:MS12-060

类型混淆:CVE-2015-1641

逻辑漏洞:CVE-2015-0097、CVE-2017-0199

微软 Office 恶意文档在 Cuckoo 中的测试结果

为什么选择Office文档:攻击客户端最常见的手段

网络行为

数据源:Real Word、最近6年、10,000 样本集、多个杀软报毒

http://p0.qhimg.com/t0102fda94332b30c3b.png

http://p1.qhimg.com/t013b7911e8811e1b97.png

针对微软 Office 攻击所使用的漏洞/技巧

http://p3.qhimg.com/t01b7246a50fce3abdb.png

结果

http://p5.qhimg.com/t019b109c0a85c32a8b.png

只有27%的样本表现出网络行为,其中大多数似乎没有触发漏洞

http://p3.qhimg.com/t0167854f69e3294e2d.png

失败原因

环境:不同的跳转地址、漏洞攻击必要模块缺失

交互操作:弹框、恶意包对象

加密:打开/修改 密码、延迟触发、劫持 程序/操作系统/键盘、错误的打开模式、文件类型识别、参数错误

不同的跳转地址

跳转地址用于连接漏洞和shellcode

操作系统:Windows XP/7

系统语言:Japanese、Korean、Traditional Chinese、Western

Office版本:Office 2007 en/cn

我们收集的多种跳转地址

http://p6.qhimg.com/t01fe0e5b04c6c6777e.png

我们收集的多种跳转地址

http://p4.qhimg.com/t01a04f4afa64a369ed.png

缺失漏洞利用的必要模块

比如一些恶意RTF文档通过插入ProgID为otkloadr.WRAssembly.1的ActiveX/COM objects来加载MSVCR71.DLL以用于绕过ASLR/DEP

DLL 信息

http://p6.qhimg.com/t01a643c7224b5eb58a.png

一些攻击需要交互

在RTF文档中插入未使用关闭标记“}”的“{objdata”,可以绕过沙箱检测

当沙箱打开这类文档时,Office将弹出窗口通知用户“内存不足”,目标用户必须单击OK按钮才能触发该漏洞

沙箱无法打开受密码保护的文档

设置Office文档的打开密码以加密文档内容

设置Office文档的修改密码并不意味着文件内容将被加密,但打开文档时,您将需要输入一个密码。

劫持应用程序、操作系统

在注册表中添加启动项   

劫持IE,和方程式组织使用同样的攻击技巧

劫持键盘(未公开)

劫持操作系统(部分未公开)

http://p2.qhimg.com/t0178b9f7033deb11eb.png

插入恶意的EXE包对象
Office文档中插入EXE包对象,诱使目标手动运行可执行文件,沙箱无法智能地执行嵌入的EXE文件
PPT中插入EXE包对象,并使用动画触发执行
其它

Office 宏
很多恶意样本利用宏执行代码,但Office对执行宏有提示,沙箱无法自动处理所需的交互

未正确关联的Office文档类型

MS Office支持XML格式文档,但Cuckoo不识别此类文档,所以不知道使用什么应用程序打开

Word XML header

http://p2.qhimg.com/t01e10cb8cb06df5586.png

错误的打开模式

一些恶意Office样本通过使用MHTML等格式来绕过检测,如果我们直接将文件名当做参数传递给WinWord.exe则无法触发漏洞攻击,在这种情况下需要通过DDE传递参数

Cuckoo打开一份Office文档时未考虑参数情况

http://p7.qhimg.com/t0171620642cd2a64d3.png

在一个操作系统下模拟所有的跳转地址

在代码页文件c_936.nls/unicode.nls中找到所有的跳转地址并填充opcode

在Office进程空间中申请/修改常用的跳转地址并填充opcode

需要修改的NLS文件以及需要填充opcode的跳转地址

http://p6.qhimg.com/t017aad747e7dc0a232.png

在加载ntdll.dll后挂起Office进程

在此时的Office进程空间中申请/修改常用的跳转地址并填充opcode

http://p5.qhimg.com/t01b48ae69686661703.png

导入指定的模块

为了让Office能顺利加载MSVCR71.DLL,我们将MSVCR71.DLL拷贝到沙箱中,通过修改IAT的方式让Office应用程序启动时加载MSVCR71.DLL

持续更新dll列表

模拟键盘/鼠标输入

部分需要模拟的操作

http://p8.qhimg.com/t016cc51888426ec7d4.png

解密用Office默认加密算法加密的文档

5个字节(40bit)的秘钥

所有秘钥的可能性为 240 (or 1099511627776) 种

被加密的doc和xls文档流中某些字节固定不变的

秒破

删除Office文档的“修改密码”

DOC/XLS/PPT : 修改特殊标记

Office open XML format :删除密码标记

RTF


解决方法

监控应用程序&系统劫持路径

如果沙箱检测到重写注册表启动项或者劫持系统的行为,则执行相应启动项或者打开被劫持的软件,例如IE

所有的监控点是我们长期研究各类攻击积累的,某些无法在sysinternals的autoruns工具或者其它安全工具中被检测到

监控所有软件&系统劫持路径

一些监控点

http://p8.qhimg.com/t01ce781bc739dcb9b2.png

启发式检测嵌入的EXE

解析复合二进制、Open XML、RTF等格式的文档,提取其中的EXE,并主动执行

http://p0.qhimg.com/t013aaa590eb9fae63e.png

允许默认执行宏

http://p9.qhimg.com/t013e6ad8dcaada3cfd.png

修改打开模式

首先,我们需要确定所有可以通过Office应用程序打开的文件格式,如doc、rtf、docx、MHTML、XML等等
然后,修改关联的文件扩展名,最后用shellexcute()打开。

比如对于MHTML格式的Office文档需要修改为doc后缀使用ShellExcute打开,这样系统才会在注册表中获取正确的参数传递方式。

改造后的沙箱样本执行流程

启发式检测

程序环境修改(code page、regedit、内存占坑、引入DLL)

交互式操作

监控启动项应用程序系统劫持


效果

极大的提升

我们把10,000个Sample放到沙箱里再次运行,结果表明,78%的样本被捕获到网络行为。

https://p5.ssl.qhimg.com/t0110b7df1d8b0b230c.png

未知的 Exploit

劫持IE,与方程式组织使用相同的劫持伎俩

劫持键盘输入,未公开的攻击技巧

在 MS Word 中执行IE浏览器的漏洞利用

和国外知名沙箱对比

https://p1.ssl.qhimg.com/t01ac0642a48d8816b7.png

https://p2.ssl.qhimg.com/t019c70caa8958bd4da.png

https://p0.ssl.qhimg.com/t01e063d796ff8f1d30.png


结论以及未来的工作

结论

该方法解决了漏洞触发的一些问题,如环境、交互操作、加密文档、延迟等

我们的方法也可以用来触发其他类型的样本的行为

未来的工作

Payload anti-anti-sandbox

Payload anti-anti-debugging


(完)