淺友們大家好~我是史中,我的日常生活是開撩五湖四海的科技大牛,我會嘗試各種姿勢,把他們的無邊腦洞和溫情故事講給你聽。如果你特別想聽到誰的故事,不妨加微信(微信號: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. 他們的歌很好聽,好吧主要是小姐姐太好看了)
文中有關漏洞挖掘和利用的技術科普引用自《黑客你慫了,看到這個工具你眼圈紅了》,在此向作者表示衷心感謝!反正作者也是我自己。。。。
再自我介紹一下吧。我叫史中,是一個傾心故事的科技記者。我的日常是和各路大神聊天。如果想和我做朋友,可以搜索微信:shizhongpro
或者關注微博:@史中方槍槍 @淺黑科技
你還可以搜索我們的知識星球:淺黑科技。
【淺黑科技】系頭條號簽約作者。