0
在顶级黑客眼中,从来没有不可能。
这不,这个黑客在 11 月初举办的第十二届 POC 安全大会上针对苹果最新机型 iPhone X 上搭载的 iOS 11.1. 1 系统,成功实现越狱。
这个黑客就是腾讯科恩实验室的研究员陈良,前不久他带领的团队还拿了移动 Pwn2Own 黑客大赛的冠军,获得“世界破解大师”的称号。
几年之前,买了 iPhone 之后最重要的事情之一就是给它越狱。以非官方 app 商店 Cydia 为首的一众越狱后才能使用的开源软件们给 iPhone 带来了令人惊讶的新功能和可定制性。但 Cydia 源中最知名的 ModMyi 发出了“再见”的消息。Cydia 三大源中的两源已经停止服务,仅剩的 BigBoss 源显得有些孤单。
关于越狱已死的说法喧嚣直上,但在陈良等人眼中,这场与苹果之间的猫鼠游戏一定会持续下去。
不过,把这场博弈比作游戏似乎有些草率,毕竟在此过程中,面对的除了“对手”的“奇袭”,更是对自己抗压能力的冲击。
“越狱期间我买了一个小酒壶,郁闷时候喝两口,偶尔还能激发别的思路。”陈良说。
能对一扇扇门“视若无物”的破解大师还有烦恼?是的,他有。
口述:陈良 |文:又田
成功没那么容易
看起来酷炫,但苹果越狱这件事,其实没有你们想起来那么容易。
苹果的 Root 权限不对用户开放,越狱就是获取 iOS 的 Root 权限,获取后用户使用 iOS 权限大大增加,可以查看 iOS 文件系统,免费安装 App Store 以外的海量软件,更换外观主题等。对安全研究人员来说,iOS 系统源代码的闭源性以致所做研究有限。
即使是调试自己所写的 APP,都需要购买开发者账号在 Xcode 中进行调试,这也是 iOS 系统安全研究人员格外小众的因素之一。
自 2007 年 7 月第一款 iPhone 上市,开发人员发布了第一款无名越狱工具,打开了另一扇天窗。此后,苹果每次发布新机、新版本总有人跃跃欲试。
无论是 2007 年被开发出适用于第一代 iPhone 和 iPod touch 的 JailbreakMe,还是国外著名越狱团队Chronic Dev Team 专为 iPhone4、iPhone4S 和 iPad2 等 A5 芯片设备用户使用的一键式越狱工具 Absinthe,以及在 2014 年国内盘古团队正式发布的苹果 ios7.1.1 的越狱工具,能否越狱成功成为业界对 iOS 研究深度判断的普遍标准,所以科恩实验室自 2015 年以来就开始研究 iOS 越狱。
这是一波三折的经历。
2015年,我们刚刚开始对 iOS 越狱进行研究,那时候主要学习前人成果,对已有的越狱工具进行逆向总结提炼。
2016年,我们在 Mobile Pwn2Own 上破解了 iPhone 6s,并利用内核漏洞成功取得 iPhone 6s 内部的照片资料。风光背后却是团队付出了大量时间和精力,彼时我们还没有研发出自己的越狱工具,在没有调试能力的时候我们只能从一些奔溃日志中查询蛛丝马迹甚至靠猜测进行攻破过程。
明明一小时就能完成的工作,在没有调试情况下却需要几天时间来完成,也是在那时,我们清楚地意识到越狱工具对 iOS 研究的重要性。在此之后,我们开始针对性地寻找一些可越狱的漏洞。
直到今年 5 月份,我们做出了自己的越狱工具。
时隔半年,期间科恩遭遇过四次团队队员发现可以用于越狱的漏洞,并耗时编写越狱工具,而编写到一半甚至快完成时,发现苹果更新的版本中补住了这一漏洞。除此之外,团队成员的流动也给研究雪上加霜。
长期以来,封闭式和开放式的编程方式被形容为“大教堂”和“集市”两种模式。而苹果的 iOS 与安卓系统被视为两个完美代表。然而,随着这几年苹果逐渐开放权限、开源部分内核代码,这种“大教堂”式的完美形象仍旧存在。但是,乔布斯的那个苹果终究是有缺口的。
简单说 iPhone 的越狱步骤可概括为三步:首先获得低权限的代码执行权限,然后想办法绕过沙盒保护,随后做系统内核提权。
实际上在 iPhone5 之前(包括iPhone5)的苹果手机上完成以上这三点就可以实现越狱,但从 iPhone5S 开始,iOS 推出 KPP,即对内核进行保护,即使能进去,内核在保护机制下仍会阻止你修改内容。但对我们来说,修改内核的目的是把其自有的安全机制去掉,然后安装自己的应用程序,调试系统组件,但KPP的推出让不少安全研究人员竹篮打水。
在 iPhone7 推出后,苹果为了加强对内核的保护,推出了 AMCC(硬件保护),从硬件级别对内核打补丁,其设计理念是即使苹果不可能在短期将所有漏洞补住,但他可以尽全力阻止在内核有任意代码执行时手机不被篡改,这也被认为是最后一道防线。
苹果此举几乎堵死了越狱之路,这也给越狱带来很大困难。不久前面世的 iPhoneX 中也加了防止代码执行的保护措施,将这堵墙砌得更高。
实际上,苹果一次一次加固了这堵“柏林墙”。
一方面是对手机的直接保护,从iPhone 5 到 iPhone 7 再到 iPhoneX 是一个不断迭代的过程。
另一方面则是系统版本的更新,比如 iOS 10.3.2 到 10.3.3 的版本更新,每一次系统版本的更新都会修补漏洞,引入一些系统级别的保护.
我们曾发现,某一接口可以用于内核内存布局,可以利用其进行越狱,但在 iOS 10.3.3 版本中将此接口砍掉修复了这一漏洞。
苹果不止封上了上面这条路。
比如,之前,获得内核具备任意代码执行的权限,就可以获得 Task for pid 0(tfp0),但苹果在 iOS10.3 等版本上做了很多加固,这些都可对越狱造成影响。
这对苹果而言,是一个不断垒高墙的过程,对我们来说,则是不断找出突破口的挑战。
5月,我们写出自己的越狱工具时,针对的还是 iOS10.3.2 版本,此后苹果每发布一个新的版本,我都要查看是否有加入新的对抗机制,如果加入了新机制,还要在现有工具上增加功能,以此适应全新版本。
获得更高权限对于果粉来说似乎格外有吸引力,但衍生出来的问题是——越狱之后的手机是否安全。
而在我看来,越狱存有风险,但不代表绝对不安全,这是一把双刃剑。
iOS 越狱不代表沙盒被破坏,不代表安装的任意软件都有 root 权限,不代表文件目录可被所有应用任意访问,不代表关键隐私暴露。
越狱只是禁用了部分 iOS 系统先进的防护机制。对用户来说,可以获得更多的权限,但也的确留给不法分子一条“无障碍通路”,这也是诸多支付软件会直接检查系统是否越狱,如果出现越狱情况会直接退出。
当然,目前许多越狱软件做的不够完美,甚至很多越狱软件为了达到自己目的,禁用 iOS 的全部保护机制。
我们跟他们不是一类人,注定了要走不一样的路。我觉得,真正的越狱工具应做到在该禁用时禁用,但在保护用户隐私信息时,也应不遗余力,这也是我们所做的越狱工具的理念。
手持重器,但应行君子之道。
雷锋网宅客频道(公众号ID:letshome)原创文章,雷锋网雷锋网。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。