黑客的快感源于什么呢?
虽掘蝼蚁之穴,却荡破千里之堤;麾下万马千军,仍如入无人之境。
大抵如此。
2015年11月,在日本举行的Pwn2Own Mobile 黑客大会上。龚广面对一部Nexus 6手机。他轻轻点击了一个网址,随即一片沉静,似乎什么都没发生。然而短短片刻,桌面上突然出现了一个新的图标。原来,在电光火石间,系统已经自动从Google Play市场下载并且安装了一个被他指定的App。这一切都静静地发生在水面之下,手机的主人根本无从发现。
现场短暂的沉默,继以雷动的掌声,祝贺他优雅地扒掉Android系统的底裤。
一个漏洞,优雅地推倒Android
观众并不知道,这一系列流畅的进攻,其实是龚广的下策。他原本的计划是通过相互配合的两个漏洞,一举拿下系统控制权,读出手机所连接的Wi-Fi密码。
然而,无巧不成书。就在他动身参加比赛的两周前,谷歌发布了新的升级。阅读升级日志之后,龚广内心一惊:本来准备妥当的两个漏洞,其中一个看起来已经被谷歌发现并且修复了。
他重演了一遍攻击过程,果然失效。不过,作为江湖老手,一个优雅的黑客,他也没那么容易认输。在之前的研究中,他记得Google Play存在一个小的系统设计缺陷,于是用剩余的十多天时间重新写攻击代码,最终在比赛开始之前一天完成了攻击程序。这才有了前面发生的一切——仅仅使用一个漏洞就击溃了 Android 系统的防线。
虽然这次攻击看起来赏心悦目。但是龚广告诉雷锋网,他的攻击并没有提取到系统的顶级权限,也就是“Root”。
密室逃脱,Root更像一种轮回
在Android系统安全中,Root就是皇冠上的明珠。如果能拿到它,就可以成为手机中的上帝,对所有的文件为所欲为,并且可以读取手机主人的所有敏感信息。
虽说在日常生活中,我们普通人似乎都可以下载一个Root工具把自己的手机“干翻”,但是Root却远比想象中艰难。龚广告诉雷锋网,Root需要一连串漏洞(一般为3-4个)的有效配合才可以实现。
如果打一个“优雅”的比方,那大概就是:
黑客在制造一枚精确制导的导弹,穿过系统为进攻者准备的导弹防御系统——四道不同的关卡,最终准确地击中敌人的菊花。
这四道关卡,就像四个暗箱。它们层层嵌套,每一个看上去都无懈可击。而你想获得自由,就必须冲破这四层枷锁,少一个都不行。如果你愿意,就随我变成一段复仇的代码,享受一下鲜血四溅的乐趣吧。
故事马上开始。
{反绑的绳索} 网页脚本
手机的主人通过Chrome浏览器点击了链接,于是我们成功地闪入了手机之中。但是,我们发现:
自己不仅被困在Chrome这间宫殿当中,还被反绑了手脚。
因为我们既没有权限读取Chrome之外的信息,也没有权力对系统发号施令。
作为一个网页脚本,我们最多有权调整一下网页的布局、图片的位置。显然,作为一个刺客,这点权力是没有卵用的。这个时候,我们突然发现了房间里的一张桌子,我们用桌角可以割开捆绑自己的绳子。
当我们重新解放双手的时候,我们已经成功地利用了第一个漏洞。此时已经没有任何人可以阻挡我们从口袋里掏出“作案工具”了。
{无门的宫殿}Chrome
然而,我们的境况并没有变得太好,因为这间叫做Chrome的宫殿是没有门的。如果我们无法逃逸出去,将会困死在这里。
然而俗话说,上帝在关上一道门的时候,必定会打开一扇窗。天窗是宫殿里唯一和外界连通的渠道。这扇天窗显然不是为了人进出而设计的,而是为了房间内外空气流通(App内外信息交互)之用。但是在我们眼里,它成为了一个绝好的漏洞。
我们用手中的工具,把屋里的家具改装成了一把梯子,终于够到天窗。此时,我们完成了Root中的经典动作——沙箱逃逸。
{金色的钥匙} 系统服务进程权限
宝藏就在眼前的房间里,然而这个华丽的房间却大门紧锁。这扇大门拥有一个奇特的锁,要想打开它,必须用找到一把金色的钥匙:系统服务权限。
作为一个黑客,我当然知道这把钥匙藏在哪。只不过这把钥匙被放在一个密码箱中,一般人绝对没有可能碰到。当我成功地破解了密码箱,拿到了金色钥匙的一瞬间,我已经成功利用了第三个漏洞。
推开门,我将要面对最终的水晶球——Android系统的内核。
{迷之水晶} Linux 内核
站在水晶球面前,我知道我们距离成功只有一步之遥。只要知道最终的咒语,我们就可以解开 Android 的秘密。水晶球向四周散射出耀眼的光芒,无数0和1交替闪烁在四周的墙壁上,这是Android系统Linux内核的底层代码。而我们要做的,就是在这数以亿记的数字中,找到那一个微小的错误。这个错误可能是驱动程序的漏洞,也可能是内核本身的漏洞。总之,它就是打开一切的咒语。
在审看了数万行代码之后,一个微小的错误终究没能逃脱我们的眼睛。
我们高声喊出了最终的咒语,一道白光闪耀苍穹。我们全速奔袭,终于冲破了Android构建的虚拟世界,霎那间回到了我们的天地。周遭景物依然熟悉,然而世界已经日月新天。
这恰似轮回。
以上就是一次Root的全过程。当我们完成了这个过程,就可以带领千军万马重新杀回手机之中。那时节,将是金鼓齐鸣,片甲不留。
走上“绞刑架”,一个漏洞的宿命
然而,这些漏洞的命运是悲惨的。因为他们本不该存在于世上。曾经让我们纵横捭阖的漏洞免不了一个个走上绞刑架。
作为硬件生产厂商的高通和联发科,还有作为软件商的谷歌,会根据龚广和诸多黑客提供的样本进行漏洞修复。如果手机厂商选择跟进,升级到最新的硬件固件和 Android 系统版本(当然很多厂商为了系统的稳定和用户体验,并不会及时对所有的软件进行升级),那么一切都会变得更加困难。
未来的某一天,当我们再次通过浏览器回到Android系统之中,也许会发现:
桌子被抹去了棱角,天窗增加了守卫,密码箱换了样式,而水晶球的咒语不再灵验。
这个时候,就是“龚广们”再次出发的季节了。
如今,龚广去年用于攻破Android系统的漏洞已经被谷歌修复,他也再次受邀到Pwn2Own做演讲,分享这次攻击的技术细节和Android世界的惊心动魄。
谷歌不断地增加“漏洞缓解措施”,是否会让漏洞利用或者 Root 越来越难呢?龚广给出了肯定的答案。不过,沉思片刻之后,他告诉雷锋网:正是由于越来越难,这件事才变得越来越有意思。