今年的OffensiveCon大会议题质量不错(附资料下载)

年前曾在微博上推荐过OffensiveCon 2019大会议题,议题列表与介绍可参见官网(https://www.offensivecon.org/agenda/),很多专注于漏洞挖掘与利用的干货分享,目前只有部分议题ppt公开,通过点击文末的“阅读原文”可打包下载(包含8个议题),包括ppt、paper和code。

会议结束后,Twitter上赞声一片,议题质量很赞。

本文主要聊聊已公开的一些议题,学习下思路。

议题列表

  1. 1. Modern Source Fuzzing 2. IPC You Outside the Sandbox: One bug to Rule the Chrome Broker 3. 3D Accelerated Exploitation 4. Bugs so Nice they Patched them Twice! A (Continuing)? Story About Failed Patches 5. Attacking Hardware Root of Trust from UEFI Firmware 6. OSX XPC Revisited - 3rd Party Application Flaws 7. Growing Hypervisor 0day with Hyperseed 8. Attacking Edge Through the JavaScript Just-In-Time compiler 9. Coverage-Guided USB Fuzzing with Syzkaller 10. Updated Analysis of PatchGuard on Windows RS4: Is the Mouse Finally Caught? 11. iOS Dual Booting Demystified 12. macOS: How to Gain Root with CVE-2018-4193 in < 10s 13. Reverse Engineering of Error-Correcting Codes 14. Glitch in the Matrix: Exploiting Bitcoin Hardware Wallets 15. Attack Surface of a Connected Vehicle 16. Bypass Windows Exploit Guard ASR 17. FuzzIL: Guided Fuzzing for JavaScript Engines

Modern Source Fuzzing

这是作者Ned Willliamson在353c大会上的《Attack Chrome IPC》议题的扩展补充,我之前还写过《安全研究者的自我修养》一文,里面介绍的就是作者提及的二进制漏洞研究的学习思路。

目前作者没公开这次会议的ppt,大家还是看353C的演讲视频吧:https://media.ccc.de/v/35c3-9579-attacking_chrome_ipc

IPC You Outside the Sandbox: One bug to Rule the Chrome Broker

作者已经在github上公布此漏洞的利用代码hack2win-chrome,点击”阅读原文“可下载到。

本议题讲的是Chrome沙盒逃逸漏洞,漏洞位于应用缓存(AppCache)子系统上,主要方便从本地读取数据进行离线浏览,访问速度更快,还能缓解服务器压力。

AppCache位于沙盒之外的高权限进程browser,沙盒内低权限的renderer进程通过发送IPC消息与browser进程交互的,当AppCache出漏洞时,就有可能逃逸出沙盒。

漏洞成因

这次的ppt写得比较模糊,没那么清楚,还是直接看patch diff:

移动CancelUpdate()函数到newest_complete_cache_=nullptr;之后,直接看看CancelUpdate里面的逻辑:

在调用AppCacheGroup::RemoveCache清除缓存时,newest_complete_cache_指向的是被销毁的对象,所以后面才要把它置空,但在销毁之前调用了CancelUpdate =>

AppCacheUPdateJob::~AppCacheUpdateJob => AppCacheGroup::SetUpdateAppCacheStatus => AppCacheHost::OnupdateComplete =>

SetSwappableCache

最后的SetSwappableCache用于设置新的交换缓存(swap cache),会引用到newest_complete_cache_,而此时它还未被置NULL,导致出现Use After Free漏洞。

漏洞利用:

  1. 【泄露地址】:使用与AppCache对象大小相同的net::CanonicalCookie对象来占用释放对象的内存,而CanonicalCookie对象开头是个cookie名称,即字符串指针,再从浏览器中读取cookie信息来达到信息泄露的目的,从而拿到可控数据的堆地址绕过ASLR。
  2. 【代码执行】:使用与AppCache对象大小相同的Blob对象对占用释放内存,再伪造AppCacheGroup对象,当它析构释放时,在~AppCacheGroup中会调用到已被填充控制的虚函数指针,再结合ROP绕过DEP,从而达到代码执行。

整个过程还是需要自己动手调试一遍才比较清楚,估计足够调上几天了,国内似乎也没有一遍完整的文章分析过该漏洞的利用细节,期待有人分享。

3D Accelerated Exploitation

该议题主要介绍VirsualBox 3D加速器的攻击面和漏洞利用,由于VBox是开源的,因此可以直接使用AFL 去Fuzzing,fuzz目标就是通过发送畸形chromium messages来触发漏洞。他们应该是自己写个构造发送消息的程序,输入文件即chromium messages内容,样本可能是收集550操作码的信息去构造,也可能通过hook去直接抓取真实数据作为样本,然后用 afl去跑。更具体的实现方式,作者也没细说。

MWR Labs这几年经常曝光一些Pwn2Own级别的漏洞,分享很多经典文章,还开源了不少Fuzzer工具,连ppt都做得非常工整,具有独特风格,哪怕没logo,你看一眼都能猜出是他们写的。具备牛X的技能能力,又乐分享,这点是比较难得的。

Attacking Edge Through the JavaScript Just-In-Time compiler

一直以来,chakra被曝的漏洞非常多,导致微软最终还是放弃了。

从今年开始,微软将打算把Edge的Chakra引擎改用Google Chromium引擎,估计最近这两个月就会发布,以后就可能没什么人再搞Chakra内核了。

这议题里面讲了很多chakra的js对象内存结构等基础知识,重点讲了JIT优化编译器的漏洞原理与利用技巧,整个ppt有120页,很多。

我没搞过chakra,未来可能也用不上了,有兴趣的同学可以看下,作者把exploit代码也公布了,我已附在本文的打包资料里面。

Coverage-Guided USB Fuzzing with Syzkaller

搞过Linux/Android内核漏洞挖掘的人,应该都知道Syzkaller这款神器,发现超过2500个内核bug,它是基于代码覆盖率+API调用模板来Fuzzing内核的工具,对于发现崩溃的漏洞,还能自动生成C代码帮助复现,是由Google的Dmitry Vyukov开发的,已在Github上开源多年(https://github.com/google/syzkaller)。

这次作者用syzkaller fuzz USB驱动共发现了80+个bug,它先开启kcov去收集代码覆盖率信息,写了两个usb操作的描述模板(vusb.txt用来生成usb消息,vusb_ids.txt用于提取与USB设备驱动相匹配的USB ID列表),ppt里面有链接,所有的usb fuzzer代码都已经嵌入到syzkaller项目里面了

整个syzkaller的使用过程就是先去寻找内核的攻击面,然后构造api调用模板,剩下交由syzkaller基于代码覆盖驱动的方式去Fuzzing,有点类似api fuzzing。只是这里作者又写了个USB内核模块,方便通过用户层发送USB消息去测试。

作者还专门搞了个树莓派来重现漏洞,演示通过USB去让Windows/Linux系统崩溃。

FuzzIL: Guided Fuzzing for JavaScript Engines

这议题最大的亮点在于:自定义一套中间语言IL,通过IL可以翻译成JS代码,然后通过变异IL来生成JS代码,与以往基于JS语法模板生成代码的方式不同。

直接通过一行行删除IL的方式来验证是否崩溃或产生新路径,以此用来精简样本。

整个Fuzzing过程如下:

作者未来会在github上开源(https://github.com/googleprojectzero/fuzzilli),拭目以待。

结语

点击”阅读原文“可获取议题的打包资料,除上述推荐的议题资料外,还有3个议题,包括”Bypass_Windows_Defender_ASR“、”macOS-How to Gain Root with CVE-2018-4193“,以及”OSX Privileged Helper Tool“,有兴趣的同学自行下载阅读。

本文分享自微信公众号 - 漏洞战争(vulwar)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大话swift

I Promise You

PromiseKit是一个简易的异步框架,让你更加自如的将精力集中去处理更加重要的事情上。PromiseKit是一个更加易学,更加容易掌控并且结果思路更加清晰,...

7420
来自专栏阿dai_linux

python-字符串处理

我们想把其中的日期改为美国日期格式'mm/dd/yyyy'.比如 2019-06-12 改成 06/12/2019 格式

12130
来自专栏大话swift

I Promise U 实践

上一篇我们基本解除到了Promise的概念,也了解了PromiseKit中的几个基常用的概念,这次我们就来个小实践:

10130
来自专栏秃头哥编程

『前端技术』相比后端是否只能打辅助?

论坛上人们经常会为前后端的问题展开撕 x 大战,很多时候问题的根源是没有定义好前后端的概念.

12540
来自专栏码思客

科幻电影看多了 碰到多维数组 请冷静一下

说在前面的话:其实越是基础的知识,讲起来难度越大,因为越是基础,它就越偏向底层,你看得到的知识就那么多,但是你看不到的地方有大量的你暂时不需要知道的知识,所以只...

9630
来自专栏奔跑的键盘侠

Python——云里雾里的生成器、迭代器

关于生成器generator,从字面上理解,就是能生成***的机器,的确它是一个很牛逼的机器,他可以生成很多我们需要的数据,比如全体自然数,好好想一下,能用哪个...

12150
来自专栏机器学习算法与Python学习

Python中正则表达式的巧妙使用

正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对于2,5,10,17,26,37这样的数字序列,如何计算第7个值,肯定要先找该序列的...

8120
来自专栏崔庆才的专栏

关于字符串处理,你真的全掌握了吗?

字符串处理是 Python 中最基本的操作之一了,但其实有些用法你真的可能没有注意到,这里分享一篇关于 Python 字符串处理的总结文章,希望对大家有帮助。

9630
来自专栏影子

java8 异步api、循环、日期

转载请注明出处:https://www.cnblogs.com/funnyzpc/p/10801470.html

20260
来自专栏国产程序员

onchange事件

22540

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励