0
本文作者: 李勤 | 2019-06-05 17:42 |
说起世界顶级黑客大赛DEF CON,可能是连网吧老板都知道的“神仙大战”(这里先埋下一个梗,网吧老板不要不服气)。
长期关注雷锋网宅客频道的宅友应该知道,黑客战队要到DEF CON 一决高下,必须拿到一张金灿灿的入场券。今年,在中国的大地上,又多了这么一张让人争得头破血流的入场券——百度安全举办的 BCTF 正式成为 DEF CON 的外卡赛,冠军就可以走上 DEF CON 的花路。
就是这样惊险刺激的神仙打架,今年居然加入了“机机大战”“人机混打”的元素,而且在紧要关头,神秘机器人战队居然突袭了人类战队一把,而且第一次在真实的操作系统环境中解决了一个世界性难题!
这是什么操作?我们从 2017 年说起。
2016 年,在 DEF CON 上,美国国防部资助了第一场自动漏洞挖掘大赛“CGC”。
美国军方为这个大赛倾注了相当多的财力——上亿元的经费支持,专门打造一个 DECREE 的简化版操作系统,选手有强大的服务器来承载训练集和智能机器人。
美国老大哥都有,中国怎么可能没有。
说干就干。
2017年,我国也诞生了第一个人工智能网络安全赛“RHG(Robo Hacking Game)”,但是这个大赛不是由政府大大支持的,而是由一个名叫永信至诚的民间安全公司打造。这个安全公司非常有家国情怀,他们的目标是:在未来网络安全技术竞争中,为国家提供战略技术和人才储备,推动中国的 AI 技术在网络安全领域的发展 。
那一年,这场大赛在武汉举办,宅客频道编辑也到场采访过,发现除了服务器,什么都没有啊!人类都在底下嗑瓜子是怎么回事?
对接人傲客也很尴尬:我们也很无奈啊,这些 AI 战队都是自己做好了程序,程序跑起来就可以了啊,科科,你们要观摩战势,只能看大屏幕。。。
完全没有什么硬核机器壮汉互相殴打的场面!摔!
虽然场景不刺激,但是这个比赛每年搞一次,进步很大,到了今年,通过 BCTF-RHG 系列赛事的运作,RHG 比赛已经有了除自动化漏洞挖掘及利用以外的新的方向——自动化场景对抗,也就是说,机器人除了能吭哧吭哧比赛挖漏洞,还到了壮汉互搏的阶段——虽然还是在程序中。
我们看看是怎么个玩法:
RHG-漏洞挖掘和 RHG-场景对抗两个赛场同时开赛。通过预选赛选拔出来的5支(X2组,共计10支)机器人队伍在 DEF CON 1.0 的赛场上角逐胜负。同时,两个赛场前两名的机器人团队都有资格进入BCTF百度网络安全技术对抗赛中,和国际最顶尖的CTF战队一起争夺2019DEF CON CTF总决赛的入围资格。
同时,在 BCTF 百度网络安全技术对抗赛中,为了保证公平性(也不知道是怕谁吊打谁),主办方为机器人设计了更合理的参与方式——以限时彩蛋的方式参与到比赛中来,有一个相对公平的能力展示机会,这些彩蛋题,机器人可以做,人类也可以做,看谁厉害。
说白了,先机机大战,再人机大战。
然后,在混战中,出现了戏剧性的一幕——
国防科技大学的自动化漏洞挖掘及利用的技术小组 HALFBIT 战队,经过了三个多月的筹备,以及连续五天的通宵作战,成功展示了真实操作系统环境中对堆溢出漏洞的自动发现及利用。
这是世界上宣称自己可以通过自动化解决堆溢出问题的团队中第一次在公开、公平的真实竞赛环境中展示出来,甚至比同场竞技的人类战队率先解出了对人类来讲尚有难度的两道堆溢出类型的二进制漏洞挖掘及利用问题。
在雷锋网看来,这个事情的爆炸程度,不亚于波士顿动力的机器人首次展示后空翻,给了人们无限的想象空间。
编辑先告诉了你这个喜庆的结局,但是这个过程号称狗血反转。
几天前,国防科技大学派出了一支由一个博士生和几个硕士生组成的战队 HALFBIT ,在这支战队出发前,博导对博士姜植元语重心长地说:“小姜,不成功便成仁,你的目标不是拿下外卡赛的门票,而是在这个国际黑客大赛上解决堆溢出的问题。”
“堆溢出”是什么鬼?为什么这么难?
科普一下,堆内存漏洞是目前数量最多、利用难度最大的内存破坏漏洞。不同于栈溢出等古老的漏洞利用,堆内存漏洞的利用往往需要进行多次精准的内存分配、释放、写入等操作,其利用难度更大、利用过程更加复杂。
按照以往 RHG 的情况,各个机器人战队在栈溢出上已经取得了很多成果,但是堆内存漏洞是对人类选手来说都比较难的漏洞。
比如,栈由操作系统自动分配释放,有非常清晰的规则。而堆由程序的开发者通过代码向操作系统申请分配和释放。一般情况下,每个进程拥有的栈的大小远远小于堆的大小,因此去分析堆比分析栈要复杂很多。对于栈漏洞的利用,只要找到漏洞在哪里,可以一步完成,但你要完成一个堆漏洞的利用,不能一步到位。
“假如我要从这儿下楼,栈可以直接坐电梯下去,堆不允许,因为是动态的,需要进行内存的自动布局,没有一个电梯直接给你走,类似于超级马里奥那种,随机出现了一些跳板,一旦出现,你就赶快跳上去,然后再跳,多跳,而且每次跳板出现的位置都不一样。”姜植元说。
总之,这种类型的漏洞,人能打,机器人不能打。
2018年,国际上开始有有一两篇论文称自己能够做堆的自动利用。
原本在栈溢出上研究的 HALFBIT 发现,原来之前号称不可能自动利用的堆溢出真的可以实现。于是,他们开始从 2018 年下旬正式进行堆的自动利用算法设计。
彼时,国内也有研究团队刊发了相关论文,迈出了属于中国人的第一步。
HALFBIT 的目的则在于,要在竞赛环境以及真实的 Linux 环境中首次展现出对堆的自动利用。
BCTF 今年正式成为 DEF CON 的外卡赛,赛制中还有与国际顶尖强队互博的机会,这无疑是推进 HALFBIT 研究进展的一个重要练兵场。
带着只许成功,不许失败的任务,HALFBIT 雄心勃勃(紧张)地到了北京。
通宵调试了 5 天后,HALFBIT 感觉胜券在握。
5 月 31 日上午,属于机器人战队拼杀的 3 个小时开始了。
HALFBIT 的策略是,服务器计算资源有限,为了让资源做堆题,只做20分钟栈题,因为在这场机器人战队决斗中,前10分钟就能决定赛局。
“5 月 31 号上午是专项赛,只有前两名才能进入外卡赛。如果堆没有打出来,栈又不做,我们进不了外卡赛,所以我们要保底。先保证能进外卡赛,还有一次机会再打,所以当时我们只花 20 分钟做栈,剩下 2 小时 40 分钟做堆。我们栈打的特别好,开机 6 分钟,我们打出来了 5 道题,一直打到最后。”
打到第 20 分钟时,第一名的战队夺下了 1500 分,HALFBIT 拿下了1100分,差了 400 分。当时 HALFBIT 很高兴,按照赛制,堆题比较难,一题是 600 分,但是通过赛前调研,只有 HALFBIT 可能做出堆题。
也就是说,HALFBIT 除了能稳进外卡赛,还有两个多小时可以打堆的题了。
一想到一上午就能完成任务,HALFBIT 的队员们有点兴奋,机器自己在赛场上打,队员开始在微信群里“各种发图片”“商业互吹”。
发了一会表情包后,情势急转直下。
队员们发现,跟预想的不一样,机器人一道堆的题都没做出来。
5 月 31 日 12 点,比赛结束,极度疲劳与失落的姜植元心态崩了,想到了退赛:上午机器人都打不过,你还指望着明天能打过人吗?
傲客劝了一把,还是让机器人上场吧。
机器人上场可以,尽管这场外卡赛接受人机配合混打,HALFBIT 只能接受由机器人自己完成堆的挑战,于是 HALFBIT 的人类队员没有坐在比赛台上。
姜植元躺在了酒店的床上,却怎么也睡不着,等待着复盘结果。
“怎么会做不出来?我写的代码肯定是没有问题的,调试了5天都没有问题,哪里出错了?”姜植元不服气,找主办方要来了上午的赛题,决定让他们的“外星人”服务器再跑一遍。
到了下午 4 点多,HALFBIT 的硕士小哥哥打电话给姜:“姜哥,我们蒙受了冤屈,这个东西我们能做出来。”
姜植元看了眼结果,机器人在 49 分钟内做出了两道堆的题,他一下从床上坐了起来。
他们立马把结果反馈给了傲客,同时发现自家的机器人在赛场表现还是不佳,几乎处于空跑状态。
“下午连个栈都跑不起来,说明机器的接口有问题。正好傲客打电话给我,说明天还有外卡赛,还有堆的题,要不要来参加一下。我这一想,原来我能做堆,正好明天有堆,我说一定要参加。我跟傲客说,现在有一个问题,我的本机能跑,连上你的服务器就跑不了。我申请,能不能用我的机器跑。如果用我自己的机器跑,就不存在接口问题了。”姜问。
裁判组和其他战队同意了,但公平起见,如果 HALFBIT 要用自己的服务器跑,得分不计分。
HALFBIT 决定背水一战。
6 月 1 日上午,乌克兰和俄罗斯的人类战队打出了第一道堆的题,大概用时 10 分钟左右,HALFBIT 的机器人用时 47 分钟。根据比赛规则,只要一个战队拿到一血(第一个做出该题),其他战队就算也做出了这道题,不得分、不通告,因此,在外国黑客选手拿到堆题的一血后,虽然 HALFBIT 的机器人全自动做出了同一道题,别的战队都不知道,全场没有一点动静。
HALFBIT 的队员们却激动不已,只有他们知道这意味着什么。
惊天大逆转发生在随后。
其他战队继续做着题,突然发现一道堆的题目下线了,但是现场并没有显示谁得分。国外战队立刻到裁判处投诉,说没有人得分,怎么这个题就下线了?裁判说,有队伍得分了。
彼时,16个战队进入决赛,4个机器人战队得分全为 0 分,大家都没有注意到积分榜上还有一支HALFBIT 静悄悄地躺在倒数第二的位置,怀抱着一个零蛋。
“由于HALFBIT 使用自己的服务器,得分但不计分,所以积分榜没有显示。”裁判缓缓吐出这句话。
这也许是一场最让人激动的不计分战役。
因为我们对这个比赛很重视,我们在 5 月 27 日就抵达北京。以前由老队长(张斌)带队,我第一次带着新队员出来,都是新人,没有经验,光带了一个服务器和自己的电脑,忘了带显示器和键盘。来到这儿,为了调试机器,我们就去网吧那儿租。
老板给我们讲原则,我们说,那我给你钱,100 块钱租半小时,很划算吧?老板说不行,我们网吧是正规网吧,有管理规定,不能随便乱借。
我们最后跑到移动营业厅收款阿姨的地方,给了 50 块钱,租了一个上面全是头油、头发、头皮屑的键盘,还有一个很小的显示器,这是第一个戏剧性的夜晚。
5 月 31 日,我们比赛打输了,差点解散战队。后来决定 6 月 1 号重新打,那天晚上,我们又没有显示器和键盘,因为我们已经把键盘还回去了,我们只好去租,结果营业厅 5 点半下班。
我们只好跑到网吧求那个之前不肯租键盘给我们的老板,结果发生了戏剧性一幕。因为我们刚刚打完比赛,身上挂着 DEF CON 的胸牌,网吧老板一眼就认出来了,说你们是打 DEF CON 的还是来参加会议的?我说,我们来打 DEF CON 的。他问,你们是战队?我说,对。他说,你们是中国队吗?我说,你看我的口音像是外国队吗?他说,那你出来干吗?我说,我们来租键盘。
网吧老板立刻说,租什么租,不用租,免费给你用,把身份证拿走,不用押在这儿了。你都来打DEF CON 了,我相信你。
正是有了这个关键的键盘,才有了后来的故事。
雷锋网原创文章,未经允许,禁止转载。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。