譬如季昕华,他用黑客的精神研究人的“规律”,建立了云服务巨头UCLOUD。他的开疆拓土,目的却是为自己的初心——“安全”拓荒出更大的市场空间。
譬如呆神,作为安全圈的交际花,他可以让已经加入百度、腾讯、阿里巴巴、360的各个年龄的黑客界半壁江山坐在同一个宴会厅把酒言欢。总角之宴,言笑晏晏。
譬如潘剑锋,他厌倦了黑客攻防中不断加厚的防弹衣和不断加重的炮弹,选择告别“军备竞赛”,潜入代码的底层,试图从软件开发的原点去构建一个“天下无贼”的世界。
譬如张迅迪,他用神级天赋创建的“安全焦点”如普罗米修斯的蒙昧之火创生了中国的黑客宇宙。看着自己亲手埋下的种子长成三千大千世界,却独爱归园田居,坐看云起。
而我们今天的主角,是另外一种。
乍看起来,他们像城管,凶神恶煞地扑向每一个“违规占道”的漏洞;
仔细琢磨,他们又像鉴黄师,火眼金睛专门排查躲藏在程序旮旯里的“失足代码”;
但我猜他们自己喜欢最后一个比喻:他们像赛博世界的特种兵,潜入敌人自以为无懈可击房间,安全解救重要人质,维护爱与和平。
所以,他们的生活除了睡觉、吃饭,就是“打漏洞”。换句话说,除了一日、三餐,只有漏洞。
他们是来自科恩实验室的陈良和来自腾讯电脑管家的邓欣。这两位最近是“黑客界网红”,因为他们刚刚在世界顶级黑客大赛Pwn2Own上,各自带人拧成了一个麻花状的联合战队,拿下了“破解之王”的桂冠。
火力全开的“破就给”
纳尼?什么叫Pwn2Own?如果你还不知道,没关系,不要自卑。雷锋网可以拯救你。带着你的好奇心,来看看下面这个例子:
一个系统就像一间屋子,黑客的目的很简单——作为特工潜入这间屋子。那么潜入这间屋子的难度和什么有关呢?
屋子本身的牢固程度——代码本身的逻辑严密程度
门口的守卫是否敬业——杀毒软件和系统防护软件给力与否
特工手里的武器如何——黑客掌握的漏洞是否可以突破严密的防守
特工的入侵路径怎样——黑客的进攻思路是否出其不意
对于国内大部分黑色产业中的黑客来说,他们使用的漏洞往往是已经被人曝出的漏洞,黑话叫做“1Day 漏洞”。进攻的对象往往也是普通人,这个普通的人也许没有把系统升到最高版本,也许没有开启系统级安全防火墙。这就像一个蟊贼趁周围没人用锤子砸开一把铜锁,入室盗窃。一言以蔽之——不专业,没有技术含量,图样图森破,那义务。
看一群流氓群殴终归不如看真刀真枪的战争来劲。正所谓“劫就劫黄冈,嫖就嫖娘娘。”于是 Pwn2Own 就应运而生了。
简单来说,Pwn2Own的奥义就是:
建造一个重装火炮步兵团把守的拥有十米厚加固墙的钢筋混凝土监狱,周遭探照灯通明,巡逻队穿梭。然后昭告天下:谁可以在这种情况下潜入监狱之内,就可以获得数十万美元的大奖。
这也是这个活动为什么叫 Pwn2Own 的原因,翻译成中文大概是:破就给!
在今年的Pwn2Own上,主办方准备了最新版本,封堵了所有已知漏洞、打开了所有安全阀门、开启了所有系统防护的微软 Edge 浏览器、苹果 Safari 浏览器、谷歌 Chrome 浏览器、Adobe Flash 插件。如果你有胆的话,需要在15分钟之内,冲破所有的安全防线,进入房间救出人质——拿到系统 Root 权限。整个过程中,如果有一丝闪失,例如被系统发现异常从而弹窗报错,或者干脆被系统拦截,马上会被宣告失败。这件事情无异于从纳粹集中营中解救人质。唯一的宽容在于:你可以有3次机会尝试。
说到这,你有没有开始对我们今天的主角邓欣和陈良刮目相看?没错,他们已经穿好迷彩服,戴好黑手套,腰间挂了一排不明觉厉的“0 Day漏洞”,贴身藏好暗镖,登上了远赴温哥华的战机。
【邓欣(左)和陈良(右)】
全宇宙最可怕的“大补丸”
你一定想知道他们在温哥华如何披荆斩棘所向披靡,我偏不说。相信我,有比这个更精彩的故事。让我们把时间倒回比赛前的两个星期。
这天夜里2点,陈良目不转睛、垂涎三尺,盯着屏幕上的下载进度条如蜗牛一般爬行,心中排浪翻涌。他不是在下载爱情动作片,而是在下载苹果赛前推送的最后一版补丁。此刻,他用于参赛的所有攻击脚本都已经写好。在他心中,反复闪现一幅美妙的图景:两个漏洞合力串联,神不知鬼不觉一举攻破 Safari 浏览器。然而,正在下载的这个补丁却有可能让他的“美梦”破灭。
每次在比赛前,这些厂商都会推出一个超级补丁,这个“大补丸”会修补所有他们最近发现的漏洞。如果我准备使用的漏洞在这最后一刻被堵上,那么我之前的辛苦准备都将瞬间付之东流。
陈良如此回忆。
陈良安装完补丁的第一件事就是:用颤抖的手把自己的攻击脚本再跑一遍。然后,他的大脑一片空白。直到五个小时过去,窗外已经露出曙光的时候,他才强迫自己相信:准备好的漏洞已经被苹果彻底封堵,而且是两个漏洞被同时封堵。这件事情发生的概率约等于中了彩票。
陈良到了公司,向团队宣布了这个消息。然后默默地走回家,重新打开电脑。天地不仁,世事冰冷,此刻唯一能拯救科恩团队的,就是两个新的漏洞。在此后的几天,他几乎没有离开家门。与此同时,他的团队中有同事把床搬到了办公室。
团队翻遍了所有的研究记录,打算从以前积累的蛛丝马迹中重新发现两个可以被利用的新漏洞。整整72个小时过去了,陈良猛地拍案而起:“有了!”
只用三天时间就找齐了两个新漏洞让陈良感觉如堕梦境。他掐了掐自己的脸,再次确认全宇宙最可怕的“大补丸”已经被科恩团队来了个“全垒打”。但是,紧张还远远没有结束。由于采用了全新的攻击路径,所有的攻击代码都要重新编写。
这个漏洞存在于苹果系统的视频渲染程序中,当两个锯齿重叠的时候,会发生微小的计算错误。由于涉及到视频渲染,所以攻击代码非常复杂,我们用了一周多的时间编写完善攻击代码。甚至一周多过去了,在飞往温哥华的飞机上,我们还在完善自己的代码。
如果你觉得陈良的故事太惊险,那一定是因为你还没有听过邓欣的故事。
由于 Pwn2Own 在国际上变态的影响力,本该在每月固定日子到来的 Adobe“月经补丁”居然为了这个比赛而推迟了。希望你没有理解错误——并不是推迟到比赛之后,而是由赛前的五天推迟到了赛前的三天。
这天夜里2点,邓欣目不转睛、垂涎三尺,盯着屏幕,心中排浪翻涌。在他心里,一遍遍预演着那个绝妙的攻击,攻陷 Adobe Flash 只需要3秒,干净利落。也许邓欣没有陈良那么好的身体,没能等到美国的“大补丸”发布就已经困得不省人事。没错,他能睡着的唯一原因就是还不知道自己的漏洞已经被修复。早晨7点,他从同事的电话里得知了这个悲伤的消息。所幸,他们还有一个备用方案,经过验证,这个方案仍然可行。但是,这个方案并不完美,因为整个攻击过程会持续11秒。距离比赛只有七十多个小时了,所有的人都看着邓欣。短暂的沉默,他说:“这个备选方案仍然做为备选,我们用三天的时间来试着修复那个最好的攻击方案!”
所以,在飞往温哥华的飞机上,一边坐着满头大汗完善攻击代码的陈良团队,另一边坐着还没有跑通攻击逻辑,内心更加纠结一万倍的邓欣团队。安静的机舱充斥着键盘喷溅荷尔蒙的声音,直到所有人的笔记本都耗尽了最后的电量。
和漏洞冰释前嫌
当他们最终站到比赛现场的时候,身边的空气像秋天的湖水一般平静。现场的裁判和评委当然不会在乎他们昨天是怎样在宾馆房间里点灯熬油、火力全开的。
裁判只是坐在房子中心,守着一台冰冷的电脑——他们要攻克的终极堡垒。这个堡垒包裹着密不透风的墙壁,围绕着凶神恶煞的守卫,也散发着诱人的气味,闪耀着黑客的荣誉。
这台小小的电脑里面哪里是Safari 和 Edge,简直塞满了他们一个月不眠不休的魔鬼拉练和近十年的黑客峥嵘岁月。
【宅男A、B、C、D。。。】
但谁都没有必胜的把握,因为攻击程序并不是百分之百稳定,而且在最后一次“大补丸”推送到比赛的此时此刻,厂商随时都可以把最新发现的漏洞更新到这台电脑上,即使没有来得及更新,只要确认攻击者使用了他们已知的漏洞,同样会被取消分数。除此之外,比赛还有一个最变态的规则:
所有参赛团队按照抽签顺序决定攻击顺序,如果在你之前出场的团队曾经使用过这个漏洞,后来者就会“撞洞”,他的进攻也会同时被判无效。
在如此变态的规则之下, 为了提高胜率,陈良和邓欣的两支队伍混编为“腾讯安全Sniper”战队和“腾讯安全Shield战队”,把最有把握的攻击方法都放在了 Sniper 战队。而他们的对手是来自韩国的黑客神童 Lokihardt 以及同样来自中国的 360Vulcan 战队。不用怀疑,虽然四支队伍有三支来自中国,但是这三支队伍完全代表了世界黑客的最高水平。要知道,自从2007年这项赛事创立以来,一直到2013年,都没有一组中国团队有资格参与这个竞争。今年中国队伍的爆发,完全是通过自己努力得到的结果。
虽然韩国只有一直队伍参赛,但是这个神童 Lokihardt 却是真正可怕的对手。他在最近三年震惊了世界,以一己之力几乎拿到了世界黑客赛事的所有冠军。这次比赛,他的目标只有一个,那就是是干掉所有的中国队伍。这种自信不仅闪现在他的脸上,也闪现在随行而来的大批韩国媒体的脸上。
轮到邓欣率队上场了。虽然就在比赛开始前一天,他成功在酒店房间里搞定了新版的“三秒攻破 Adobe 方案”,并且已经在队员的电脑上验证了很多次,但是他仍然没有必胜的把握。经历了历史上最漫长的三秒,屋子正中的电脑猛然弹出了他设定好的命令符。现场欢呼四起,这片欢腾似乎有些不真实,就像他这三天里从天堂坠入地狱再爬回天堂的经历一样。
同样的欢呼再一次响彻陈良的耳畔。
在这一刻,漏洞似乎不再是他们的敌人,他们好像和这些漏洞冰释前嫌,相互拥抱。
直到陈良坐在阳光明媚的北京中关村,向雷锋网编辑讲述这一切的时候,他依然觉得,这次成功除了自己的努力,还有命运之神的无私眷顾。
他之所以这样说,是因为上帝似乎并没有照顾韩国神童 Lokihardt。
【正襟危坐的就是色艺双绝的韩国神童 Lokihardt(JungHoon Lee)】
平行世界的另一个自己
就在 Lokihardt 进行最后一个破解的时候,所有人都相信他会成功,最终和 Sniper 并列第一。但是就在他操作的过程中,意想不到的事情发生了——Windows 系统突然弹窗,提示用户“该操作有风险”。这个弹窗暴露了正在后台潜行的 Lokihardt,他的进攻立刻被裁判判为失败。
Lokihardt 礼貌地向陈良和邓欣表示了祝贺,而与此同时身后的韩国媒体们愤然离场。所有的事情发生在一瞬间。陈良仔细思考,觉得事有蹊跷。以他的了解,神童并不会犯如此大的失误。赛后,陈良私下找到 Lokihardt,才问出了事情的缘由:
Lokihardt 自己的 Windows 是在联网状态下安装的,而比赛的官方电脑却是在脱机状态下安装的。这个微小的差异导致了两台电脑的“默认设置”出现了微小的差别——官方电脑在攻击过程中突然多了一步对用户 ID 的验证。而这个问题是 Lokihardt 在自己的电脑上无论如何都不会发现的。
陈良告诉雷锋网(公众号:雷锋网):“和他沟通之后才发现,他的破解思路非常了不起。”然而规则就是规则,规则里所谓的“默认设置”最终解释权还是在主办方手里,无论是 Lokihardt 还是陈良和邓欣都明白:多说无用。这次韩国神童“落难”,但也许在另一个平行世界里,不走运的正是陈良和邓欣。
尘埃落定,新的“漏洞之王”属于陈良和邓欣的团队。人们纷纷向他们表示祝贺,而他们却走向失败的韩国神童,安慰运气欠佳的 Lokihardt。
面对更看重结果的雀跃的中国网友和暴怒的韩国媒体,我们却能更深刻地体会,这个对手到底有多么值得尊敬。
邓欣说。