Katsuni理论介绍以及在沙盒和软件仿真方面的应用

Jonathan Brossard (Toucan System)

25/09/2013

我是谁 ?

-安全研究人员, 2005年开始发表一些文章.

-以往的研究:

BIOSes漏洞, Microsoft Bitlocker, Truecrypt,

McAfee Endpoint (Defcon 2008), PMCMA debugger (Blackhat USA 2011),

«Rakshasa » supply chain backdoor PoC (Blackhat 2012), 2 SAP notes (2013).

-HITB, CCC, Ruxcon做演讲以及培训...

-Hackito Ergo Sum 以及 NoSuchCon 研究会议的联合创始人 (France).

2013年在防毒软件业中的热点问题?

防毒软件业: 2013年趋势

-桌面杀毒软件已经是个过去式了

-人们将注意力放在能够检测0day的技术,例如沙盒技术

=> 仿真和沙盒技术是两个比较新兴的事物.

[1]先别笑.

这些是如何开始的...

CVE-2013-0640 (绕过Adobe 沙盒)

Adobe Reader 以及

Acrobat 9.x before 9.5.4, 10.x before 10.1.6, and 11.x before 11.0.02

20132月发生的,通过构造恶意PDF文档允许远程攻击者执行任意代码或者引起DOS

(内存崩溃) .

CVE-2013-0640

(绕过Adobe Sandbox )

他们的 «分析过程 »:

ROP shellcode如下: msvcr100!fsopen() msvcr100!write() mvvcr100!fclose() kernel32!LoadLibraryA() kernel32!Sleep()

在加载恶意库文件时,它会进入一个长休眠过程以确保在创建ROP链时所更改的整个栈不会 导致线程崩溃。

他们的 «分析过程 »:

ROP shellcode如下: msvcr100!fsopen() msvcr100!write() mvvcr100!fclose() kernel32!LoadLibraryA() kernel32!Sleep()

在加载恶意库文件时, 它会进入一个长休眠过程以确保在创建ROP链时所更改的整个栈不会 导致线程崩溃。

他们的 «分析过程 »:

ROP shellcode如下: msvcr100!fsopen() msvcr100!write() mvvcr100!fclose() kernel32!LoadLibraryA() kernel32!Sleep()

在加载恶意库文件时, 它会进入一个长休眠过程以确保在创建ROP链时所更改的整个栈不会 导致线程崩溃。

=>狗屁不通!他们知道利用代码是在干什么吗?

我猜

小憩5分钟就是为了绕过沙盒检测,哈哈

毕竟,它是一个牛叉的利用过程, 第一个去绕过 Adobe的沙盒技术...

这类方法是有缺点的 (恕我直言)

-擅长于寻找artefacts等玩意儿 (它仍然是«某些东西 »).

-但很难理解利用的过程中到底做了什么事情

话虽这么说...

沙盒技术的提高...

沙盒技术的提高...

沙盒技术的提高...

沙盒技术的提高...

我还没有找到一个十分合适的理由去让你在你公司的网络中加入一些没人能够解释的东西进去

注意: 缺少第三方评估

注意: 缺少第三方评估

注意: 缺少第三方评估

注意: 缺少第三方评估

使用沙盒技术的厂商所提倡的概念就是让假想敌不要看到所使用的技术。好吧,我同意这一点。

注意: 缺少第三方评估

但是这也意味着做安全的没有(无法?)进行第三方评估

在现实生活中, 通常都是需要这些做安全的进行严格评估的

Tavis Ormandi Pipacs也希望看一下Bromium的技术

注意 : 好吧, 他们不是Bromium的客户, 因此我们有了麻烦... 作为一个行业, 确实如此.

问题所在

(研究导向)

毕竟...

目前 «好一些的 » 思路:

-关联/分享更多的数据以创建信息不对称.

-为此, 目前绝大部分 (我所看到的允许他, 至少在非默认模式下) 解决方案允许恶意代码连向Internet [*].

[*]例如在敌人攻击时,希望通过将DNS/二进制校验信息进行关联的想法

真实的情况...

-在过去15年,整个公司的策略就是确保LANS, DMZs 以及internet的隔离.

-如今你在网络边界(代理、邮件网关、任何能够让沙盒存在的地方)给攻击者一个 临时shell ...

-同时在你DNS上发生了什么 ?

Katsuni-Kaminsky 攻击

(两全其美的方案)

-攻击者可以在一个沙盒内运行恶意代码.

-沙盒允许攻击者反向连接Internet.

-公司的DNS服务器被用作递归DNS服务器.

-攻击者可以衡量两个方面同时能够将来自网络内部和外部的喷射数据包进行同步.

=> 很明显这样做是很 «安全的 »...

更不用提...

-如果在沙盒中的恶意代码想办法攻击其他网络 other networks (say crowdstrike !) ?

-如果恶意代码向自己的网络中发送一个修改的版本 (smtp?) 为了更多的分析以及更多的 沙盒CPU时间?

=> 所有这些都只是实现的问题.

bugs放到沙盒中去

问题所在

-很多在线恶意代码的扫描引擎运行qemu (以及一些各类设备和自动化定制软件)

-用户根本看不到这些扫描的进程在干什么.

-这样的话,如果攻击者发起一个基于qemuDoS会怎么样 ?

bugs放到沙盒中去

(又名 : hacking 在线恶意代码分析工具... )

这样的bug确实存在...

Qemu 内部机理

Qemu 目标

-(快速) 二进制翻译

-二进制代码被翻译成被虚拟CPU执行的IR, 独立于主机.

-很通用,很快速,很好的可移植性,很酷!不可思议的工具!

-不过在分析恶意代码时是否很安全,有待考究?

Qemu 支持两个模式

-系统(全部)虚拟化

-内核仿真 (wine/Windows, linux).

虽然目前大多数实现都使用第一种方式,

但我们将关注第二种,因为它能保证更快的速度增强以及更好的攻击面 ;)

Qemu 框架

理解二进制翻译和内存共享

派对时间 !!

Qemu 回归测试...

Demos

总结

有趣的技术. 很酷的hacking工具.

这里仍然有很多问题存在于细节当中.

就我所知,尚未有第三方评估.

从博弈论上来看, 一个人最大的收益就是让别人使用某项技术,但自己却远离不要用它

Katsuni-Grothendieck理论能够很好的应对沙盒技术中的0day问题:

«这里没有两全其美的方案 ! »

很荣幸能够参会.

问题 ?