本文作者:李勤,雷锋网网络安全专栏作者,入错行的八卦爱好者。
4 月 5 日,雷锋网编辑要 360 安全战队队长、世界著名黑客 MJ 0011 (以下简称 MJ)拿着前不久在 Pwn2Own 2017 世界黑客大赛上的冠军奖杯拍个照。
MJ 转了转奖杯的齿轮说,把它放在办公室里还能磨磨指甲。
其实,一个月前, MJ 本以为会云淡风轻地去加拿大参加大赛,没想到等待他的是一场“坑爹”之旅。
[MJ 很伤心,没想到经过一场高度紧张的黑客大赛后,他没有瘦下来]
高难度漏洞:厂商要过年
3 月11日,携带一揽子“神奇漏洞”的 MJ 和 360 安全战队队员抵达加拿大温哥华,准备参加 3 月 15 日到 3 月 17 日举办的 Pwn2Own 2017 世界黑客大赛。
Pwn2Own 是世界著名、奖金丰厚的黑客大赛,由美国五角大楼网络安全服务商、 TippingPoint 的项目组 ZDI(Zero Day Initiative)主办,谷歌、微软、苹果、Adobe 等互联网和软件巨头都对比赛提供支持。
Pwn2Own 大赛从2007年起开始举办,难度一届比一届高。今年是第十周年, MJ 认为,拿下此次大赛颇有意义,与MJ 有相同想法的还有参加比赛的 10 支战队,包括 amuel grob and nicolas baumstark、Ether:玄武实验室、长亭安全团队、ralf philipp weinmann、Sniper:科恩实验室+电脑管家团队、Richard Zhu、Lance:湛卢实验室、Moritz Jodeit,Blue Frost Security、Shield:科恩实验室+电脑管家团队。
Google Chrome、Microsoft IE 、Adobe Reader、Adobe Flash、Mozilla Firefox ……是此次大赛的攻克目标。Pwn2Own 要求,攻击所利用的漏洞必须是未知、未公布、未向供应商提交过的。漏洞不能重复利用,远程攻击必须要排除操作背后的人为干扰(如浏览恶意内容),必须出现在用户正常的会话中,不会出现重启或者下线/登录的情况。
也就是说,攻击者的漏洞是真正的“零日漏洞”,基本靠一个链接“发动攻击”,“用户”点击链接后,攻击者不再“动作”,攻击要一气呵成地进行。而且,只有三次攻击机会。
2017年 Pwn2Own 共设置 15 个项目,根据比赛难度的不同,每一项设置了相应的积分和奖金。在 3 天所有赛程结束后,积分最高的参赛团队,将赢得“Master of Pwn”(破解大师)世界冠军称号,并获得65000个ZDI积分(约合25000美元)的额外奖励。
在这样的高难度大赛里,难怪 ZDI 在其官网上大呼,虽然 2017 年的这次 Pwn2Own 准备了 100 多万美元的奖金,但厂商也欢欣鼓舞、严阵以待——这可能是除了自家平时正常打补丁外,要补高漏洞质量最多的日子了!
嗯,有点像过年的感觉。
焦虑:重头戏“连环攻击”可能要失败
来到温哥华的第一天,MJ 和队员们神清气爽、信心满满。
MJ 压力不大是因为——这是 MJ 第三次参加 Pwn2Own 大赛,此前他也是各类顶级黑客大赛的常客,对一个资深黑客而言,只要平时功夫深,“铁杵也能磨成针”,更何况,赛前战队做了详细的战略部署,并准备了应对比赛的超级漏洞。
Pwn2Own 大赛要持续三天,对单个黑客而言,如果每个项目都要参加,三天的强度基本没人能承受,所以,团队作战是Pwn2Own 大赛常见的参赛方式。然而,即使是团队作战,强度依然不小。一般,报名单个项目的居多。
参加此次大赛的 360 安全战队由从 360Vulcan Team、360代码卫士和虚拟化研究团队360Marvel Team抽调的 10 名黑客组成,包括名声在外的 360Vulcan Team 安全研究员 YukiChen (古河)、虚拟化漏洞挖掘专家唐青昊等人, MJ 担任队长。
360 安全战队瞄准了8个参赛项目,包括 Adobe Reader、Adobe Flash+系统提权、Apple mac OS、Apple Safari +Apple mac OS、Microsoft Windows 10 、Microsoft Edge +系统提权+虚拟机逃逸、Firefox、Vmware,准备大干一场。
但是, MJ 没有想到,这次比赛他们犯下了两个“大”错误,让他们的“冠军”来得没有像以前那样顺利,这也是 MJ 与雷锋网(公众号:雷锋网)编辑对谈几个小时的过程中,他一直心心念念的两点。
第一个失误是,这支有老牌黑客坐镇的队伍这次低估了“连环攻击”的难度,赛前缺少环境调试。
所谓连环攻击,是指今年 Pwn2Own 除了独立项目,又加了一项,如果打完浏览器,在全部攻击完成后,还能再进行虚拟逃逸,就另行加分 。
比如,在攻击 Edge 后,再进行系统提权,最后如果来一场华丽的虚拟机逃逸,这就是一场连过三关的连环攻击。但是,连环攻击分数高,失败的风险也相当高。
这是一场华丽的冒险。
攻击一个项目时,如果成功率是 90%,在这个项目里要攻击三个,叠加后的成功率可能就降低了。而且,它的风险比单纯攻击虚拟机风险更大。比如,就算前两关成功闯过,一旦最后关头演示失败,整个攻击都算失败,攻击项目所累计的积分点和所有奖金都会失去。
如果不进行连环攻击,只进行前两项攻击,不仅成功率高,成功之后积分点和奖金双双都能抱回家。
To be or not to be,that is a question.
【哈姆雷特电影剧照】
MJ 虽然不是执意复仇的哈姆雷特,但在高风险面前也异常执着,连环攻击难,好,就要挑战。
作为一名世界顶尖的超级黑客,MJ 曾傲视诸多对手。虽然,他和队员都很看重比赛成果,就是奔着冠军去的,但是,就算有比较大的风险,从不畏惧、不断挑战的“hacker”精神深深印刻在 MJ 的心里。
做十拿九稳的事没什么意义。
不过,360Vulcan Team、360代码卫士和虚拟化研究团队360Marvel Team 虽然都在北京,但平时不在一栋楼办公。除了参加黑客大赛,大家平日还有手头工作,很难凑到一块调程序。于是,大伙决定,就在赛前,也就是从 11 号到 14 号这几天,在加拿大一起碰头“搞一搞”。
没想到,碰头的第一天,他们就发现了问题——一般进行一次攻击时,对系统环境会造成很多影响,导致整个系统环境不那么单纯了。如果攻击质量不够高,可能接下来系统就会崩溃,后面的攻击根本无法进行。
“比如,我们原本准备的逃逸虚拟机,独立跑的话,是90%以上的成功率,如果配合浏览器,不进行一些代码优化,成功率就低很多,因为对整个环境有很多影响。”MJ 说。
不配合不知道,一配合吓一跳。他们之前低估了连环攻击对环境的影响——单独攻击的时候,各自的成功率都能到达 90% 以上,三次攻击接起来时,成功率直线下降到令人心惊胆战的 30%。
也就是说,如果按照这个情形来打连环攻击,呵呵,三次机会可能只有一次成功。
一直十分淡定的 MJ 突然有了前所未有的紧张感。
厂商和选手赛跑:赛前狂补漏洞
以前,MJ 领队参加国外一些牛气哄哄的黑客大赛,还能先逛荡几天,给亲戚朋友买点什么,这次,整个队伍窝在古河的只有一张桌子的宾馆房间里紧张调试,MJ 和队友们在房间内像打仗一般和程序较劲,和成功率较劲。
他们甚至来不及出去吃饭,让服务员把餐送到了房间,调试间隙扒一口饭。
内忧同时,外患四起。
Pwn2Own 大赛还有一个看点是——厂商可能会在赛前打补丁,你辛辛苦苦准备为比赛准备的漏洞说不定就被补了,拼的就是刺激啊!
MJ 告诉雷锋网,比赛之前,他准备了 FireFox、Safari 以及 Edge 的三个“神洞”——很难发现的偏僻漏洞,没想到,就在赛前阵亡了!
最刺激的是,这次官方补洞的日子就在赛前一两天。
有的是“命运的使然”——微软的补丁日一般在每月的第二个星期二,3 月的第二个星期二就是 3 月 14日,比赛就在15日。
“我们当时认为,这个漏洞是不太可能被补的一个洞,因为我们在去年8月就发现了这个漏洞,当时微软在 10 月补了一次,但是没补好。我们想,既然都补过一次了,而且微软补漏洞的质量一般非常高,应该这个没发现的洞就逃过一劫了,不太可能被补了,当时还是比较有信心的。结果,在补丁日之前把这个补丁给补了。我们不得不换了另外一套替补的漏洞,当然,备选的漏洞也是比较神奇的一个漏洞。”
随后,Firefox 和 Safari 的漏洞也被补了。
有时,是“狡诈”的厂商善于利用规则——“Flash 的漏洞也是一个非常神奇的漏洞,当时我们认为不太可能被补。Flash 的安全人员虽然不知道漏洞在哪儿?但是他觉得这个地方有漏洞,故意设置不释放内存,内存一直在那儿占着,我们这个漏洞虽然没有被修补掉,但没法利用了,只好就换了一套新的漏洞。”
有时,甚至是厂商故意挑战参赛选手的情绪——“Vmware一开始我们准备了三套漏洞,一套漏洞用于打独立项目,然后,另外两个项目再用两套漏洞,但是,Vmware 在10 号的时候发了一个补丁,没补我们的漏洞,当时我们觉得估计这个事就过去了,结果它在14号的晚上,我们都看完漏洞,觉得终于可以休息一会儿,然后第二天早上去打比赛了,结果那天晚上,突然它又发了一个更新,把我们准备打独立项目的漏洞给补了。”
厂商很任性,能不给的钱和分绝对不会给你。
受到影响不只是 360 安全战队,据雷锋网了解,厂商“任性”地围追堵截后,一些参赛队伍的项目没法报了,中国其他参赛队伍也受到了冲击。
不幸的是,Firefox 无备用漏洞, MJ 所在的战队只好放弃了这个项目。幸运的是, Safari 以及 Edge 还有“替补”,虽然独立项目的漏洞没了,但涉及“连环攻击”和“附加分选项”的这些项目的漏洞还在。
一时间,8 个项目只剩下 6 个可以打: Adobe Reader、Adobe Flash+系统提权、Apple mac OS、Apple Safari +Apple mac OS、Microsoft Windows 10 、Microsoft Edge +系统提权+虚拟机逃。
雪上加霜:报名失误+规则变化+抽签不利
同时,MJ 犯下了第二个失误。
就在 3 月 14 日下午, MJ 去签署参赛项目确认书时,在单独的 Vmware 逃逸项目没有报名,只报名了连环项目。就在签字前的那一刹那,史上最喜怒不形于色的安全研究员古河还朝着 MJ 使了使眼色。MJ 打了个冷颤,表示我对你没有兴趣,没有接收到这个神秘的信息。
“我们当时只有两个能打 VMware 的洞,所以就报了这个附加项目(即连环攻击),没有报独立的 Vmware 项目 ,其实可以再报一个独立的。”据 MJ 事后回忆,古河当时是要自己也在单独项目那里打勾——这样,可以给连环项目减轻压力,如果连环项目失败, VMware 单独项目的分和奖金还能拿回来!”
最可怕的是,360 安全战队这次抽签运气不佳,虽然看上去每天都是第一个出场,但是在报名的 6 个项目中,只有两个项目抽到了第一个打,有两个项目抽到倒数第二,分数最重、打的人最多的 Edge 项目最惨惨,抽到第七名(倒数第二)。
【各战队比赛顺序】
更令他懊恼的是,360 安全战队在 Edge 项目上打的是连环项目( Edge +系统提权+VMware 逃逸),难度十分高,而参加比赛的人很多人选择打单独的浏览器项目。刚好今年的比赛规则发生了变化,在浏览器这一大类中,只有第一个打下来的人能拿全奖,其他打下来的人只能拿半奖——虽然积分点不受到影响,十分富有、没有从比赛中分过一毛钱奖金的 MJ 不高兴了,“我对奖金也很看重啊,我们还有兄弟可以分啊!”
一着不慎,他们战战兢兢地怕撞洞,又担心连环项目出岔子,“重头大戏”无奈地因为抽签留到了第三天,也就是比赛的最后一天。
打Mac提权项目时,还发生了一件匪夷所思的事——队员从主办方处拿到全新的 Apple 电脑时,发动第一次攻击,发现攻击无法进行。
本来就深受“放弃项目”阴霾的 MJ 心里咯噔了一下。
“一定是发生了别的问题。” MJ 找到主办方,两方一起检查了电脑,发现主办方搞出了一个大乌龙。
“主办方给错了系统环境,他买了 8 台 16G 的苹果电脑,但官方居然给了他两台 8G 的。他说回去要找苹果电脑算帐。”主办方承认了自己的失误,但坚决不改,换了电脑后,只给队员剩下的两次机会继续打。
“这事我记得比较清楚,我还跟队员说,我们上场之前先查系统环境,然后一上场,我当时脑子都蒙了,直接就忘了,上来就打。这也说明,我们真的有点紧张。”MJ 说。
在这种紧张的阴霾中,前两天除了在其他项目打比赛,MJ 就是和队员一起抽出时间调初始成功率只有 30% 的连环项目的程序,另外,还得时不时地绕到复核项目的评委那,小心翼翼地问一句:“我们没被撞吧?”
但是,从另外一个角度看,抽签不利也给他们争取了两天的调试时间,到第三天比赛前,唐青昊开心地跟 MJ 说,终于把成功率控制在 90%以上,测试了三次,都是这样。
MJ 暂时松了口气,但不敢彻底放松。
保持到第三天的紧张感
拖了三天的战线, MJ 和队员又紧张又疲惫。
他们连着熬了几个通宵,白天还打着比赛。
终于,第三天来了。360安全团队小心翼翼地给出了一个攻击链接,点击,等待。
对攻击项目进行 Review 的工作人员确定了攻击有效后,打开了大门,与MJ 握了握手,轻轻告诉他:Edge +系统提权+VMware 逃逸成功。
这也是全场唯一一个连环攻击成功的项目。
现场其他人还在紧张地比赛,他抑制住内心的狂喜,与队员一起轻轻地走了出去。
他们没有拥抱,没有欢呼,但接受了大家的掌声——360 安全战队拿下了分数最高的连环攻击项目,总积分排名第一,MJ 穿上了那件与自己身材异常匹配的冠军皮夹克,和主办方合影。
让 MJ 印象深刻的是,遇到什么事都波澜不惊的古河看着 MJ 摆出了人生第一个最激烈的手势——他内心激动,嘴角微微抽动,双手握拳甩动,说了声“Yeah”。
他们一起,以黑客的名义,不仅拿下了这场艰难的比赛,还践行了打死不放弃的理想。
虽然雷锋网没有拍到古河的现场照,但是按照 MJ 的描述,我们派出了编辑史中还原了古河的“开心”。
附:Pwn2Own 2017 总战况汇总列表。
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/103934.html