Brian+Jasiel+Abdul:$hell on Earth: From Browser to System Compromise

Brian:非常高兴能够和大家进行分享,我们非常期待能够收获很多。我们演讲的内容是浏览器到黑客大赛是怎么样进行演变的,我们怎么样来追踪,怎么样展望未来,怎么样能够使我们得到整个系统的妥协和进展,我们在过去的黑客大赛中进展怎么样,大家怎么样进行妥协,怎么样得到现在的水平。

我的名字是Brian,我是我们这个脆弱部分的主监,我们是把顶尖的技术部分,主要的关注就是把我们的趋势和项目做好。这主要是指什么呢?我们的研究人员在进行工作,实际上很多人在做现场,我们要进行探索和开发,我们和供应商,来帮助他们促进他们的产品,然后来保护整个生态体系,这是我们整个对脆弱的研究。

在内部我们要发现这个脆弱性,发现漏洞,减缓漏洞。25%的漏洞实际上是我们现在的这些同事们来发现的,我们实际上在过去修补了很多的漏洞,我们帮助了公司,实际上在整个生态链上进行贡献。

我们有开发的技术,我们和微软进行工作,我们实际上获得了微软最大的奖项ICE。我们也是第一个对这个漏洞的供应商,我们是微软2015年最大的供应商,我们希望今年能够供应更多。在去年实际上我们已经发现了这些漏洞,并且修复了这些漏洞。接下来让我的同事们介绍一下自己。

Jasiel:也是在这个研究室的工作人员,我在2012年就参加了这个项目,实际上2005年我就开始了这方面的工作,我是工程方面的研究人员,我们关注Flash软件系统,尤其是Windows页面的问题。我们和腾讯的科恩实验室也有合作。

Abdul:我是Abdul,我也是ZDI公司的研究人员。我过去的三年在这个个公工作,我们2005年就开始和他们合作了,我们主要是找到这些漏洞,并且修复这些漏洞。

Brian:在过去几年我们项目的发展,我们可以看到供应商实际上有很多的变化,他们有很多的需求,所以我们可以看到,这个演变的过程非常有意思,比如说我们黑客大赛的进展也非常有意思,

2013年我们开始黑客大赛,我们在2013年实际上这个标准或者是规定是变化的,比如说我们看到2012年的漏洞在哪里,2013年我们需要研究人员在空白的纸上跟供应商进行沟通,这样的话,每个人都知道我们在做什么,比如说他们使用的是什么样的技术,这样的话可以来执行这个减弱性。

这张幻灯片当中显示我们有不同的减弱的方面,在2013年所做的执行。一些比较早期的沙箱技术,还有Cookies的项目,2013年我们就把这个沙箱放到这个舞台上,我们就开始这个工作。我们要运营黑客大赛,我们要看到供应商的需求,他们还要减弱他们的问题。

在过去的几年,实际上供应商一直在建立他们的防御系统,我们看到了很多有意思的事情。2013年我们可以看到这个技术,尤其是在沙箱方面的技术越来越强了,我们开始了强有力的技术,我们可以看到这个趋势。

人们可能绕过这个箱子,直接到内心。2014年实际上使用了这方面的应用,2016年更多的我们看到这个漏洞在进行保护,比如说在记忆的保护方面,我会和大家分享一些事例。比如说有一些分隔、断开的堆。

2015年我有一些倡议,我们可以看到有很多的Zero Day的项目供应商,微软对于减弱这个项目的使用是非常有影响的。我们在减弱项目之前,一天之后会有很多的影响,以后的漏洞就不能再被攻破了。所以实际上我们的趋势对于整个的变化或者是这个演变都会有变化。

我们来执行这种防止攻击方面的影响,我们要把它断开。2014年我们可以看到一些成功的减弱案例,它们使用这些自由的项目,比如说Flash,还有插入的项目。这些利用实际上是在做Flash的时候他们一直在使用的。

看我们的Pwn2Own黑客大赛,在2013年开始介绍了沙箱,可以看到大家在利用这个沙箱,一直到开发这个核心。我们就会进行一些追踪,我们鼓励大家来追踪这个核心,而不是去重视这个沙箱。Jasiel和Niel他们赢得了这个项目,在Google的浏览器方面发现了这个漏洞。

2014年的Pwn2Own大赛我们是Sebastian Apelt,他是德国的选手,他们在英特网的Explorer浏览器上,逃跑了这个漏洞,这样的话,他就赢得了2014年的大奖。所以我们可以看到,越来越多的参与人来追踪这个核心,

从2014年到2015年,我们可以看到,腾讯科恩的团队他们追踪的是Flash这个体系,他们做缓冲的溢出,是这个Flash的体系,所以有不同的竞争环境。他们赢得了这个大奖,是非常有意思的。

2016年的Pwn2Own大赛我们可以看到这个变化,每个人都重视系统了,于是进入了非常高的关注度。我们现在要给大家分享一些案例,怎么样找到这个漏洞,怎么样使用这个漏洞,给大家展示一下,然后我们再介绍我们看到的这个趋势。

首先我们说Apple Safari这个领域,给大家介绍一个视频。现在做什么呢?我们可以看到,实际上我们有四个Zero Day的漏洞,我们给每一个竞赛者。可以看到,实际上有很多混乱的一些情景,有很多东西跳出来,有很多计算,有很多展示,比如说使用者展示这个漏洞,有四个方面。

一个就是在Safari,在流程过程当中沙箱的问题,然后是在嵌入的过程中,有这个漏洞。在Apple Safari,一个漏洞就是在追踪文章方面的漏洞。我们可以看到,如果这个存在的话,就会被召回,在我们的程序过程中,我们要利用这个漏洞,利用我们的技术来找回这个记忆。

有一些操纵和运营,找到了这个漏洞,找到了这个路径,我们要看到在这个竞赛过程当中有这样的情况,他们希望找到更多的漏洞,有更多的记忆,这样的话就可以找到密码,重新写一部分功能,然后开发、执行,之后进行解释,所以这是非常有意思的一个利用漏洞的流程。我们要得到通路,整个来获取这个记忆。

后面的步骤,我们可以看到整个溢出的流程,我们有目标的服务器,使用两个E的信息来达到这个功能,这样的话,把它的记忆进行分配,然后由控制的一端来进行读写,然后把这个数字进到这个缓冲,然后进行溢出。

所以我们在利用方面,实际上他准备了这个记忆,然后把这个信息发出来进行缓冲,整个系统进入这个链条之后是保护和执行。当有密码执行权限的时候,实际上也在做另一步,那就是要进入沙箱,要整个审视他做的内容。

实际上有很多的事情是绕过这个沙箱的一些步骤,我把这些步骤放到了这个PPT上大家可以参照。这个整个的进程实际上重心并不是这个沙箱,他看到了这个流程,实际上不是和这个沙箱有关的。

但是他看到了他需要这个环境整个的脆弱,然后来下载,这样的话可以逃离沙箱的限制,又通到其他的领域。在这当中做了变化,逃离的沙箱,建立了一个任性的目录。在整个过程当中,他实际上看到了内部的一个密钥,也就是说交出了Local的Folder钥匙,可以让黑客来写这么一个任意的目录。

他这样做是通过在Sudo的攻入体系当中,使用这个用户名、口令,口令比较短的话,可能你不需要就可以直接进入这个目录,然后进行更新,然后在整个项目中进行一些修改,允许他可以在整个的体系中进行运营。我现在邀请我的同事Jasiel来跟大家说一下Google Chrome这个浏览器的体系。

Jasiel:这个实际上更有意思,可能有更多的故事,我给大家放这么一个短片,可以显示这个漏洞。我们有Chrome的漏洞,还有Flash的Bug,这是系统的漏洞。这样的话,我们可以给大家整个的系统,然后要让这个系统来进行合规。

最开始的这个漏洞有的时候大家可能不是非常理解,这是2014年和2015年开始的,我们把这个漏洞告诉给了竞赛者,我们把这个信息提供给供应商。实际上这个漏洞Google已经知道了,竞赛的三天之前Google就已经知道了这个漏洞,我们又告诉了科恩实验室这个漏洞的情况,这是非常有趣的一个问题,我们记录了这个情景。

如果说有任何一些其他的文件,它的进入比较缓慢的话,它就可以通过这样的一种程序,然后去进行执行。它的接入其实是安全的,可能很多人觉得应该是安全的,但是事实上它还有四个元素是需要去关注的。在里面有很多的关于整个执行方面的一些需要去确定的,要了解到漏洞的一些利用功能。

我们可以通过这样的一种方式有一个恶意回拨的方式,它会把这个指令恶意修改。这样的话,就会改变他指令的长度。如果说他受到了这种恶意的攻击之后,就会在自由存储区内不断的执行指令。

还有就是从零这种恶意的回拨,会攻击到这些目标文件。还有很多具体的功能,就是给我们展示出到底有哪些内容是在这个存储区里面的。同时还有行列的缓冲区,它怎么能够更好的去配合这样的一些自由存储区,

现在Chrome的沙箱并没有起到什么样的作用,只是能够获得一些信息,在第二个Adobe的漏洞里面发起一个呼叫,而且他们还可以去计算这种DAL,他们利用这种随意的行列指令,最后达到了第二个Flash的指令。

在Chrome出现了漏洞之后,我们看到,其实一些漏洞并没有办法从Chrome的里面去接收到,这个漏洞本身会改变目标,而且会去改变这个机制,同时对于这个机制的目标可以进行改变或者是重新创建。

Flash AS2可以让你在Flash的环境下面去运行,而且如果你想要去获取机制当中的这些文件的话,你可以去创建一个新的机制。但是同时你需要确保你能了解到这个文件之前的原始状态。而且为了利用这样一些漏洞,我们也需要非常快速的采取这些行动。

他们获得了自由的存储区,而且在这个机制上面建立了重新的操作,而且他们可以通过这样一种漏洞的利用,能够获取目标文件的信息,这个也是在我们这样一个解码的方法里面有所涵盖。在解码的方法里面,如果说你有A=B等等,最后就会得到1到B等等,接下去是这样一个排列。

这样的话,我们就可以不管在什么时候,这个文件首先改变了,我们可以在其中插入一些属性。比如说你在解码的时候,也可以去打断它的一些执行,就像这些漏洞一样,它也是通过把它应用一些小短片的一些实体,然后去进行干预。在那个时候,可能我们没办法很多的去接收到其中的一些信息。

但是如果我们已经成功的进行了这种拨叫的话,我们就可以利用这样一个能够确定的目标文件进行进一步的目标定制化。而且还可以用他去改变整个指令的长度,进一步通过很直接的方式来执行一些指令。其实我们有一些用户免费使用的方法,微软的Windos的Win32也是把DWM进行辅助,可能会遇到很多障碍。

为了利用这一点,我们也是可以通过使用这样一种催化加速器的表格,然后去配置加速器表格的目标物体,而且我们还可以通过这种Bitmap的目标来进行存储的访问。把这个过程当中进行很多的迭代,然后找到相应的Bitmap目标进行读写。

其实漏洞也是我很喜欢去研究的一个方面,我们可以去播放一下这个动画。这个文件里面有一些内核信息的泄漏,这里面的一些漏洞可以看到是被激活了很多次,这里面有一些命令,好像就是这个系统在执行的指令一样。

我们都知道这是一个非常重要的需要亟待解决的问题,其实这种解决方案是可以免费进行下载的,也是不断的进行IT参考架构的改善,然后把它进一步的改善解决方案。因为有的时候我们很多人忽视了,我们把Google项目Zero Discovery的项目应用在里面,我们可以看到里面有一些功能,有很多的箭头。

如果说是A3大于0的话,最后得到的是少于16的这样一个值。如果里面有A3大于0或者是A3大于16,这个我不知道到底是怎么样得出来的。我们看到有几次激活了这样一个漏洞利用的机制。

在这里面使用了一种手段,可以去伪造一个目标的指令,也可以在这个基站上面修改两个不同的目标。一个就是要通过这样一个指标的升级,在第二个物体里面去升级指标,另外一个就是他可以自由的进行读写。

我们看到这里面如果他发现了这样一些PFF目标的话,他们就可以跟这个基准进行一个对比。怎么能够把这个PFF的目标跟它进行一个对标,首先需要知道它是不是释放了一些资源,我们看到源代码的右边,PFF的目标是这里面一个特殊的版本,你可以去检查。

如果说它是0的话,就会回到实际的值,就不是自由的调度资源了。如果说不是这样一个真实的目标文件的话,他就不可能再回到0的这个值。所以我们通过这样一种方式,也没办法完全的确定到底这个资源是不是自由的进行调动的。

还有关于这个漏洞利用,我们也可以去释放PFF目标的资源,我们也可以通过这样的UserConvert的方式重新获取自由的存储,我们可以用一个原始的值,就是在2之内的这样一个值,然后去增加WND目标额外的比特大小。而且还可以用内部InteralGetWindows的读取文本进行任意的存储。

接下来我想请Abdul进一步来讲一下微软的Edge。

Abdul:第一个就是这个系统,可以给大家播放一下这个动画,第一个就是Edge漏洞,JavaScript引擎发出的,我们可以通过这种Server来介入这种系统,我们可以看到,它可以接入到CSD系统里面去。

第一个就是说我们要去看一下它怎么能够去定义堆栈上面的一些信息,在这里面有一些相关的目标,可以把一些相关的信息加入到这个阵列里面去。对于激发器,其实还是挺简单的,对于每一个目标来讲,我们都可以把它进行一个认证,我们还有一个信息。我们用同样的技术,在2015年的时候去利用这样一些绕过的方式。

为什么说这样一种技术可以通过Java系统的升级来实现?我们这里面可以激发一些特别小的,重新来去激活这个Bug。你拿到这样一个参考值,最后你可能也知道在这个里面是可以追溯到这个目标的数值。

就像所有的这些布局一样,我们这里面很多的数据,这些目标可以被用于一个参考,使用这样一些漏洞,可以去作为一个参考来找出到底这个目标的漏洞在哪里。

我们的一些利用步骤就是可以去读写,而且这些数据浏览的目标记忆也是被释放出来,而且可以被使用Native Flold的目标来进行填充。我们在微软的Windows里面有一个诊断的机制,是一种标准的集成跨越,标准的这种收集器是一个系统集的COM的服务,

而且这种通信可以在微软的Edge的沙箱里面进行,这个COM的接口可以把Agent的功能进行两个放大,来进行接入。比如说DLL的路径,还有GUID,DLL的路径现在是没有办法经过验证。

另外一个就是关于Keenlab的系统,这个也是很有意思的一个案例。而且它也是通过通过检查源数据来进行发现的,我们播放一下这个动画片。在这里面我们看到有两个Bug,一个就是界外的一些接入,这样的一个长度是来自长度的属性获取的,而且它的长度属性也可以在某些情况下来进行覆盖。

基本上说,我们可以通过界外的这种接入来看一下,这个案例里面,其实它的长度主要是从长度属性里面来获取的。而且他在这里面也是有相关的这些指标,如果说是短于某一个长度的话,我们就可以去看他到底是静态还是外面的接入。

我们还有UIA的目标,不管是多大的大小,这是非常关键的,这个会有非常好的结果。我们最主要的用卫星的热,要有第二级的项目,也就是说,要促进这个漏洞,要增加它的价值,我们有这个目标,然后修改这个目标,达成我们的结果,所以这个方法我们也是经常使用的。

接下来请Brian来讲一下结束语。

Brian:最后我想说的是,在过去的几年中我们看到越来越多应用的浏览器和沙箱,我们看到一些沙箱实际上越来越强有劲了,有的时候大家可能会忽视,总是看到Kernel的这个漏洞,所以我们可以看到越来越多的修改,越来越多变化,我们有Chrome浏览器正在使用新的应用,我们对于我们黑客的利用可以到修复系统。

我们的利用可能是越来越难了,因为我们在整个的演讲过程中可以看到,在2013年实际上可能在减缓过程中只有十几个、二十来个,现在我们看到这个漏洞的情景有很大的变化,有可能不仅仅是十几个了,可能有更多的减弱的情况。

比如说在下载或者是使用过程当中,这个漏洞的减缓实际上应该是越来越难了,对于漏洞的利用者在解释口令方面或者是密码方面是越来越难了。但是并不是说不可能,我们要有不同的项目来理解我们的漏洞。

漏洞是什么?比如说在保护我们的客户,我们有不同的技术,这样的话,让黑客更少的来找到他们的路径,我们在保证卖产品的过程中首要保护的是安全。

今年我们有一个项目,就是我们对整个过程的记忆,我们进行书写。要找到这些有意思的趋势,比如说大家利用漏洞的突发点是什么,看这个沙箱的利用情况,有的时候并不是这个记忆的漏洞。

所以我们可以看到这个核心,不仅仅是Windows,也有其他的系统漏洞。我们可以看到漏洞方面的研究,还有利用的研究越来越普遍了,很多的人来关注这个漏洞的市场。这样的话,可以激发世界上各个国家的专家来进入这个研究。

有不同的漏洞项目来找到漏洞和修复漏洞,这些研究人员所做的就是进行投资,他们可以做更多的研究,找到更多的漏洞,我想这是一个好的现象,我们在过去的十年一直和这些研究陈源进行工作,可以看到这些研究人员的洞察力,我们给他们基金,和供应商进行合作,这样的话我们的产品是安全的。

在这个项目之初,实际上我们已经修改了差不多三千多个Zero Day的项目问题,不仅仅是软件,而且是硬件在我们整个的生态体系中,我们实际上是非常骄傲的来修复这些漏洞。

我们看到我们的做法实际上是一个团队的工作,有的人在Kernel比较专长,有的人在Edge比较专长,有的人在Flash比较专长,我们要激发他们的能量和潜力。我们看到不同的场景和场景的趋势,有一些可能越来越强,我们希望这些软件能够继续发展。

我们是Zero Day Initiative公司,如果大家对这个项目比较感兴趣的话,也可以和我们进行沟通,我会给你们一些沟通和交流。所以再次感谢大家聆听我们的演讲,希望大家收获颇丰。

上一篇:微软邵江宁:供应链安全标准与实践

下一篇:Nicholas Dean Stephens:Automating Exploitation – Shellphish Style