52

MOSEC 2018大会速描 | 每年一度的“越狱秀”以及移动安全之远望

 5 years ago
source link: http://www.10tiao.com/html/291/201806/2651069921/1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

似乎每年的 MOSEC 大会都赶在上海的梅雨季节举办,斜风细雨为这场会议刻上了“满身风雨我从海上来,最后发现原来你也在这里”的烙印。早上 9 点,上海万达瑞华酒店三楼将近 500 人的会场已经坐得满满当当,入口处还陆陆续续有人进来。议题过程中,他们是演讲者和听众,议题结束后,他们交流、探讨,寻找老友亦或是结交新朋友。正如大会议题嘉宾 Xerub 在会议结束后接受采访所说,参加这类会议,最开心的就是分享交流,以及认识朋友。

当然,以 iOS 越狱著称的主办方盘古实验室所举办的这场会议,最让人期待的还是议题的干货,以及新的越狱工具。在会议上,第一个演讲团队——360Vulcan 团队就在现场演示了利用一套漏洞同时越狱 iOS11 和 12Beta 版的全过程。

跟以往一样,MOSEC 今年也设了 7 个议题,但在最后设置了一个“白酒CON”环节,现场没有议题安排的参会者只要喝下一杯白酒,就能获得上台演讲五分钟的机会,只要与安全有关都可以。这个环节不出意料地热闹,Luca、李康、陈良等大佬纷纷斗酒斗演讲,让人不禁想起了武侠小说中的武林大会,以酒会英雄的盛况。

手机浏览器中的远程代码执行 - Mobile Pwn2Own实例分享

两个Malloc的故事:Android libc内存分配器

构造你自己的iOS内核调试器

Shannon之旅 - Pwn2Own基带漏洞利用

Bread: 接踵而来的短信诈骗

粉碎栈:LTE智能手机的安全性

回顾苹果的iBoot

BaiJiuCon

议题回顾

议题 1:手机浏览器中的远程代码执行 - Mobile Pwn2Own实例分享

近年来,手机浏览器的安全问题一直是安全研究的焦点。大量的漏洞修补以及浏览器、操作系统层面的保护使得浏览器远程代码执行越来越难。在这个议题中,来自 360 Vulcan Team 的机位演讲者接力展示了他们为 Mobile Pwn2Own 2017 准备的(用上的和没用上的)浏览器远程执行漏洞,包括 Webkit JIT 漏洞、WebKit DOM漏洞、Chrome 的 JS 引擎漏洞。除了漏洞利用技巧本身,他们还详细介绍了Safari和Chrome JIT漏洞的挖掘思路及调试方法。

他们以通用漏洞缓解技术隔离堆(Isolated Heap)为例,讲述了针对这个机制实现的漏洞利用。目前,隔离堆已经成功运用于多个主流浏览器如Chrome、FireFox、Edge、IE等。2017 年下半年,WebKit代码中也开始引入了隔离堆机制,这引起了他们的注意。WebKit 中的隔离堆对于传统 Exploit 中的 Heap Spray,UAF占位、任意地址读写等方面均造成了一定的影响。在实现隔离的过程中,苹果忽略了某些难以注意的细节,对这些细节加以分析并关联到常见漏洞(如 use-after-free 等),就能实现成功利用。

在演讲的最后,他们在现场演示了利用一套漏洞同时越狱 iOS11 和 12Beta 版的全过程,赢得了热烈掌声。

议题 2:两个Malloc的故事:Android libc内存分配器

拥有 12 年攻防安全研究经验的 Shmarya Rubenstein 围绕着安卓 libc 内存分配器的两个 malloc(即 dlmalloc 和 jemalloc)做了分享。dlmalloc和jemalloc是Android用户空间使用的两个内存管理器,Shmarya Rubenstein 详细分析了两种 malloc 的实现、深入分配和释放的算法、数据结构的相关细节,讲解中还附带提供了几个堆内存可视化的调试器插件。同时,他还介绍了如何利用堆分配器控制内存布局,并以堆缓冲区溢出为例讲解具体应用。

其中,dlmalloc 是安卓较早采用的 libc 实现,自 1987 年开始实施,到 2012 年停止更新。dlmalloc 通过 segment 和 chunk 管理内存,一块segment当中包含若干块chunk。不同大小的 chunk 可以连续排布。dlmalloc 通过计算对象大小、从small bin 中找大小和目标相同的chunk返回、从small bin中找不小于目标的chunk返回等多个流程来实现小内存分配。

dlmalloc 停止更新之后,安卓开始使用 jemalloc 管理内存。jemalloc 在 2014 年五月开始引入 Android 5.0,随后被设置为默认的分配选项。jemalloc 管理内存时更加复杂,最大的管理单元是 arena,一共有两个,分别带有一个 lock。jemalloc 主要通过计算申请内存大小、从当前线程的 tcache 中找到合适的 bin、分配新 chunk 等流程来实现分配。

Shmarya Rubenstein 对 dlmalloc 和 jemalloc 进行了对比,对比图如下:

利用这些堆分配知识,可以操纵堆内存,让其按照预期方式排布,进而实现溢出等实际利用。

议题 3: 构造你自己的 iOS 内核调试器

Google Project Zero 团队的 Ian Beer 已经是 iOS 越狱圈的名人了。这次,他主要介绍了如何针对零售版的 iOS 设备开发一个内核调试器。lldb调ios内核应该是每个研究人员的梦想了,Ian beer通过一个内核任意读写漏洞,开启了本来深藏于内核中的硬件断点,每个syscall进入前会陷入他的代码,修改系统寄存器,开启调试。他现场展示了 iPhone 6s 的调试,从 arm 手册的异常寄存器讲起,还对比大家熟知的 x86 架构,深入讲述了很多细节。

议题刚开始,他就展示了一段 DEMO,只用几行代码就成功达到了目的。 Ian Beer 表示,在以前,可以通过阅读硬件说明书中关于断点异常的描述,以此为切入点去实现调试。但如今 ARM 64 中的内核 KDP 已经不能用了,无法设定内核断点;内核文本也无法修改,很难以此着手实现调试。但是还是有一些例外,或者至少找到一些思路。

Ian Beer 提出了一些问题:仔细阅读相关的手册说明,在 EL 1 层级找到硬件断点,然后让核进入无限循环模式。我们可以利用这个无限循环做什么?可以让循环停止吗?停止之后又可以做什么?按照这个思路,他逐步讲述了打造支持设置断点的本地内和调试器过程。同时,他还表示,如果能单步执行一个内核线程,也许就能从 WhatsApp 和微信等通信软件中获取信息 日志 GPS 等。这让现场的技术小白如我不仅瑟瑟发抖。

议题 4:Shannon之旅 - Pwn2Own基带漏洞利用

来自塞内加尔的独立安全研究员 Amat 曾在 2017 年的 Mobile Pwn2Own 东京的比赛中成功演示针对三星S8手机的基带攻击。这次他就重点讲述了整个利用过程。

Amat 表示当前针对智能手机主流的攻击集中在应用处理器上运行的软件,利用基带漏洞可以打破手机的基带处理器,在基带堆栈中导致远程执行代码的攻击。这是一个较新的领域。目前,高通、华为、英特尔等都使用基带通信,且所使用的是比较低层的语言,因此,基于这种模式可以探索多种攻击方式。此外,基带漏洞的影响更加重大,这方面的研究也比较有意义。

利用 Shannon 基带的主要过程如下:

从手机固件入手,利用调试工具强制从拨号编码中获取代码;

造成调制解调器崩溃;

手机关机重启;

在 IDA 中加载代码,通过逆向获取虚拟地址、Boot 代码等;

确定任务;

逆向、重置;

基于不同内存设置不同任务;

使用 OpenBTS 或 YateBTS 工具设置环境;

调试手机并最终进行代码解析

通过这些步骤,最终能实现利用。在现场,Amat 演示了一段 demo,不到一分钟的时间就能成功写入文件

议题 5: Bread: 接踵而来的短信诈骗

Google Play Protect 的软件/逆向工程师 Alec Guertin 围绕着 Bread 恶意软件家族描述了恶意软件短信诈骗的机制。由于苹果和安卓的权限机制不同,恶意软件在安卓端更容易拿到短信授权,进而发送诈骗信息。

2010年,第一个针对 Android 系统的恶意样本 FakePlayer 出现,可以在用户不知情的情况下发送短信。8年后的今天,短信诈骗仍然是一种流行的方式来为恶意软件开发者带来收益。不过,随着保护和检测机制的不断加强,恶意软件开发者想出了更多方法来躲避检测。

Bread 恶意软件家族是Google Play Protect检测到的最庞大的恶意软件家族之一。这一系列恶意软件利用多种技术绕过检测并欺骗用户。例如通过启动页面的虚假条款、欢迎通知等内容,诱导用户点击,但实际暗藏玄机,用户点击之后,不知不觉就中招,被获取短信权限,进而恶意收费。或者根据环境调整内容,劫持手机服务商,在活动 URL 中隐藏恶意信息,一旦点击就会直接发送收费短信。还有使用 Drafa 代码或服务器的 JavaScript 发送短信等。

Alec 表示,分析显示 Bread 恶意软件的主要用户群体集中在东南亚,而实际下载最多的地区也是东南亚(其中泰国居多),主要原因是这些国家,尤其是泰国,都是直接通过短信收取多种费用的。Alec 提醒,页面显示的条款、声明等不一定真实可信,需要谨慎辨别,不能随意点击;此外,要注意检查运营商和地址,看看是否已经遭到劫持。

议题 6:粉碎栈:LTE智能手机的安全性

DarkMatter LLC 的安全研究员 Arthur Garipov 和 Chaouki Kasmi 以 LTE 智能手机安全为主题,进行了演讲。两位演讲者和主办方强烈要求这个议题不可对外公开演讲照片和分享内容,所以这部分就大致介绍一下他们的演讲大纲:1. 介绍 Telecom Network 的结构、背景;2. 他们对于 LTE 的观点以及 LTE 研究中常用的工具分析;3. TESTBED 配置与实践;4. 相关 POC。

在工具分析中,他们主要对比了 2G、3G、4G 频段的一些工具,从灵活度、方便程度、安装配置复杂度等多个角度对比了 OpenBTS、YateBTS、OpenLTE、SrsLTE 等工具的优劣。在最后,他们原本准备了一个攻击演示 DEMO,但因为涉及通信层面,主办方担心会对现场造成无法预期的影响,因此没有公开展示。他们后期会公布相关内容,感兴趣的可以关注。

议题 7:回顾苹果的 iBoot

在信息安全领域有 12 年从业经验的 Xerbu 在推特上比较放飞自我。他此次演讲主要介绍了如何利用 iOS 系统的 iBoot 编写漏洞,以及相关的安全概念、弱点、漏洞。iBoot 是 iOS 系统的关键源码之一,它确保了操作系统的可信任启动,相当于是 Windows 电脑的 BIOS 系统。长期以来,尽管苹果部分开源了 macOS 和 iOS,但 iBoot 源码一直被其谨慎保密。iBoot 在整个安全链中很重要,一旦安全 bootchain 出现问题遭到入侵, 就会有大麻烦。

安全 Bootchain 从 BootROM 开始,包含 LLB——iBoot——OS 或 iBSS——iBEC——Restore 这两种结构。其中最容易下手的就是 iBoot 和 iBEC,这是 bootchain 中最复杂的成分,因为涉及 USB、恢复模式、文件系统访问等。而一旦流程复杂,就很容易出现安全问题。在 iOS 10 及以后系统的苹果设备中,苹果已经将 iBoot 隐藏,但依然可以有方法进行 dump。由于 iBoot 文件系统驱动器在启动器件用于加载内核,成分复杂而且开源,所以选择以此为切入点进行攻击测试。随后,Xerbut 详细介绍了 iBoot 其中一个漏洞。由于攻击面比较少,他更改了HFS+文件系统,加入类似特长路径,引发超长递归,导致 iBoot 发生栈溢出。由于没有 aslr dep 的保护,很容易构造代码执行。iBoot的代码执行类似 android 的 bootloader 解锁,可以加载任意内核,获取秘钥等。目前这个漏洞已经修复,但其实还有更多可以深思的部分。例如,竞争条件(race condition)、USB 以及硬件层面都可以深入挖掘。

为了调试 iBoot,Xerub还特意写了 iloader 用来模拟执行 iBoot,据说会在 xerub.github.io 放出来。

BaijiuCon:带着酒味的议题有多好玩

在最后的彩蛋环节,主办方拿出了一瓶茅台和几只酒杯,气氛立刻热烈起来。定睛一看,报名的名单上竟有好几个眼熟的名字。在嘻嘻哈哈中,他们端过酒杯一饮而尽,拿着新议题又开始侃侃而谈。

由于一杯酒只有五分钟时间,而很多人的议题内容又太丰富,所以他们大多喝了两次,而大家最熟悉的 Luca 一共喝了三杯。这个环节,EOS 智能合约漏洞、iOS 内核漏洞 CVE-2017-13861、Zipper Down 漏洞等都被解析一番。而全场的高潮则来自其中一位嘉宾的结束语,他当着全场观众和当事人的面开起了玩笑, 逗得大家纷纷拿起手机拍照。此时此刻,这场会议已经远超了干货分享,变成了一场移动安全爱好者的狂欢。

花絮:

你们要的小姐姐

现场交流

会场

干了这杯茅台,还能再讲五分钟

美食

参会,我们是认真的

注:本文图片来自 MOSEC 官方,版权见水印。

*FreeBuf 官方报道,作者 AngelaY,转载请注明来自 FreeBuf


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK