浅友们大家好~我是史中,我的日常生活是开撩五湖四海的科技大牛,我会尝试各种姿势,把他们的无边脑洞和温情故事讲给你听。如果你特别想听到谁的故事,不妨加微信(微信号:shizhongpro)告诉我。
这群硬核的人,正在让机器人“觉醒”
文 | 史中
黑暗中传来一丝弦音,
我们的电脑在梦呓。
这不是一场黎明,
这是一场黎明的黎明。
(一)“机械战警”的神隐
一个普通的中国人,估计从未有机会看到这个词:Mayhem。
即使是在挪威,如今也只有一小部分地下摇滚的狂热粉丝记得这个名字。Mayhem 的本意是“骚乱”,为这个词赋予更诡异气氛的却是 Mayhem 乐队。
Mayhem 在上世纪八九十年代名声大噪,是死亡摇滚历史上绕不过的名字。传说他们的现场会挂着血淋淋的猪头羊头,连主唱都叫 Dead。。。(人如其名,Dead 已经死了。他死的方式非常硬核,胆小的浅友就不要去搜那张图了,毕竟我们黑科技圈的心理承受能力在“黑金属圈”面前还是幼稚园级别的。)
Mayhem 乐队
时间流淌,Mayhem 乐队带着他们的狼奔豕突、血腥杀戮、对死亡的焦虑和崇拜,走进了历史深处。而冥冥之中有定数,2016年,另一个同样凶残的 Mayhem 登上历史舞台。
这是一个人间从未有过的怪物,它暗藏在比真实世界更复杂的“赛博世界”中。假如代码有情感,他们一定会魂飞魄散。
越听越乱是不是?从头给你讲。
你得先知道一个神秘的机构:DARPA。
DARPA 的全名叫“美国国防高级研究计划局”,你可以理解为现实版的“神盾局”。(不会读 DARPA 的,来跟中哥念:“哒怕”。。。)
DARPA 虽然还没集齐《复联》里全套的超能力表演艺术家,却集齐了各种屌上天的超级技术。
坊间传说中他们正在研究的有:可以潜水的航空母舰“九头蛇”,像星战里那样的机械战象(AT-AT),还有合成生化危机里那种让人变僵尸的“脊髓灰质炎病毒”,类似《终结者》里天网的人工智能防御系统,还有类似于《绿巨人》里让浩克变身的伽马炸弹,还有手持式核聚变反应堆。。。
当然,DARPA 到底在搞什么飞机,他们肯定不会公布。但是有些事情却是世人亲眼所见。
例如,9·11之后,美国国防部建立了一个“信息识别办公室”,这就像美剧《疑犯追踪》里的大规模监控系统,专门从摄像头、交易记录、手机定位、邮件往来等等大数据里提取某人可能的动向,让拉登这类口爆分子的行踪尽收眼底。(它的logo 就取自1美元纸笔上的神秘图腾:全知之眼。有兴趣的浅友可以自己去研究,这里不赘述。)
还有一个例子,DARPA 在2014年启动了一个项目,那就是江湖人称“CGC”的网络超级挑战赛。
这个 CGC 是干嘛的呢?
DARPA 向全美国广撒英雄帖,征集7支队伍,各自制造出一个机器人,在网络空间角斗场里展开一场血腥的“肉搏战”。你还记得在决斗场里和狮子干架的斯巴达克斯吗?大概就是这个意思。
这里的机器人,不是你想的这种:
而是更类似于黑客帝国里的 Smith 警探——一个可以干掉另一个程序的程序。
没错,《黑客帝国》里的情景正在发生,一批机器正在觉醒,并且开始踏上了自动攻防的“进化之路”。
在这次比赛里,总共有 92 轮赛题,每隔几分钟放一道。参赛的七个机器人就像池塘里的锦鲤一般拼死争抢这道题,机器开足马力红热地在赛博世界狂奔,谁先找到其中的漏洞并破解利用它,就相当于穿透了敌人的铠甲,可以咬向他们的喉咙。(同时你也要及时为这个漏洞打好补丁,防止对手用同样的方式撕咬你。)
当然,我所描述的这些NB场景都发生在机箱内部。你的面前,只有现场机器耗散出来的热浪,以及七台机箱如十字架般定定地站在“斗兽场”上。
这次比赛的冠军,名字就叫做 Mayhem。比赛结束,它站在其他机器人的尸山血海之上,注视着错愕的人类。
Mayhem 的主人是成立于2012年的 ForAllSecure 公司,他们团队的核心人物,全部来自圈内大名鼎鼎的卡耐基梅隆大学。当他们还是学生时,就把自己的研究目标锁定为——让机器人学会“杀戮”。
为了这一天,他们等了将近十年。
赛后他们也发表了一篇长长的论文,激情澎湃地讲述了他们实现机器人自动攻击的原理。时间缓缓向前,正当世人期待第二届 CGC 大赛的时候,神奇的事情发生了。
CGC 大赛宣布取消。
而 Mayhem 消失在公众的视野里。
直到2018年,他们再次在学术界发表有关自动化攻防的论文,人们注意到,在论文的学术赞助人那一栏,赫然出现了一个名字:洛克希德·马丁。
洛克希德·马丁是一家美国著名的军工厂,原谅中哥不能多说了。
伴随着 Mayhem 的神隐,故事的第一幕悄然落下。
(二)地球另一端
张斌第一次听说 CGC 大赛,是在2015年。当时参加 CGC 的七支队伍刚刚被选出,他们正在最后冲刺,全力开发人类历史上首批“杀戮”机器人。
彼时张斌是国防科大的一名博士生。看到这个新闻,一种难以名状的澎湃涌向心头。为了这个时代的降临,他也等了很多年!
2007年,高中生张斌迷恋上了热播电视剧《士兵突击》。第二年,他就看到一群穿着军装的老师来他的学校招生,“军装和许三多里一模一样”。于是他丝毫没有犹豫,报考了被称为军中清华的国防科大。
张斌本科学的是电路与系统,整个四年都在焊电路板。他觉得“虽然也能报效祖国,但总感觉不太酷。”直到2012年,一个男人出现在他的生命中。。。。
冯超是国防科大的博士,当时他的研究方向是信息安全。一次偶然的机会,他去给本科毕业的弟弟妹妹讲了一堂课。
2012年安卓还不像今天这么火爆,超哥讲的是塞班系统的恶意软件分析。通过一个小小的漏洞,就可以控制整部手机。我当时就感觉,卧槽这个东西好厉害啊!超哥我可不可以跟你混?
张斌回忆。
所谓“跟你混”,就是同样拜在冯超的导师唐朝京唐老师门下,加入冯超所在的网络安全研究实验室。
加入实验室第一天,他就撸起袖子:超哥,我摆好姿势了,你告诉我漏洞怎么挖?
冯超笑了,“我们这个门派,挖漏洞不用人。”
“那用什么?”
“机器人。”
张斌跪了。
这里中哥需要严重科普一下,不准跳过:
无论是人还是机器人,对于系统发起攻击,都必须拆解成两步。
1、找到一个漏洞;
2、利用这个漏洞。
机器人找到一个漏洞,用专业词汇讲是“自动化漏洞挖掘”;机器人利用一个漏洞,用专业词汇讲是“自动化漏洞利用”。
不夸张地说,利用一个漏洞比找到一个漏洞难度大一万倍。如果找到漏洞的难度是“加到一个姑娘微信”的话,那么利用漏洞的难度差不多是“把姑娘追到手”。
从技术演进的时间表上也可以看出来。
自动化漏洞挖掘技术早在1990年就由 B. P. Miller 教授提出了,用于测试 Unix 系统中程序的健壮性。而在2009年以前,没有人相信机器可以自动化利用漏洞。
2009年,牛津大学的学生 Sean Heelan 发表了论文《 Automatic generation of control flow hijacking exploits for software vulnerabilities》,首次提出了机器人利用漏洞的代码生成方法。
这是Sean Heelan 的 Twitter 头像
Sean Heelan 用一己之力第一次把“利用”这条路走通了。在他的的精神感召下,美国、欧洲、中国很多顶尖大学的研究员们纷纷开始研究漏洞自动化利用。也正是有了这个理论基础,美国 DARPA 才有底气召开 CGC 挑战赛。
(三)赛博迷宫
卖了半天关子,机器人到底怎样利用一个漏洞干翻一个系统呢?
下面就是性感中哥在线科普的时间。
1、我们先来说如何找到漏洞。
简单来说,不论是 Windows、Office,还是QQ、暴风影音,他们都是软件系统。运行一个软件就像走一个“黑暗迷宫”。
每当你输入一个数据,它就会在程序里顺着流程前行。你可以想象,自己举着这个数据,在伸手不见五指的迷宫里顺着路向前走;
遇到分叉路口,系统就会根据你手上数据的值为你选择一个方向,然后推你过去;
每一次遇到分岔路口,你都会被指派一个方向。最后的最后,你会走到一个光明的出口。一旦出去,你手里的“数据”就变成了一个“结果”,系统就完成了一组运算。
所以说,你进入迷宫的时候手里拿了怎样的数据,其实就几乎注定了你会在哪个出口出来。(是几乎,不是绝对)
刚才说的是一个正常系统工作的样子。那么漏洞又是怎么出现的呢?
是这个样子滴:
你捧了一个特别奇葩的数据进入这个迷宫;
开始遇到分岔路口,系统还知道怎样为你分配路线;
你一直走走走走啊走,突然到了一个路口。程序说,纳尼?好像前面那几条路都不适合你,你走墙吧。。。
于是,你就被程序一个骚操作,从墙里推出去了。。。
现在,你到了一个“未知的空间”。所谓“未知空间”,就是一个你在迷宫里正常地走,永远不会到达的地方。。。
恭喜你大佬,这时你已经成功找到了一个软件漏洞~~~~
刚才我说了,找到漏洞,只是攻击系统的第一步,你还需要更难的第二步:利用这个漏洞!!!!!
我们接着上面的图说。
你虽然到了未知的空间,但是并没有离开这个迷宫,而你如果想彻底控制这个迷宫,需要找到一个隐秘的出口。
我把刚才那张图再给你看一下,你看,有些“未知空间”是可能通向一个隐秘出口的。
这个出口无法得到正常的结果,却可以让你逃离“迷宫”,用上帝视角控制程序。
所以,未知空间分为两类:
有一种是可能让黑客走向迷宫之外的,例如 A 区域;(这种区域对于系统来说才危险)
有一种是会把黑客困死在迷宫里的,例如 B 区域。(这种区域对于系统来说不危险)
所以,要完成一次漂亮的进攻,首先要从正常的迷宫里发现“未知空间” A 区域(这对应着漏洞发现),然后再从 A 区域找到脱离迷宫的隐秘出口“X”(这对应着漏洞利用。。。)
这里问题就来了:由于程序的“迷宫”极其复杂,即使你发现了一个“未知空间”,也很难知道这个未知空间究竟有没有可能通向隐秘出口“X”,也就是说不知道怎么利用这个漏洞。这肿么办呢?
如果是人类黑客,会这样操作:
黑客一旦进入“未知空间”,之后都会根据自己的经验,手动在黑暗里探索,左摸右摸,七上八下,九浅一深。
如果是机器人,就没办法像人那样凭经验、直觉和灵感了。他们只能做两件事:
1)模糊测试
从“未知区域”开始往前走,每当遇到前面有岔路的时候,然后把此时的系统状态复制很多份,形成无数个平行世界,就像游戏存档那样。
在每一个平行世界分别随便丢一个不同的数据过去,看看系统分别会指示我们往哪里走。
只要尝试次数足够多,总有一次,机器人会被指引到出口旁。这样,机器人就成功了。
但这种方式终归有失败概率。所以机器还会同时使用另一种方法。
2)符号执行
符号执行相当于什么呢?相当于“穷举法”。
意思就是遍历这个迷宫剩余的部分。如果它果真有出口的话,最终肯定能找到出口。如果它真的没出口的话,我们就宣布放弃。
老年网友还记得,当年windows98 有一个神屏保,叫做迷宫。遇到岔路它就会向右走,没有右就走直,没有直再走左,最后总能找到出口。
符号执行看上去百分百稳妥,却有硬伤:
如果迷宫剩余的部分过大,那么符号执行就要穷举好多好多好多种可能性,计算机算到宇宙毁灭也算不完。
所以,在机器人开发过程中,研究者都会把自己的经验“灌装”到机器人里,对于什么时候进行模糊测试,什么时候进行符号执行,以及应该用什么技巧进行模糊测试,都有着预先的设定。这种精巧的设定,才是真正考验研究者的地方。
你看到机器人在自动攻击,但背后全部是人类智慧的凝结。
别看我用这么短的篇幅就介绍完了一个机器人寻找漏洞和利用漏洞的过程,但是这几乎已经是人类目前(2019年)工程能力的极限了。
我们的故事刚进行到2015年,那时这一切都还没实现。
(四)半比特(HalfBit)
2015年,听到美国要举办 CGC 的消息,张斌立刻明白,美国正在推动技术从“自动化漏洞挖掘”向“自动化漏洞利用”这一步进化。
一直在跟着超哥做“挖掘”的张斌憋着一口气:美国人能干“利用”,我们中国人也能干!他丝毫没有犹豫,把自己的博士开题就开成了“自动化漏洞利用”。
如果你读过博士,你大概会理解这么开题其实是赌命。
因为当时的情况是,虽然先驱 Sean 的论文已经在理论上奠基五年多了,但世界上还没有人实际做出了可用的“自动化漏洞利用工具”。这意味着如果张斌突破不了人类的极限,他博士就毕不了业。。。
相比我个人无法毕业,在网络安全自动化技术上落后的后果更可怕。那是我的责任。
张斌对我说。
2016年,拉斯维加斯。在世界著名黑客大会 DEF CON 的会场里,CGC 总决赛拉开序幕。(多说一句,DEF CON 在中国也有分舵,每年春天在北京召开。请参考中哥之前写的文章《别忘了寂寞的山谷的角落里,极客们也有春天》。)
DEF CON 24
张斌心里有点失落:“完了,自动化漏洞利用世界第一的交椅还是被美国人给抢了。”不过,仔细研究了比赛之后,他高呼卧槽!CGC 并不算是实战场景的机器人攻防,因为比赛里所使用的被攻击系统是高度简化版本的,这就好比考驾照的时候,本来应该去下午六点半的西二旗路考,结果在试车厂里绕了两圈就完事了。。。
CGC 是人类历史上第一个机器人黑客大赛,做出的突破已经非常伟大。我们没办法苛责那些细节,但这确实给追赶者留下了空间。
要做,就做真实世界里能用得到的机器人!
张斌重新燃起斗志。
在研究的过程中张斌发现,自动化软件分析领域,还有一家公认的 NB 团队,那就是“欧洲第一强校”——瑞士联邦理工大学,简称 EPFL。
EPFL 的团队开发出一套名叫 S2E 的软件自动化分析开源平台。S2E 是当时世界上唯一能分析真实软件的平台,例如 Word、IE、Excel 这类。S2E 就像一个汽车底盘,虽然还比较粗糙,但它却是100%为了上路而设计的。
那些日子,张斌在代码层级上仔细研究了这套平台,觉得在此基础上有可能做出一套比 Mayhem 更实战的自动化漏洞利用系统。(当然,Mayhem 在 CGC 的表现,并不能代表他们实际掌握的最高水平。)
2016年,张斌获得了一个去国外大学联合培养的机会,为期一年。他毫不犹豫,直接申请了 EPFL。
给浅友们看下 EPFL 全景,用一句唐诗形容就是:真TM漂亮啊!
在瑞士洛桑,他对 S2E 开发团队说:“我看到了 S2E 1.0 版本里的一些问题,我可以贡献力量和你们一起把 S2E 1.0 升级到 2.0。”然后他坦白:“我也有私心,想让 S2E 2.0 更适合做我的自动化漏洞利用项目。”
张斌争分夺秒,每天除了吃饭睡觉就是和同学们讨论技术。整整一年寒暑,他心里已经有底了。在实验室的环境中,他的机器人已经步履蹒跚地完成了自动化漏洞利用!
2017年7月,就在他回国前两个月,冯超在微信上告诉了他一个大新闻:
中国也有了对标美国 CGC 的自动化攻防比赛,名字叫做 RHG。而且声势浩大,世界各国战队都来参加。另外,RHG 和 CGC 不同,被攻击的“靶场”采用的是真实世界的 Linux 系统,难度更大。
“你要不要参加?要是参加,我全力帮助你!”冯超问。
五秒之后,冯超收到张斌的回复:“我参加!”
这个事情报告给了导师唐老师,唐老师眼前一亮。作为学科带头人,他当然知道机器人自动攻防的深远意义,决定派出最精锐的“黄金战队”支援张斌。
于是,身在瑞士的张斌一夜之间成为了“张队长”,教研室的八位博士和一位硕士都自告奋勇加入他的战队。
战队里唯一这位硕士名叫姜植元。说来有趣,他也是被冯超的基情所感染,加入漏洞自动化研究项目的。
其实RHG 比赛的消息,是姜植元最早从大名鼎鼎的黑客 K0 那里听说的(有关黑客 K0,可以参考中哥之前写的文章《草根黑客 K0》),所以,姜植元也顺理成章地加入战队。
战队要叫什么名字呢?
“赛博世界的最小单位是比特,不是那个游戏叫半条命么,那我们就叫 HalfBit “半比特”吧!意思就是我们的机器人能找到比比特更小的漏洞。”冯超说。
冯超激动地为战队画了个小鸡破壳的 Logo。姜植元他们看了半天,眼泪都快下来了——太丑了。。。
姜植元找到自己学设计的发小赵万里,对他说:“我们的战队就要参加世界大赛了,世界冠军妥妥的!设计费就按一万算,先赊账,我回头发达了还给你。”
结果赵万里说:“别吹牛了!你要真拿到世界冠军,Logo 我免费送给你。你要得不了世界冠军,1w块必须还给我!”
价值一万块的
HalfBit 战队 Logo
距离比赛还有两个月,HalfBit 开始了紧张的机器人工程开发。
每个人都领到了自己的开发任务。由于张斌还在瑞士,团队只能远程协作。白天中国队员搞,晚上瑞士队长搞。“那两个月,那时候就是个日不落帝国。”姜植元说。
开电话会议必须选在下午四点左右,只有那时两拨人都是白天。一群人围着桌子,听队长张斌在电话里讲。有时候信号不好,听也听不清。所有人就撅在桌子前,一撅就是一小时。
比赛前夕,HalfBit 已经胸有成竹了。这么多年的研究项目,这是第一次向世界展示。队员们紧锣密鼓最后调试,两个通宵都没有睡觉。
2017年9月21日上午9:00,RHG 在北京拉开帷幕。
为了不让团队紧张,唐老师没有通知主办方,只是自己悄悄到赛场,找了个角落观战。
比赛规则和 CGC 类似。主办方每隔十分钟放一轮题,所有战队的机器人同时解答。开局三分钟,HalfBit 就冲到第一名,而且优势越来越大。HalfBit 微信群里,队员们已经开始了商业互吹。
然鹅,就在第七轮,机器突然卡死了。
“我们从第一掉到了第四,然后掉到了第六。。。我当时就想,肯定是我们代码有错误,给搞死机了,这么多天的努力全白费了!”姜植元回忆。
猛然回头看到角落里的唐老师目不斜视地盯着记分牌,姜植元觉得自己没脸在赛场上待下去了,他转身朝自己的宾馆走去,一边走,一边眼泪不争气地流下来。
真正的队长张斌远在瑞士,现场最高指挥官是冯超。冯超赶紧跑过去向唐老师解释,唐老师反而平静地对冯超说:“你不需要跟我解释,赶快去检查一下究竟出了什么问题,有没有办法补救。”
冯超心里知道,这肯定是软件故障。只要比赛开始,规则是不允许再调整代码的。但唐老师都说了,他也只能意思一下,去自己的机器旁边转一圈。
“卧槽!硬盘线掉了!”冯超几乎喊了出来。
他把硬盘线重新插紧,赶快跟主办方申请重启机器。此时题目已经放到了第14轮。
HalfBit 的分数猛然开始增加。
躺在宾馆的床上,姜植元看了一眼微信群,他一下子从床上弹起来了。他冲出房门的时候,HalfBit 的名次追到了第七;他冲出酒店大门时,HalfBit 的名次是第四;他冲进赛场时,HalfBit 的成绩是第二。
赛场一端,记分牌下面爆发出一阵又阵骚动。第24轮,HalfBit 反超为第一,团队已经沸腾了。
我从项目承办方永信至诚那里要到了一张珍贵的照片,显示的是第28轮的时候,各队得分情况。(可以点开看大图)
到了第31轮,HalfBit 队员们已经确信冠军收入囊中,他们换上之前准备好的统一队服,准备迎接胜利的到来。
姜植元瞟了一眼看台。角落里唐老师不动声色,翻了翻包,把之前队员们送给自己的队服也掏出来。。。。
远在瑞士的队长张斌经历了漫长的一夜。半梦半醒间,他在微信群里直播目睹了一次惊天大逆转。
“记得把我 P 进领奖照片里。。。”尘埃落定,他在微信群里说。
这一役,让张斌荣立中国人民解放军三等功,在国防科大官方网站上,还能看到HalfBit 夺冠的新闻。
姜植元发微信给为战队设计 Logo 的赵万里:“我们拿到世界第一啦!”他回复了四个字:“兄弟,到位!”
以前我告诉我妈,我是做网络安全的。她就笑,说那你把咱家 Wi-Fi 密码破解一下吧。这次立功之后,她把我的奖状挂在客厅,逢人就说,我儿子是搞机器人的!虽然这个形容也不够准确吧,但是挺好。
姜植元笑。
(五)极限挑战
RHG 之后,机器人自动攻防蔚然成风。
中国各大网络安全赛事都开始加入机器人攻防的模块。HalfBit 一战成名,陆续参加了几场比赛,都保持在前两名。
机器人攻防也终于从纯粹的学术圈研究,走入了工业界。很多国企和大公司,例如国家电网,纷纷召集团队组建自己的战队,磨练机器人攻防的能力,以保卫自己的网络。
2018年,姜植元被保送国防科大的博士。他发现,企业战队拥有动辄几十人的开发团队,而且有工业级代码优化能力,稳定性超好,很快技术就追赶上了自己所在的教研室。
他有点迷茫,不知道自己的博士应该往什么方向研究,于是找到比自己大12岁的知心大哥冯超谈心。
冯超说,目前所有的机器人,其实都在解决“栈漏洞”的利用,而“堆漏洞”的利用还没有机器人能做好。你不应该去和工业界拼同样的技术,要挑战新的技术高峰——“堆漏洞”。
这里中哥插一句,之前的科普为了方便理解,我做了简化。常见的内存漏洞有两种:“堆漏洞”和“栈漏洞”。还沿用之前的比喻,利用漏洞就像追姑娘。那么利用栈漏洞就像是本地恋,稍微好控制一些;利用堆漏洞就像是异地恋,一不留神就。。。
用张斌的话说:“栈漏洞利用是一门技术,堆漏洞利用是一门艺术。”对于人类黑客来说,一般有天赋的人学习三个月就可以利用栈漏洞,但持续训练一两年,可能还是掌握不了堆漏洞利用的思想精髓。
姜植元当然知道堆漏洞的自动化利用有多难。他跟超哥说:这个太难了,我恐怕不行,还是交给美国大佬去做得了。。。冯超的表情马上变得严肃:“你是学术界的人,又是国防科大的学生,一定要追求最难的技术突破。这是你的责任!”
似乎不是巧合,同样在2018年,当年提出漏洞自动化利用的先驱 Sean Heelan ,在沉寂多年以后,又发表了篇重要的论文《Automatic Heap Layout Manipulation for Exploitation》,探讨的正是“堆漏洞自动化利用的方案”。
“当时我就决定了,再难也要把堆漏洞的自动化利用搞出来。”姜植元说。
于是,从2018年秋天开始,HalfBit 的研究重心,从栈漏洞的自动化利用,全面转向了堆漏洞的自动化利用。
在人类黑客的经验里,要想利用一个堆漏洞,必须在这个堆旁边做精心的内存布局。甚至一类最牛的内存布局就像诸葛亮的八卦阵一样,被称为“堆风水”。
网络攻防发展了二十多年,人类黑客们已经总结出了几十种经典的内存布局。彼时的张斌和 HalfBit 就要绞尽脑汁,让机器学会“内存自动布局”的能力。
四五个人,天天在房子里头脑风暴,写了无数种内存布局的方法,但这些方法像是一个个零件,凑到一起能不能成功,大家心里都没底,只能像乐高积木一样一点点拼接。
12月底,他们又在试验一个新方法组合,把程序运行,他们就去吃饭,做体能训练了。回到机房,姜植元被眼前的景象晃瞎了眼,系统居然把一道 RHG 的堆测试题给跑出来了!
队员们恨不得围着电脑跳舞。
张斌赶紧掏出手机向唐老师汇报,我们第一次把堆做出来了!!!唐老师指示:“赶紧优化,参加1月份的 BCTF RHG 专场赛。”
“这次比赛我们要放一个大炮仗!”张斌跟队员说。
(六)“大炮仗”
1月很快就到了,张斌也马上博士毕业,这是他作为 Halfbit 队长的谢幕战。
赛前一天,团队们已经把所有代码都调试完毕,拿主办方的样题进行测试。测试的时候,姜植元突然发现,邻居战队们提交答案的速度很快,显然是在提交流程上做了优化。
“我们要不要也加一段代码,优化一下?”姜植元试探地问。
所有人看着张斌。
“搏一搏,单车变摩托!”张斌说。
加完这段代码,已经没有测试的机会了。也正是这段代码,让 HalfBit 在第二天正式比赛第十分钟就直接卡死。HalfBit 没做出任何一个堆题目,仅凭借开局几分钟拿到的栈题目分数,收获了历史上最差的成绩:第三名。
张斌提前从网上找了好多图片,准备让兄弟们得第一之后发朋友圈吹牛,结果这些图都砸手里了。。。。
比如这个:
再比如这个:
赛后,姜植元颤抖着把那段优化代码去掉,重新跑了一遍赛题。他发现,其实如果不死机,HalfBit 是能做出堆题目的。。。。
他死活咽不下这口气,从张斌手里接过队长的职责,带着新加入 Halfbit 的硕士学弟学妹们继续研究。他们的目标是在2019年5月 DEF CON China 上重新放这个“大炮仗”。
这次比赛之前,整个队伍开了一间五星级酒店套房,在里面五天五夜没睡觉,调试代码。
一位学弟对姜植元说:“姜哥,这是我人生中第一次住五星级宾馆,可我连床都没躺一下。。。”
宾馆的电视被他们用成了显示器。
开战前,有师弟问,我们要不要加一段优化代码?姜植元说:你敢!
5月30日,比赛开始了。
根据姜植元的测算,全速马力开进,应该在比赛进行到两个小时左右,解出第一道堆题目。
现实是:直到比赛结束,它一道题目都没做出来。。。
现场的观众席上藏龙卧虎,有些是各个大学的领导老师,有些专家担负着向国家建议科研项目的职责。众目睽睽之下,代表国内自动化漏洞利用最高水准的 HalfBit 从里到外现了个大眼。
姜植元觉得天都塌了。
“忙了这么多年,本来憋了一口气要推动产业进步,没想到交出这样的答卷。我当时已经做好准备,回去之后队伍就会被解散了,这么多年的努力都白费了。”他说。
姜植元确信自己写的那部分代码没问题,那问题肯定是出在学弟学妹身上。他把小朋友们叫在一起,大发雷霆。
“明天我们全回家!”姜植元喊。
“按照流程,不是明天我们还有和人类队伍一起比的表演赛吗?”团队问。
“一道题都做不出来,还表演什么?”
一位本来计划赛后在北京玩两天的学妹一边流着眼泪一边说:“队长,我不在北京玩了,明天我也一起回长沙去找代码里的问题,需要的话我买今晚的飞机回去。。。”
姜植元没理她,转头回到酒店房间,闷头大睡。
不知过了多久,姜植元被手机铃声吵醒,打电话来的是他的队员邓枫雷。
“你知不知道师兄在睡觉!做人基本的道理不懂吗?”姜植元劈头就骂。
“哥,能做,我们能做出来!”邓枫雷兴奋地喊。
原来,就在队员们沮丧地撤离场地之后,只有邓枫雷没睡觉,他在房间里把赛题导入 HalfBit 自己的服务器里,发现很多题目都能跑出来。如此说来,问题应该出在软件接口配置上。为了怕弄错,他花了四个小时重复跑了两次才敢给姜植元打电话。
姜植元垂死病中惊坐起。
虽然比赛没有成绩,但起码我们的技术路线没有错。。。他赶快打电话给比赛对接人傲客,告诉他们这个消息。
“明天的表演赛,我们不放弃!”姜植元说。
当时已经是夜里,邓枫雷抱着服务器冲下楼,团队在20分钟内重新集合场地,为第二天的表演赛重新搭建环境。姜植元开着手机,和冯超视频连线,每写一行代码都让超哥给确认一下。。。
第二天,姜植元带队走入人类赛场。
说实话,虽然自动化漏洞攻防和人类黑客做的事情相同,但却是两个圈子。因为在以往,机器人攻防处于发展的早期,最厉害的机器人和人类的普通选手比都是个渣渣,所以两个圈子就像大学生和小学生,各玩各的。
这场人类赛的赛制有点血腥,叫“鸡尾酒规则”:一道题目,只要有队伍做出来,赛题就立刻下线,别人再也看不到了。
人类战队的队员怀着关爱的眼神看着 HalfBit 团队。虽然没有明说,但很多人心里觉得这帮小菜鸡今天多半是一道题都抢不到。
中午时分,一道堆题目放出来。就在十多支战队紧锣密鼓地研究题目时,大屏幕突然提示,有队伍已经解出了这道题。没错,就是 Halfbit。
一瞬间 HalfBit 战队尖叫成一团,姜植元手都是抖的。
一位比赛评委会成员直接站了起来,自言自语:牛逼!
这场表演赛 HalfBit 总共解出了2道题目,在堆漏洞利用类的题目中,没有给人类任何机会。当然,因为是表演赛,HalfBit不参加排名。但是姜植元觉得,这些都不重要。重要的是中国人第一次在世界面前,展示了自己有能力进行堆漏洞的自动化利用。
姜植元打开微信二维码,接受观众们跑过来加好友的请求时,他确信:张斌憋了半年的大炮仗,终于给点着了。老队长可以“瞑目”了。。。
(七)机器的黎明
“辟邪剑法,飞檐走壁。”
大多数人总是向往侠客的身姿,对那些手拿藤条制作弹弓的小屁孩不屑一顾。
几番寒暑归来,大侠英姿未减,但那个小屁孩已经把弹弓改造成了机关枪。
2019年,HalfBit 的机器人,最多和一个学了两年网络安全的黑客打成平手。但是不要忘了,HalfBit 只有两岁。侠客们的传承需要经年累月的口传心授,但机器人的传承却是弹指一挥间的复制粘贴。
自从2016年 Mayhem 神隐之后,世人已经无从判断他们的技术究竟发展到了那个阶段。
我们知道的是:中国有了中科院信工所、清华大学、北京邮电大学等等众多和 HalfBit 一样的自动化漏洞研究团队;越来越多人类安全研究团队也意识到机器人的重要性,开始使用机器人做人类的辅助,探索“人机协同”的可能性。
最早依靠满腔热血把大家聚起来的冯超,如今留校成为了老师和教研室主任。姜植元从一个研究生成为了漏洞自动化利用的前沿研究员。张斌虽然卸任队长,也依然留在教研室,把漏洞研究从自动化向下一代智能化推进。而不服输的小子邓枫雷也成为了 HalfBit 的中流砥柱。
目前,HalfBit 已经将研究成果汇集成一篇篇论文,不出意外,2019年下半年所有人都可以看到。他们用独立的技术路线,把先驱 Sean Heelan 的理论向前推进了一大步。
姜植元把自己称为自动化漏洞研究领域的“老游击”。说到这里,他有些伤感,他目睹了很多优秀的研究团队,当年非常有希望,却因为核心成员毕业,或进入工业界后转行,因为人才断层而销声匿迹。
自动化和智能攻防技术在全球范围内都在突破的黎明,山雨欲来风满楼。这个时候,我们最需要聚力,才能保证技术上不和别人产生代差。
姜植元一反戏谑的表情,严肃地和我说。
《爱、死亡、机器人》里有一集名为《Zima Blue》。一个机器人,从一块块清理泳池瓷砖开始,一步步迭代进化到了理解宇宙的神。
一切复杂,都源于那个最原始的0和1的交替。一旦机器人走过那个超越人类的节点,它就会一骑绝尘,再也不会被人超越。
你可能会问,机器人觉醒的未来是个好未来吗?我不知道。我只知道,你可以不让自己的机器人觉醒,却无法阻挡别人的机器人觉醒。
机器人不会忘记,机器人不知疲倦,机器人不犯错误,必要的时候,机器人可以复制出成千上万个自己。这些机器人可以进攻,但它们更可以捍卫。
这正是出生于1982年的冯超、出生于1991年的张斌、出生于1994年的姜植元、出生于1997年的邓枫雷,以及所有正在研究机器人攻防的学者所共同相信的未来。
P.S.
RHG 比赛的承办方,就是大名鼎鼎的网络安全公司永信至诚,他们从2017年以来从零开始,一直公益地做这个比赛,并且在赛制上一直创新,没有他们,也许就没有今天的故事。
本文头图取自曳取2019欧洲巡回演唱会海报。(P.S. 他们的歌很好听,好吧主要是小姐姐太好看了)
文中有关漏洞挖掘和利用的技术科普引用自《黑客你怂了,看到这个工具你眼圈红了》,在此向作者表示衷心感谢!反正作者也是我自己。。。。
联系客服