黑客你慫了,看到這個工具你眼圈紅了。。。。

淺黑科技2018-08-19 03:02:30


記一個看了會流淚,白客看了會沉默的工具


文 | 史中


前兩天逛知乎,看到兩張 gif 圖。


2002年世界盃,小羅吊射英格蘭門將希曼,球直掛后角,斷送了英格蘭的世界盃旅程。



十多年後,小羅再次吊射希曼,球卻高出橫樑。



已經中年發福的希曼伸手一指,彷彿在說:臭小子,你又來?兩人相逢一笑,十年恩仇煙消雲散。中哥笑著笑著,眼角卻有點溼潤。


就在準備拂去淚水之時,作為一個科普作者,不忘初心砥礪前行的中哥突然想到了一些有趣的觀點,於是一邊流淚一邊給你們打字。。。


其實我一直覺得,好的球員和好的黑客是一樣的


好的球員同時掌握兩個技能:不僅能繞過對方防守,還能用極騷的腳法一擊致命。


好的黑客也同時掌握兩個技能:不僅能找到系統的漏洞,還能用極騷的代碼利用這個漏洞,拿下對方的系統控制權。


以防你沒 get 到中哥的重點,我用騷粉的字再說一遍:


黑客攻擊一個系統,要分兩步。


第一步,找到一個漏洞。這相當於小羅各種花式踩單車繞開對方的防守隊員;


第二步,利用這個漏洞。這相當於小羅繞開對方的防守隊員之後,吊射希曼那臨門一腳。


注意,這兩步缺一不可。


缺了任何一步,小羅就秒變大帝。


說到這,就該進我們今天的主線故事了。


今天,中哥給你介紹一個“”,這個神器可以把“黑客中的李毅”加持成為“黑客中的亨利”。。。沒錯,就是這麼神奇!


朕護球像亨利




Let's ROCK



(0)先介紹主角



邢新宇,邢叫獸是我的好盆友。


雖說是好盆友,但我們從沒面基過,因為我在北京,他在賓州(注意,不是山東濱州,是米國賓州,我暫時還沒想到有神馬好的理由讓我跨過大半個地球來他)。


邢新宇 邢叫獸


邢叫獸可不是一般的叫獸,我稱他是“網絡安全界的愛迪生”。他工作在美國賓州州立大學,每隔幾個月,總有一個騷極了的發明問世。比如前兩天他就發明了一套“人工智能讀心術”,可以讀懂人工智能在想什麼。。。(如果你有興趣,可以點雞下面的鏈接:《對於人工智能,一萬個我愛你,不如一個我懂你》)


他有一位“好基友”,也是我的盆友,叫做 Jimmy Su。此人身形魁梧,力能扛鼎。。。


京東安全 Jimmy Su


Jimmy 是京東安全硅谷研究院的老大,同樣是一位網絡安全大牛,他的日常是為京東研究反黑客的最新武器。這麼說吧,黑客在代碼世界被他完虐,換到現實世界直接擼袖子跟他約架,還是會被他扔出五米遠。這是一個字典裡沒有“擼瑟”二字的男人。


就在剛才,這兩個神一樣的男人同時跟我語音通話,介紹了他們合作研究的這個“黑客神器”。神器有多叼呢?這麼說吧,我是全程跪著聽完電話的。。。


下面正式開始介紹這個工具。




(1)謎一樣的操作系統



把操作系統比作一個“黑暗迷宮”是最恰當不過的了。


為什麼這樣說呢?


中哥給你畫圖解釋解釋:


每當你輸入一個數據,它就會在程序裡順著流程前行。你可以想象,自己舉著這個數據,在伸手不見五指的迷宮裡順著路向前走;



遇到分叉路口,系統就會根據你手上數據的值為你選擇一個方向,然後推你過去;


每一次遇到分岔路口,你都會被指派一個方向。最後的最後,你會走到一個光明的出口。一旦出去,你手裡的“數據”就變成了一個“結果”,系統就完成了一組運算。


所以說,你進入迷宮的時候手裡拿了怎樣的數據,其實就幾乎註定了你會在哪個出口出來。(是幾乎,不是絕對)




剛才說的,是一個正常系統工作的樣子。那麼假設你是個黑客,攻擊系統時,它是神馬樣子呢?


是這個樣子滴:


你捧了一個特別奇葩的數據進入這個迷宮;



開始遇到分岔路口,系統還知道怎樣為你分配路線;


你一直走走走走啊走,走到九月九,突然到了一個路口。程序說,納尼?好像前面那幾條路都不適合你,你走牆吧。。。




於是,你就被程序一個騷操作,從牆裡推出去了。。。


現在,你到了一個“未知的空間”。所謂“未知空間”,就是一個你在迷宮裡正常地走,永遠不會到達的地方。。。



恭喜你大佬,這時你已經成功找到了一個系統漏洞~~~~



別急,你還記得中哥在文章一開始讓你注意的騷粉字體嗎?找到系統漏洞,只是攻擊系統的第一步,你還需要更難的第二步:利用這個漏洞!!!!!




(2)神器登場



我們接著上面的圖說。


你雖然到了未知的空間,但是並沒有離開這個迷宮,而你如果想徹底控制這個迷宮,需要找到一個隱祕的出口。


我把剛才那張圖再給你看一下,你看,從有些“未知空間”是可能通向有隱祕出口的。


這個出口無法得到正常的結果,

卻可以讓你逃離“迷宮”,

用上帝視角控制程序。


當然在現實的程序裡,這個迷宮比靈魂畫手中哥畫的複雜一萬倍。


所以,未知空間分為兩類:


有一種是可能讓黑客走向迷宮之外的,例如 A 區域;(這種區域對於系統來說才危險)


有一種是會把黑客困死在迷宮裡的,例如 B 區域。(這種區域對於系統來說不危險)



所以,從一個頂級黑客的角度看,要完成一次漂亮的進攻,首先要從正常的迷宮裡發現“未知空間” A 區域(這對應著漏洞發現),然後再從 A 區域找到脫離迷宮的隱祕出口“X”(這對應著漏洞利用。。。)


好的,各位屏幕前突出的腰間盤同志們,現在給你們提個問題:


在一個非常非常非常肥腸複雜的迷宮裡,你即使發現了一個“未知空間”,也很難知道這個未知空間究竟有沒有可能通向隱祕出口“X”,這腫麼辦呢?


在以往的經驗中,是這樣操作噠:


黑客一旦進入“未知空間”,之後都會根據自己的經驗,手動在黑暗裡探索,左摸右摸,七上八下,九淺一深。


但是這樣有個弊端,它其實很考驗具體黑客的技巧:


一個身經百戰經驗豐富的NB黑客,可能幾下就找到了出口“X”;


一個腰膝痠軟體力不支的弱雞黑客,可能走一天還是在“鬼打牆”。


如果因為黑客找不到出口,就說明這個“未知區域”是個無害的 B 類,未免有點武斷。因為這個區域很可能是有出口的,只是這位黑客沒有找到。。。


這就比較煩了呀。一個系統漏洞被爆出來,它到底是可以被利用的高危漏洞呢?還是根本沒前途的低危漏洞呢?這個判斷對於進攻一方的黑客來說很重要,對於防守一方的企業來說也很重要啊!


腫麼辦?


你說腫麼辦,找邢叫獸和 Jimmy Su 唄!!


呼~~~長舒一口氣。。。說了這麼多,他們研究的神器可算要登場了。。。(阿魯表情)


神器名為:



對不起,掏錯了。。。重來。神器名為:




FUZE,它怎麼用呢?


首先,你要有一個洗淨備用的漏洞。如果還沿用迷宮的比喻,就是說,在迷宮裡你要已經找到了一個“未知區域”。(這事兒靠自己,愛莫能助。。。)


然後,從“未知區域”到出口“X”的事兒,就交給“自動化程序”吧!


自動化程序的操作分為兩步。



@@@這第一步,叫做“模糊測試”。


模糊測試,其實是一種開掛的玩法。


它相當於你玩遊戲的時候,快遇到 BOSS 之前存一個檔。存檔之後就不怕了嘛,可以用各種姿勢隨便浪,總有一次偶然的機會,你能浪過這個 BOSS。


具體來說是醬紫的:


從“未知區域”開始往前走,遇到前面有岔路的時候就存檔,然後把此時的系統狀態複製很多份,形成無數個平行世界,在每一個平行世界分別隨便丟一個不同的數據過去,看看系統分別會指示我們往哪裡走。


總有一次,我們會被指引走到一個地方,這個地方有點特殊。雖然還在黑暗的迷宮裡,但是,我們能感覺到不遠處有光線通過縫隙照進來。此時,不要猶豫,馬上把接力棒交給第二步!



@@@這第二步,叫做“”。


符號執行相當於什麼呢?相當於“窮舉法”。


不太明白是不是,聽我給你解釋。


你還記不記得,當年 Windows95 上有一個神·屏保程序,就叫做“迷宮”。


Win95 這個迷宮屏保長這樣。

中哥似乎暴露年齡了。。。

不管了,為了科普拼了!!!


這個迷宮是自動生成的,有一個人用第一人稱視角在走。他是怎麼走的呢?有三個原則:


遇到路口就向左拐,

沒機會左拐就直走,

只能右拐時才右拐。


最終,它一定能走出這個迷宮。因為遇到路口就向右拐,就可以“遍歷”這個迷宮(就是走遍這個迷宮),既然能遍歷,肯定早晚能找到出口啊。。。


所以,所謂符號執行,意思就是遍歷這個迷宮剩餘的部分。如果它果真有出口的話,最終肯定能找到出口。如果它真的沒出口的話,我們就宣佈放棄。


如此一來,我們就藉助自動化的工具完成了從“未知空間”到迷宮出口“X”的探索過程!





(3)幾個燒腦的問題



我知道,可能有同學到這裡已經掉隊了,沒關係,回去再複習一下小標題(2),相信你會理解的。已經理解的童鞋,可能會有一些小疑問。



疑問1:你這種 FUZE 的方法,首先用的是“模糊測試”而不是“符號執行”,這說明你一開始並沒有遍歷每一種路徑,也就是說即使理論上存在出口“X”,你也不能百分之百保證找到它吧??


答:沒錯。


在黑暗中進行“模糊測試”,並不能保證能試探出每一條理論上存在的路徑。這就好像你雖然在打 BOSS 之前存檔了,但就是打了一萬次還是沒能幹掉 BOSS。遇到這種情況,中哥只能說:


好像又暴露了年齡


在 FUZE 程序裡,每一次重新來過,都需要耗費時間和算力。如果你算了幾個小時,甚至算了幾天,都沒有結果,也許就想放棄了。


但是請注意,理論上 FUZE 程序可以無限期一直運行。程序跑的時間越長,找到出口的可能性就越大。(這就像生活,咬牙多堅持一秒,就可能迎來人生的轉折,但很多人倒在了黎明)



疑問2:等等,“符號執行”這種方法不是可以遍歷迷宮嗎?既然這樣,為神馬不在一開始就用它??如果在一開始就用,豈不是肯定可以找到出口?


答:沒錯。


但是,還是剛才那個道理:遍歷迷宮需要嘗試每一條路,每走一條路,都需要耗費時間和算力。


如果從一進入“未知空間”,就開始使用“遍歷”的符號執行,岔路太多,要消耗的計算資源是天文數字。很可能走到死你都出不去。


說到這裡中哥想到了一個電影《暗襲》,講了幾位少女在地下迷宮裡,由於尋找出口的策略不佳,被怪獸當點心吃光光的悲慘故事。。


《暗襲》

非常醒腦的一張插圖

看中哥的文章

你!睡!不!著!


邢叫獸還告訴我,如果過早地使用“符號執行”方法,還可能會遇到很多“死循環”的漩渦(程序從A到B到C再到A),但是,一旦在迷宮裡走過了某些特殊的點位,往後就不太會遇到死循環的狀況了,這時就應當果斷地把探索方法換為“符號執行”。


上面這個示意圖裡,

你走著走著就會鬼打牆,

在一個地方空轉,

永遠出不去。



疑問3:吹了半天牛,你這套 FUZE 自動漏洞利用系統真的比黑客“人肉操作”更好使嗎?


答:沒錯。


叫獸可是教授耶,出家人不打誑語。


他找來網上的15個漏洞。這15個漏洞都是以前被頂級黑客發現的,黑客們也分別對這些漏洞進行了利用的嘗試。但是,他們只找到了其中5個漏洞的利用方法。(也就是說,他們找到了15個“未知空間”,最終卻只從其中的5個空間成功離開了迷宮。)


叫獸用 FUZE 試了一下,您猜怎麼著?發現了其中12個都有利用方法。這12個完整包含人類黑客找到的5個。也就是說,除了人找到的5個,機器還多找到了7個。這大概可以稱得上“智商碾壓”了。。。



疑問4:這個叫 FUZE 的工具,可以找到很多以前找不到的漏洞利用方式,豈不是會幫助黑客做壞事?


答:沒錯。


著名的宅男創業家王欣說過:技術無罪。


你應該這樣看:這個 FUZE 可以讓以前很多不能被利用的漏洞可以利用了。固然會讓黑客多了很多武器,但是對於防禦方——各個企業來說,他們也可以利用 FUZE 提前發現自己系統裡的漏洞利用方式,從而在黑客進攻之前,就做好防禦啊。


實際上,Jimmy Su 已經把 FUZE 這套系統用在自家京東服務器的防護當中了。他們先用 FUZE 把京東的服務器測試一遍,在重要的地方提前埋好地雷,如果有攻擊者進來,肯定是槍林彈雨屍骨無存,中道崩殂駕鶴西歸。


2018年8月,FUZE 剛剛實驗成功,邢教授和 Jimmy Su 就把它拿到了世界頂尖黑客大會 BlackHat 上,向全世界做了一次揚眉吐氣的演講;然後,他倆手拉手把這個系統給開源了。全世界的人現在都能在 GitHub 上下載 FUZE 自己玩了。。。



疑問5:所以,邢教授和 Jimmy Su 是真愛嗎??


答:沒錯。


接下來是高能預警,小標題(4)是給專業一點的人士看的,如果你不懂的話,沒關係,可以直接跳到(5),不影響對本文的理解,麼麼噠。。。




(4)幾個更燒腦的問題



能堅持到這裡的童鞋,應該都是內行了。肯定知道我剛才說的模糊測試就是“Fuzzing”,知道我剛才說的符號執行就是“Symbolic Execution”。


這兩種方法一點都不新鮮,很多玩二進制挖洞的黑客都在用。


你可能有幾個小問題:


疑問1、挖洞用的模糊測試和符號執行,和邢教授說的漏洞利用中的模糊測試和符號執行,有啥區別呢?


答:我個人覺得,在漏洞利用這一步使用模糊測試和符號執行更難。


這是因為在漏洞利用中,涉及到各大系統都有的“漏洞利用緩解機制”。


舉個小栗子:Linux 分為內核態和用戶態兩個空間。一般的漏洞利用,需要先把內核裡的棧遷移到用戶態。但是,有兩種坑爹的“漏洞利用緩解機制” SMEP 和 SMAP,就是專門防止黑客搞這種小動作的。


說白了,在現在這個世道,挖漏洞容易,利用漏洞才難。


之前在 DEF CON 上火爆一時的 CGC 機器人安全攻防大賽,參賽選手們其實就已經在用自動化的軟件來挖洞了。但是,這些機器人幾乎沒有考慮漏洞利用的事情,因為為了照顧機器人的水平,組委會已經把幾乎所有的漏洞利用緩解機制都關閉了。



疑問2、FUZE 尋找漏洞利用的方式,應該不是純模糊測試,而是融入了一些人類黑客的經驗吧?


答:他們確實是融入了人類的經驗。


邢教授告訴我,他們定義了20多個“內存空間狀態”,一旦達到這樣的狀態,就認為是漏洞利用成功了。


舉兩個例子:


1、如果寄存器已經可以執行任意命令,說明“控制流”已經被劫持了,這就是一種理想的“內存空間狀態”


2、如果內存的任意地址已經可以被寫入任意命令,說明“數據流”已經被劫持,這也是一種理想的“內存空間狀態”。


而 FUZE 所做的,就是讓機器來模擬人類的“套路”,努力讓內存空間靠近這20種狀態中的一種,從而達到擊穿系統的目的。


目前邢教授和 Jimmy Su 開發的 FUZE 程序,只對 Linux 內核的漏洞利用進行了適配,至於 MacOS 和 Windows,理論上都是一致的,只不過需要更多的時間和額外的適配工程量。




(5)活在未來的人



經過中哥苦口婆心的解釋,現在你應該明白:一個李毅般的黑客如何藉助神器 FUZE 獲得亨利一樣的腳法了。


目測在 BlackHat 上演講之後,這個世界級的安全神器,會在黑客的世界裡掀起一個不小的波瀾。因為,無論是對進攻者還是防禦者來說,都有了一件 NB 的新武器。


在掛斷電話之前,我認真地問了 Jimmy Su 最後一個問題:京東不是個百貨商店麼,為神馬你們會對安全這麼在意,以至於要研究出一個世界級的安全工具呢?


這個世界級的黑客工具,至少可以在兩方面幫助京東:



1、知道優先修復哪個漏洞。


對於京東來說,治下有無數服務器和系統。這些服務器就像幼兒園的小朋友一樣數量多,品種雜,有的還有點熊,所以這些服務器攜帶的漏洞也是多種多樣的。


這麼多漏洞擺在安全攻城獅面前,他們要怎麼辦呢?


你可能會說,都修了就行啊!對不起,你說的不是攻城獅,是鋼鐵俠。在人手有限的情況下,如何保證把有生力量用於加固最危險的地方,才是真實世界中我們要考慮的內容。


有了 FUZE,哪個漏洞可以造成致命傷害,就一目瞭然了。工程師只要按照危害程度從高到低,吹著口哨順次修復就好了。


2、抵禦高級攻擊。


可以說,漏洞就是武器。普通的漏洞相對容易找到,它就算是常規武器;而一個系統級的漏洞非常難以找到,但它就像是核武器。


在以前,一家公司雖然被“核武器”攻擊的概率很低,但現在看來,隨著地下黑產的泛濫,核武器越來越多地被普通黑客拿到,用來進行高級攻擊。一旦遭受“核武器”攻擊,後果不堪設想。


而聽完介紹你可能已經明白, FUZE 恰恰就是用來發現這種核武器攻擊路徑的。有了這個工具,可以讓京東遭受“暗算”的可能性大大降低。


Jimmy Su 語重心長地說:


因為金錢的誘惑,黑客對於企業的攻擊比你們想象中多得多。企業越大,被各種姿勢攻擊的可能性就越大。


而京東的服務器上,存儲的並不僅僅是京東的資產,更多的是用戶數據。而我們作為用戶安全的守衛者,守土有責!!


聽得出來,他的話言辭懇切。


從這個角度來說,作為京東的用戶,我很欣慰。。。


沒錯,最近兩年無數黑客大咖都在對外發出警告,黑客界“核武器平民化”的趨勢越來越快。在未來,很可能一些心智不成熟的小黑客,或者十惡不赦的壞黑客,手裡都能掌握“核武器漏洞”。


而為了應對這樣的未來,必須從現在開始研製更先進的武器。


歷史告訴我們,活在未來的人,從來都值得我們敬畏。



另:


文頭的小羅和希曼,來自之乎用戶 @於衷 在問題“歷史上有沒有令人感動的足球比賽?”中的回答。也許只有過來人,方知其中味。


李毅是值得尊重的球員。他像每個年輕人一樣,忠於自己的夢想和失業,他始終沒有借足球以外的東西宣傳自己。退役後仍然踏踏實實地繼續從事著解說、推廣等足球領域的工作。


想要下載 FUZE 研究的,可以自行上  Gayhub  Github 上找找,找不到再問我要。。。




再自我介紹一下吧。我叫史中,是一個傾心故事的科技記者。我的日常是和各路大神聊天。如果想和我做朋友,可以關注微博:@史中方槍槍,或者搜索微信:shizhongok

不想走丟的話,你也可以關注我的公眾號“淺黑科技”



----點擊圖片閱讀更多精彩文章----



----想看更多請點擊下方閱讀原文----




中國黑客的精神食糧

閱讀原文

TAGS: