0
上周,雷鋒網(wǎng)編輯收到永信至誠小伙伴的私聊,“小老弟,周末我們有場'機機大戰(zhàn)'來不來?”
見編輯發(fā)送過去迷惑的表情包,對方進一步解釋到,“就是RHG大賽(Robo Hacking Game),給黑客解放雙手,讓他們搞出來的機器人互相PK。”
很難想象網(wǎng)絡安全大賽上黑客們不搞機了,開始嗑瓜子觀戰(zhàn)的畫面……
行吧,為了滿足好奇心,編輯在上周日來到了比賽現(xiàn)場,參加BCTF-RHG漏洞挖掘北京分站賽。
一進門,大家的姿勢都是這樣的,
這樣的,
開個玩笑,只不過現(xiàn)場的確沒有以往大賽的緊張氣氛而已。
大賽有總共有十支戰(zhàn)隊參賽,其中有蟬聯(lián)兩屆人工智能網(wǎng)絡安全攻防大賽冠軍的國防科技大學Halfbit戰(zhàn)隊,國內(nèi)外知名的LANCET、Mech-Whale戰(zhàn)隊,深耕產(chǎn)業(yè)和科研領(lǐng)域的丁牛科技DigApis戰(zhàn)隊、全球能源互聯(lián)網(wǎng)研究院有限公司RAD戰(zhàn)隊等。
當然,這次比賽只是二進制方向的漏洞挖掘賽,接下來還有Web、綜合性系統(tǒng)攻防等。
當天上午,指針劃過10:30,比賽正式打響。10:30:54,聯(lián)合戰(zhàn)隊OutIsland率先拿下一血;10:30:55、10:30:55,OutIsland接連挖到漏洞,三連擊;隨后Halfbit戰(zhàn)隊與RAD戰(zhàn)隊連續(xù)釋放華麗大招,其中RAD戰(zhàn)隊在比賽進行到短短32分鐘時橫掃賽場,連破pwn、棧漏洞溢出等四道賽題,戰(zhàn)績驚人。
經(jīng)歷了六個小時的跌宕起伏,最終全球能源互聯(lián)網(wǎng)研究院有限公司的RAD戰(zhàn)隊榮獲第一名,獲得獎金一萬元,聯(lián)合戰(zhàn)隊OutIsland和來自國防科技大學的Halfbit戰(zhàn)隊分獲二、三名,分獲獎金五千元、三千元。比賽前五名還獲得了殿堂級賽事——在DEF CON CHINA中舉行的BCTF總決賽的入場券。
作為第一次參賽就拿到第一名出乎所有人意料的黑馬RAD戰(zhàn)隊,宅客頻道編輯充滿了好奇,于是在比賽結(jié)束了抓住他們聊了聊。
【RAD】
雷鋒網(wǎng):戰(zhàn)隊名字有什么來歷?
RAD:我們四個人都是國家電網(wǎng)紅隊成員,平時的主要的工作就是圍繞國網(wǎng)公司的網(wǎng)絡安全情況,進行挖掘漏洞和漏洞分析,以及開展相關(guān)的技術(shù)研究和系統(tǒng)研發(fā),包括一些應急處置工作。
其實在我們?nèi)∶麜r候,理論上應該取國家電網(wǎng)公司某戰(zhàn)隊,但我們也不知道這次比賽會取得什么樣的成績,怕丟了國網(wǎng)的臉。然后就隨便取了RAD,R表示機器人robot,A表示attack,D表示defense,是攻防機器人的意思。另外也算一個諧音代表,我們是國家電網(wǎng)公司的紅隊,紅隊就是red。
雷鋒網(wǎng):比賽具體內(nèi)容是什么?
RAD:20道題分了不同的方向,其中包括棧溢出,堆溢出,格式化字符串,邏輯漏洞等不同二進制漏洞溢出方式。簡單說就是通過修改程序運行的內(nèi)存操作,讓程序運行我們想要運行的一段代碼。這次比賽我們主要對棧溢出和格式化字符串相關(guān)的算法提升做了一些準備,堆溢出也有研究,但和其他隊可能有一些差距,每個隊伍都有不同強項。
雷鋒網(wǎng):和以往的攻防對抗賽相比,這次機器人比賽有何不同?
RAD:是有很大不同的。人與機器人最大區(qū)別是什么?是邏輯分析能力,很多人一眼就可以看到的邏輯,機器可能需要很多步分析。
在比賽中,面對各種漏洞邏輯,人可能一眼就看到出哪些地方存在溢出點,用機器來做必須要進行模糊測試,發(fā)現(xiàn)崩潰的點,然后再進行跟蹤,以及生成漏洞利用樣本。
總之,整個漏洞挖掘順序和關(guān)注點是不一樣的。機器要執(zhí)行很多測試樣例和路徑的構(gòu)造,對機器性能和對其調(diào)度控制算法,包括挖掘路徑的優(yōu)化能力都有很大要求。
但是機器比人的優(yōu)勢什么?是計算能力遠超人類。在計算一個測試用例時候,人算一個,機器已經(jīng)算了十個、一百個。就是說機器在自動化方面的優(yōu)勢是計算能力和測試樣例、模糊測試計算方面,在邏輯分析方面弱一些。主要是因為人邏輯分析能力還沒有轉(zhuǎn)化為樣本或者算法,植入到機器人。機器人之后的提升還是要依靠將人的邏輯轉(zhuǎn)化為樣本,進一步提升。這類比賽的題目對人來說稍微簡單些。
雷鋒網(wǎng):為什么你們寫的程序能拿第一名?
RAD:我們關(guān)注RHG比賽是在2017年時候,18年初我們就開始著手研發(fā)機器人程序。
我們整個紅隊隊伍有七十多人做漏洞挖掘相關(guān)工作,平時就編制了不少挖掘工具和挖掘腳本,包括我們也有專門負責對人工智能算法平臺做性能優(yōu)化的相關(guān)人員。另外,在電表、配電終端以及電動汽車充電樁等場景都有通過人工的方式進行二進制程序漏洞挖掘技術(shù),我們也積累了很多漏洞挖掘方法和樣本。
我們在準備機器人時候首先借鑒了國外的一些開源框架,比如N,F(xiàn)R,在此基礎(chǔ)上結(jié)合我們紅隊人員自己編寫的漏洞挖掘樣本和挖掘方法。并且對程序中的核心算法和符號執(zhí)行的技術(shù)流程,做了相應的優(yōu)化升級。另外我們碰到過很多場景和案例,并且把人員經(jīng)驗轉(zhuǎn)化到了機器里面。
我們的原型系統(tǒng)在18年8月份成型,之后實驗室會用以前比賽的樣題進行測試,或者內(nèi)部構(gòu)造一些樣例,簡單的人工解題也可以拿來嘗試。我們也會設(shè)計不同場景,用邏輯的方式讓他來做測試。整個過程就是根據(jù)人工經(jīng)驗解題的思路修改代碼。
除此之外,相比高校隊伍,我們可能在工程性和機器人功能性方面略有優(yōu)勢,機器人的性能優(yōu)化和穩(wěn)定性方面在比賽中是很重要的。我們也是邀請了一些外部高校老師進行技術(shù)指導。幾方面結(jié)合,就保證了在這次的比賽當中我們能夠取到一些成績。
雷鋒網(wǎng):從成績來看,只有四支戰(zhàn)隊得分,其余戰(zhàn)隊0分是為什么?
RAD:很好理解。
做棧溢出或堆溢出,崩潰的時候,必須讓程序跳到你想要跳到的內(nèi)存位置上去。用計算機語言來說,差了一個字節(jié),差一個位,一個比特都會達不到效果。所以在挖掘方面來說,機器人一定要足夠的精確。
還有一些機器人可能在本地挖掘漏洞是可以成功的,但比賽的賽制是什么?你要把漏洞利用的樣本提交到靶機上面去。而靶機上的運行環(huán)境可能與本機內(nèi)存符號地址存在偏差,或者說代碼運行的時候有一點位置偏移。但就這一點變化可能就造成在本地可以解出來,在靶機上卻解不出來,拿不到flag。
另外在本地情況下,函數(shù)路徑很多。在進行符號執(zhí)行時候,需要保證所有的測試覆蓋整個函數(shù)邏輯,覆蓋所有執(zhí)行點,才能找到某處漏洞。而在機器不夠智能的情況下,可能就找不到相應的點。
這就是就會有很多的不可控因素,所以雖然我們這次拿了第一名,我們也只解出了四道題,后面還有很多題目是有計劃空間的。
雷鋒網(wǎng):這樣的程序可以用于實際場景嗎?
RAD:由于實際環(huán)境中的代碼量遠超比賽題目的代碼量,所以目前在實際工作中只能用它來做模糊測試,但要用它進行漏洞的自動化利用,目前還很難。還存在漏洞挖掘路徑爆炸等很多性能上面的問題,需要進一步解決。
從web的角度,我覺得機器能夠替代很多人工挖掘工作。從二進制角度來說,因為二進制漏洞挖掘過程中有很多計算分析,需要計算邏輯,然后構(gòu)造測試用例,要做程序跟蹤的情況下,人工有很大難度。這時候它可以作為人工的一種輔助工具,幫助做一些模糊測試,找到二進制程序可能會存在哪些崩潰參數(shù)。
但是進一步面對為什么會造成漏洞崩潰?怎么造成的?怎么利用?這些問題時候,雖然目前的框架提供了技術(shù),但還不夠完善,要針對不同的環(huán)境做定制化改造。其實他能夠幫助生成一些程序流圖的分析,或者其他輔助工作。
總之,目前除了在模糊測試以及某些特定場景,在其他的漏洞分漏洞利用方面,可能價值還不是很大。
對于我們國家電網(wǎng)來說,確實存在很多場景比如電表、充電樁以及配電終端等,里面二進制程序的漏洞挖掘需求較多,如果完全依賴于人工進行漏洞挖掘工作量非常大。但這些機器人程序后面還是能夠逐漸的取代一些員工的基礎(chǔ)操作,或者用他代替些重復性工作。
雷鋒網(wǎng):比賽過程中是否存在突發(fā)情況?
RAD:整個比賽過程對我們來說完全是黑盒,我們能知道的只有得分了,可以在屏幕看到。至于怎么算出來了,機器有什么狀況,是不是碰到什么錯誤,我們完全不知道。具體要等事后把日志拿來分析一下才能知道情況。
宅客頻道:比賽過程中有什么特殊感受?
RAD:緊張,特別是上午,說不出來的緊張。特別是比賽一開始別的隊伍就連續(xù)拿到三個一血,而我們自己的……毫無波動。而且賽制要求是第一個解出題目得300分,第二個解出得200分,之后解出的就得100分。
說白了,機器人比賽考驗的是兩個能力,一是漏洞挖掘能力,而是能挖出來的情況下,拼誰的算力速度更快,另外也需要有一些技巧,比如可以自動判斷哪種題型更適合我,優(yōu)先算簡單的題,我們還做了一些設(shè)置,如果某題前三血都已經(jīng)被被人拿到,那我們會自動放棄這一題目。
雷鋒網(wǎng):為什么你們愿意參加RHG比賽?
RAD:其實人工智能技術(shù)目前還是比較熱的,我們希望在人工智能上面做一些投入研發(fā)。其一是固化我們漏洞挖掘人員的一些經(jīng)驗,這樣一來不管人員如何流動,技術(shù)和經(jīng)驗都是固化在機器人里的。其二,我們還是希望能夠通過這種技術(shù)的提升,挖掘出我們?nèi)斯o法挖出來的一些漏洞。最終靠著這種技術(shù)積累,形成一個產(chǎn)品。
如果要給當前的自動分析與利用能力規(guī)檔的話,可能僅僅是在玩具上層,軟件特征與漏洞特征難以描述加之人工經(jīng)驗難以建模,都令人有些泄氣。
但AlphaGo的存在又顯示了基于深度學習等人工智能算法在復雜推理問題中的潛在價值。
在現(xiàn)場沙龍環(huán)節(jié),國防科技大學的張斌博士提出,深度學習等在圖像領(lǐng)域的應用表明難以描述的特征或許不用描述,增強學習在圍棋、電腦游戲領(lǐng)域的應用表明難以建模的經(jīng)驗或許不用建模。
而在軟件漏洞分析領(lǐng)域的應用,似乎還有很多路走。
BCTF-RHG漏洞挖掘北京分站賽暨人工智能安全的進階沙龍在中關(guān)村國家自主創(chuàng)新示范區(qū)核心位置的北京中關(guān)村集成電路設(shè)計園開幕。大賽由百度安全主辦,永信至誠承辦。10支機器人戰(zhàn)隊表現(xiàn)優(yōu)異者將獲得2019年DEF CON CHINA中的 BCTF-RHG決賽的直通資格。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。