黑客袁哥:關於我的幾個故事

雷鋒網 於 24/07/2016 發表 收藏文章
引用一個真正的黑客,內心絕不平靜。

如果你見到袁哥,幾乎會懷疑上述判斷。你很難把眼前這個和善,甚至有些木訥的大叔和那個當年依靠一段代碼就可以隨意出入所有個人計算機和服務器的“賽博空間之神”聯繫起來。

但請相信我,一旦走進他的精神世界,你會看到驚濤駭浪。

相比文字和語言,袁哥更習慣用數字和代碼抒情。一個沉默的人不斷向世界索要答案,屢次掀翻了人們對賽博空間的根本認識。

現實就是這麼驚悚,我們愛這樣的劇情。


【袁哥 袁仁廣】
一支筆,一本書,一局棋

迷戀數學的人,身上都有一種冷峻的氣息。當袁哥還是小袁哥的時候,確切地説在小學的時候,就已經每天捧着數學理論的書籍,站在呼嘯而過的時間裏。

引用我生在農村,家裏條件並不好,所以我只能在小學圖書館或鎮上的新華書店看我喜歡的書。幸好我關心的數學方面的書籍,銷量都不是太好。一毛錢、兩毛錢就可以買一本。但即使是這樣,我也很難買得起,只挑最喜歡的、最厚的同時也是最便宜的那一本買回家。

到了中學的時候,袁哥已經開始看研究生的羣論內容,《布爾代數》《對稱恆等式》,你可以腦補同學們看他端着這些書時候的眼神。

買這些書,是需要代價的。

引用初中的時候,一支圓珠筆都是很好的文具了。有一次我和家裏要了幾毛錢想去買一支圓珠筆。但是正好我考試成績很好,得到了學校獎勵恰恰是一支圓珠筆。我告訴父母這就是我用錢買的筆,把省下來的錢買了一本書。

這次事件,以哥哥“告密”,袁哥被父親暴打結尾。那個年代,精神的脱貧走到了物質脱貧的前面。袁哥雖因一本書捱打,顯然運氣還不算太壞。

對數學和邏輯的偏執,讓他得以用獨特的視角和世界相處。

引用我有個同學的哥哥喜歡下象棋,所以我對象棋殘局很有興趣。下殘局的時候有一個重要的原則,那就是不能按照大多數人的思維考慮,而是要考慮所有邏輯上的可能性。比如在平時,你不會輕易拿車給別人吃,但是在殘局裏,你要考慮整個空間,其實每一步都可以抽象成布爾代數邏輯的一個步驟,用數學方法可以很好地解決這樣的謎題。

除了是殘局高手以外,少年袁哥還是撲克牌謎題高手,腦筋急轉彎高手。也許對於他來説,這個世界上沒有比嚴密的邏輯更性感的事物了。


【時任山東大學校長,數學家潘承洞】
風語者

因為仰慕山東大學校長、數學大師潘承洞的名望,嚴重偏科的袁哥依靠數學和物理兩門幾乎滿分的成績有驚無險地考入了山東大學數學系。不過,到了大學的袁哥面臨一個棘手的問題,那就是幾乎所有的課程他都在高中階段完成了自學。坐在課堂上發呆睡覺對他來説是一種折磨。

“我不想上大課,我喜歡自學,因為自學學得更快,也更深。”他的理由簡單明瞭。袁哥在物色一個讓他着迷的新世界,計算機就這樣正式走進了他的生命。

1993-1997年是袁哥的大學時代,當時的賽博世界還沒有像今天這樣連接成浩瀚的海洋。計算機病毒往往通過軟盤從一台計算機傳播到另一台計算機。袁哥回憶,當時就是想“搞明白病毒這塊兒”。一旦袁哥想搞明白某件事情,那就是真的要搞、明、白。你懂的。

由於病毒的特殊屬性,往往它們都藉由計算機底層邏輯傳播。“追隨”病毒的袁哥,也來到了賽博空間的底層。《彙編語言》《計算機原理》《操作系統原理》《磁盤控制器原理》,一節課都不去上的袁哥整日泡在圖書館裏看這些書。

引用學校裏上機是要錢的,所以我不能總是待在機房。我在機房裏用 debug 反彙編操作系統 BIOS 代碼,遇到需要仔細研究的代碼,我就用學校發的作業本手抄下來。有些代碼翻譯成高級代碼沒有幾行,但因為我抄的都是底層的彙編代碼,量非常大。後來我發現發的作業本都被我抄滿了。

對於他來説,大學四年獲得的最強技能,就是掌握了和計算機靈魂溝通的能力——二進制語言。對於計算機來説,二進制代碼就像每個人用來思考的“鄉音”,沒有任何一種語言比二進制語言更能直指“機器之心”。如今的袁哥在看二進制代碼的時候,可以自動腦補出高級語言的源代碼,能夠像這樣以計算機的世界觀思考的人,全世界並不多。他就像一個“風語者”,口中的一段抒情詩在普通人眼中卻像一陣風。

引用計算機的底層原理很枯燥,但如果感興趣的話,你發現掌握這個原理能夠理解和控制計算機的基本運行,這很舒服。如果你的計算機原理底子好,稍微加一些投入,基本都能成為大牛。

袁哥斬釘截鐵。

大學時代的袁哥不僅把各種編程語言爛熟於心,還從病毒身上見識了對這些語言最為詭譎精巧的運用。袁哥回憶道:

引用例如當時著名的幽靈病毒,可以自動變形,這就突破了依靠病毒特徵碼查殺的規則;

例如 DIR 病毒,可以徹底繞過防毒卡的機制,創造出一個新的感染方式。

“盜版販子”往事

對袁哥來説,跳出這個賽博世界的所有禁錮,是他內心不滅的江流。除了攻破學校機房的防毒卡導致病毒肆虐以外,破解當時叼炸天的殺毒軟件“KV300”也是他的行動之一。

【上世紀末最流行的殺毒軟件(沒有之一):KV 300 殺毒軟盤】

引用當時我在研究一個CPU運行的特別機制:DMA。一些信息由 CPU 直接傳輸,可能要等待很長時間,所以可以由 DMA 控制器直接控制內存實現輔助傳輸,為 CPU 分擔一些工作。我發現這個機制是可以被利用的,因為每當 DMA 傳輸完成之後,會產生一箇中斷,如果在這個時候進行攔截,就可以解析出它對磁盤的操作內容。用這種方法循環往復,就可以把整個殺毒軟盤的信息讀出來,完全繞過了它的加密技術。





當時其他人做的破解盤,隔一段時間就會被江民公司封殺,但是我的破解盤,只要更新病毒庫,就可以一直正常使用。

對於當年的“作品”,袁哥還是很滿意的。以至於當他因為英語沒過四級而拿不到畢業證和學位證的時候,他甚至想到,如果實在找不到工作,就去賣盜版盤算了。“人家正版賣260、360,我只要十分之一的價格,26、36,應該生意不錯。”

上天沒有給袁哥成為“盜版販子”的機會,他還是在海信謀得了一份單片開發的職位。

一鳴驚人

熟悉另一位黑客啟蒙者張迅迪的人都知道,因為供職的酒店最早接入寬帶,他才走上安全研究道路,創立了黑客界的黃埔軍校“安全焦點”。和張迅迪類似,袁哥接觸互聯網,是因為1997年海信就申請了網絡專線,這使得袁哥可以在工作之餘研究新的課題。這次,他想搞一下網絡協議。你應該了解,按照袁哥的劇本,但凡被他“搞”,就一定被搞到外焦裏嫩死去活來。

引用我學習網絡協議的時候,就一邊看書記憶,一邊反彙編成二進制代碼對照看。這就像學英語,一邊背單詞,一邊做對話才能記得牢。

這個因為沒考過英語四級而沒畢業的黑客居然很有幽默感地拿英語舉例子。

現實世界有無數種邏輯,而每一種邏輯,只要它存在,哪怕多麼離奇,多麼難以想象,可能都是改變世界的武器。袁哥抓住了一扇看起來怪異的邏輯之門。

引用在 Windows 9X 中,很流行網絡共享文檔。我研究共享協議代碼的時候發現,服務端對客户端進行密碼驗證的時候,密碼長度校驗是以客户端發來的信息為準。這件事情看上去非常奇怪。因為經驗告訴我們,密碼有多長,一定是要以服務器上存儲的密碼為準的。我馬上寫了驗證代碼,從客户端發送信息,告訴服務器只驗證一個字節,服務器果然就只驗證一個字節。而一個字節只有256種可能,非常好破解了。

袁哥黑進了同事和領導的電腦,一邊看着他們的工資條,一邊慨歎世界的神奇,一邊立志要做一個網絡安全專家。



Windows 98 界面(謹供懷舊)】

這是他發現的第一個真正意義上的漏洞。從此之後,袁哥一發不可收拾。

引用
  • 他發現了名噪一時的 Windows 共享密碼驗證漏洞,可以隨意訪問共享文件;
  • 他參與創建國內老牌安全公司綠盟,研究出很多高危 IIS 服務器漏洞,可以隨意訪問任何 IIS 網站服務器;
  • 他研究每個個人電腦都使用的 RPC 協議,發現了很多嚴重的 RPC 服務緩衝區漏洞,可以直接突破所有 Windows 計算機的權限,實現遠程入侵。

21世紀初,在迅速普及的互聯網大潮中,很多技術愛好者登陸黑客論壇時,袁哥已經成為了黑客界的一盞精神燈塔。
一開始,袁哥積極地把發現的漏洞提交給微軟,但彼時的微軟並不是如今那個願意為漏洞買單的微軟,對方不置可否的態度讓袁哥逐漸喪失了提交的熱情,以至於2001年當袁哥發現了可以用來攻擊任何一台電腦的 RPC 服務的致命漏洞時,他選擇了沉默。直到兩年之後,美國18歲少年傑弗裏通過同樣的技術製造出衝擊波蠕蟲病毒,席捲半個世界。

數據流——賽博世界的盜夢空間

雖然在2000年之前,微軟對於白帽子的態度一直是冷漠的,但這並不妨礙袁哥對網絡安全的探索。袁哥覺得,這是他人生最“高產”的時候。每天吃飯、睡覺、上廁所的時間都在想代碼。他在考慮的最核心的命題是——能否用一個通用的安全模型來輔助甚至代替自己挖掘漏洞。

想要理解袁哥的工具,需要先了解漏洞的本質。

引用計算機的本質是程序處理。根據輸入的數據不同,一串代碼會在計算機內部打開無數不同的門,最終成為一個結果。而當輸入的信息符合一定的特殊條件,它就會在計算機內部找到一扇奇特的門並且試圖打開它。這時,賽博世界就會遭遇崩潰,一個漏洞就此產生。

也就是説,找到這個特定的代碼,就找到了可以擊潰系統的漏洞。所以漏洞挖掘有兩個主要方向:

引用1、模糊測試。模糊測試是黑盒測試的一種,通過隨機給系統一些數據,觀察系統是否有異常反應。然而,一個系統是如此龐大,輸入的信息又有無數種可能,這個可能性空間之廣袤是指數級的。所以如果盲目測試,即使到宇宙毀滅,甚至都不能測試所有可能性的億億分之一。

2、白盒測試。通過研究系統的源代碼或二進制代碼,發現其中的邏輯漏洞和潛在問題。這種方法同樣存在問題,那就是對於一個複雜程序來説,代碼量之巨大已經超越了人的閲讀能力。而且一個程序中有很多是描繪界面內容的代碼,這不是漏洞挖掘者關心的,而在閲讀之前,你是無法把這些無用的代碼剔除出來的。


【軟件運行的邏輯樹示意圖】

袁哥的工具結合了模糊測試和白盒測試,他稱之為“數據流”的測試方法。

根據研究員的興趣點,構造有針對性的數據,讓系統進行處理。在處理的過程中,可以通過斷點在調試器裏查看程序運行的狀態,而通過調試器裏停留的代碼,可以反向推測出是哪段代碼在處理這段數據。用這種方法,不用通過大量的代碼審計,就可以直接定位到關鍵的一段代碼,對這段代碼進行反彙編,就可以讀懂它的“心思”。根據這段代碼,可以推測出它的所有邏輯分支,從而根據這些全量的分支有針對性地重新構建新的數據,進行進一步的有針對性的嘗試。

聽上去似乎並不困難,然而這個系統的最難之處還未到來。

引用雖然你能看懂這段代碼,但是你需要用數學的方法把這段代碼的內容抽象出來,才能推演出它的所有邏輯分支,有些人類很好理解的邏輯,想要用程序自動化求解,就需要很複雜的邏輯描述。而且針對每一個細小的邏輯點,其後都可能跟隨着極多的路徑層級,在這種情況下同樣有無數的可能性存在,這就涉及到約束求解的數學問題。

袁哥説。

正如盜夢空間中所展現的那樣,袁哥對於數字和世界邏輯的深刻見解,在賽博世界最深處的 Limbo,在只有幾個字節的騰挪空間裏,給了他洞悉真相的判斷。


上帝之手



2008年左右,微軟難以抵擋無數漏洞的侵襲,開始逐步推出漏洞利用緩解措施。這類機制並不會減少漏洞出現,而是讓漏洞的利用變得非常困難。它們就像一堵堵牆,你明知道漏洞就在對面,但是你卻無法接近。包括 DEP、ASLR、emet,包括後來推出的 cfi 都是有效的漏洞利用緩解措施。

袁哥站在牆後面,準備“搞”一下。他突然覺得眼前的景象,像極了近十年前的一段記憶。

1997年的時候,宏病毒正在流行,這是一種利用腳本代碼執行來搞破壞的病毒。由於病毒只能依靠文字屬性的腳本進行攻擊,所以包括金山在內的很多研究機構覺得這類病毒的破壞力非常有限,甚至説它“只能用來惡作劇”。

但袁哥不這麼認為,他相信自己的判斷:“宏代碼雖然是解釋執行,但解釋執行也是執行,和機器碼沒有本質區別。”他寫了幾篇文章,證明了把二進制病毒代碼編譯成了純文本格式的可能性。也就是説,一個攻擊程序可以看上去完全是字母和數字的樣子。這大概相當於把一把沙土通過改變原子的排列結構而轉化成了金子,讓人歎為觀止。

時光又回到2008年,袁哥突然發現,自己在十年前提出的世界觀有可能從更高的維度繞過所有的漏洞緩解措施。那就是,用腳本(文字)代碼編寫攻擊程序,通過某種精巧的設計,攻擊過程中根本不會觸發微軟用以防護的 DEP 芯片。

然而,把一串攻擊代碼變成純文本説起來簡單,實現起來卻非常繁雜。
兩三個月的時間,袁哥做了如下N件事:

引用
  • 通讀了 JavaScript 和 VBScript 的詳細原理,補齊了代碼編譯的短板;
  • 找到了 IE 上的攻擊漏洞;
  • 嘗試了無數攻擊路徑,配置了很多漏洞的攻擊組合;
  • 完成攻擊代碼的編寫和調試。

這個攻擊方法,通殺從早期的 IE 3 到彼時剛推出的 IE 9 之間的所有版本。甚至兩年後 IE 10 推出的時候,在不改動一個代碼的情況下, 仍然可以完成攻擊。這就是袁哥最引以為傲的技術:DVE(數據虛擬執行技術 ),他本人稱之為“上帝之手”。

引用這就像在另一個更高維的空間裏做出動作,所有人都無法看到動作的過程,只能承受動作的結果。

他解釋説。

代碼,在袁哥眼裏只是一種工具。站在“上帝位置”的人,甚至可以用一首詩,一首每個單詞都有意義的詩來擊潰一個系統。所謂“談笑間,檣櫓灰飛煙滅”不過如此。

然而,這個遊走在賽博空間的上帝終究還是觸碰了人類的商業困境。2010年,微軟想要用35萬美金收購“上帝之手”——DVE 技術,但是這個技術在袁哥心中,遠遠超過這個價值。這個生意並沒有成功,直到三年後,袁哥的好友,大名鼎鼎的黑客教主 TK 獨立向微軟提交了一套對抗技術,獲得了那著名的十萬美金。由於其中涉及到的技術和 DVE 技術有交集,微軟才在某種程度上封堵了 DVE 攻擊的一部分。

2014年,袁哥選擇在互聯網上公佈 DVE 的技術細節,曾經的上帝降落凡塵。

【湛盧劍(一稱湛瀘)】

湛瀘

袁哥在期待自己的下一個 DVE。
為此,這位改寫了互聯網安全歷史的黑客宗師加盟騰訊,建立了全新的實驗室,名曰“湛瀘”。

袁哥告訴雷鋒網(搜索“雷鋒網”公眾號關注):“湛瀘,是春秋時代名匠歐冶子所鑄名劍。‘仁義之劍,大巧若拙’是世人對湛瀘的評價。”這也是已過不惑之年的袁哥的某種內心寫照。他需要一把劍,一把能再次穿透雲霄的劍。

對於袁哥來説,雖然自己的靈感和成績無法被複制,但是他意識到,自己比以往更需要一個團隊的配合。

引用現在的漏洞挖掘和利用已經到了比較高級的階段,如果沒有團隊和一整套技術力量支持,有些東西靠一個人的力量是做不到的。

他説。

至於加入騰訊的原因,袁哥給出了簡單的理由:“TK、吳石都在,我了解他們,對他們的為人都很認同。安全這個行業就是人聚人。”

2016年3月,湛瀘實驗室成立。袁哥站在賽博世界的邊疆,等待新的戰友。

那個讓他成為上帝的瞬間,終會歸來。


資料來源:雷鋒網
作者/編輯:史中

留言


請按此登錄後留言。未成為會員? 立即註冊
    快捷鍵:←
    快捷鍵:→