第54章 黑客園哥

字數:2988   加入書籤

A+A-




    “黑客”(hacker)這個詞,最早出現在黴國麻省理工學院(mit)的計算機文化中,被創造的時候,完全是一個正麵的稱呼。

    1961年,mit得到了第一台pdp-1計算機,學院技術模型鐵路俱樂部(tech model railroad cl)的成員把它作為最時髦的科技玩具,最能幹的聰明人會自豪地稱自己為“黑客”。他們認為,要完成一個hack,就必然包含著高度的革新、獨樹一幟的風格和出色的技術。後來,這些黑客,成為了mit人工智能實驗室的核心成員。《hackers》的作者史蒂文·利維,把他們稱為計算機革命的英雄。

    然而,隨著計算機的普及,計算機病毒泛濫,黑客開始和計算機犯罪聯係在一起。業內有些人在使用“黑客”一詞時略帶貶義,要麽暗指有點書呆氣的無法融入社會的人,要麽暗指那些專愛編寫惡意的、“不標準的”計算機代碼的“非專業”程序員。

    為了澄清“黑客”的概念,傳統意義上的黑客認為隻有擁有高技術水平和職業道德的人才能被稱為hacker,那些惡意入侵計算機係統的人應該被稱為駭客(cracker,入侵者)。

    2003年,華國能被稱為真正傳統意義上的“黑客”的人屈指可數,但園哥絕對是當之無愧。

    從98年開始陸續發現win9x共享密碼漏洞、ode、decode等windows致命漏洞,被公認為國內漏洞挖掘行業的奠基者。尤其ode漏洞不僅被評為2000年十大漏洞之首,同時也是“華黴兩國黑客大戰”中的主角。

    一開始,園哥積極地把發現的漏洞提交給微軟,但那時的微軟並不是之後幾年那個願意為漏洞買單的微軟,麵對微軟不置可否的態度,他逐漸喪失了提交的熱情,以至於2001年發現了這個可以用來攻擊任何一台windows電腦的rpc服務的致命漏洞時,他選擇了沉默。

    不過這並不妨礙園哥對網絡安全的探索,在很長一段時間,每天吃飯、睡覺、上廁所的時間都在思考,考慮的最核心的命題是——能否用一個通用的安全模型來輔助甚至代替自己挖掘漏洞。

    要做到這一點非常難。有些人類很好理解的邏輯,想要用程序自動化求解,就需要很複雜的邏輯描述。而且針對每一個細小的邏輯點,其後都可能跟隨著極多的路徑層級,在這種情況下同樣有無數的可能性存在,這就涉及到約束求解的數學問題。

    園哥是個迷戀數學的人,從小學就開始看數學理論書籍,到了中學開始研究“布爾代數”、“對稱恒等式”,甚至於研究生才學的“群論”。以至於嚴重偏科依靠數學和物理接近滿分的成績進入魯東大學數學係後,幾乎所有專業課程都已自學過,於是在特色一個能讓他著迷的新目標的時候,計算機走進了他的世界。

    大學時代的園哥不僅對各種編程語言爛熟於心,還從計算機病毒身上見識了對這些語言最為詭譎精巧的運用。例如當時著名的幽靈病毒,可以自動變形,這就突破了依靠病毒特征碼查殺的規則;例如 dir 病毒,可以徹底繞過防毒卡的機製,創造出一個新的感染方式。

    園哥覺得這些電腦病毒非常有意思,就想要搞明白是怎麽回事。以園哥的個性,一旦想要搞明白某件事情,那就是真的要搞、明、白!於是就有了華國挖洞第一人的園哥。

    當初聽聞市麵上出現了一款能防住ddos攻擊的軟件時,他是不信的,所以沒有太關注。直到最近,lsd公布的漏洞和他之前找出的漏洞非常相似,同在綠盟的同事告訴他說這款軟件利用的可能也是同一個漏洞,這才引起他的注意。

    這款名為“龍傲天”智能防禦軟件真的實現了防ddos的功能,隻不過是采用了一種非常劍走偏鋒的方式,不過這個軟件本身有很多值得研究的地方。第一個是軟件靠什麽分析出正常的訪問和ddos攻擊。第二個是後台發起的真正攻擊對漏洞的利用方式。此外,他還想知道,當這個漏洞被堵上的時候,這個軟件還能有什麽作為。

    園哥一下切中了這款軟件的最關鍵之處。識別正常的訪問和ddos攻擊是非常困難的,尤其攻擊者還可以偽造數據包和進行協議欺騙,再不濟模擬正常的訪問流量以硬碰硬,靠帶寬的優勢來壓倒目標。

    防跟蹤的功能難不倒園哥,花了一些時間,他進入到了軟件的核心邏輯代碼,通過反編譯觀察軟件的處理流程。經過幾天幾夜的研究,他就弄清楚了大概的流程。

    原來軟件在接受請求的時候,首先會去查一下本地的黑名單庫,這個黑名單庫是從後台服務器傳送過來的。如果請求來源地址在黑名單之中,軟件會直接將此請求過濾掉。如果請求被某種機製判斷為可疑時,會將相關信息上傳到後台服務器中處理。

    後台服務器對信息進行確認,如果確為ddos攻擊,則將此來源地址加入黑名單,下發回軟件客戶端,並發動反擊。園哥通過sniffer工具捕捉到反擊的數據流,通過事件發生的時序證實了這一點。

    這套係統最精髓的就是請求的判斷機製和後台服務器的處理了,園哥開始研究判斷機製的代碼。可惜畢竟沒有拿到源代碼,單靠匯編語言一時之間難以窺得這種機製實現的全貌。他初步判斷這段代碼應該有機器學習的功能,進而推斷這個軟件也許具有一定的人工智能。

    可惜後台服務器用的是unix係統,安全防護做得比較到位,一時之間沒法攻破,不然如果拿到後台的服務程序,可以更快速深入了解整個處理機製。

    再來研究通過捕捉到的漏洞利用代碼,整個過程非常的利落,精心設計的溢出數據,化數據為指令,利用緩衝區溢出的數據修改pc指針的值,指向希望執行的代碼,提升權限,完成攻擊,沒有一點冗餘的動作。

    那段執行並提升權限的代碼很精妙,就像在另一個更高維的空間裏做出動作,所有人都無法看到動作的過程,隻能承受動作的結果。這很像他一直在苦苦追尋的通用漏洞利用模型,他決定要把這件事搞明白。