當網絡安全捍衛者須要編譯exploit代碼時,這已經不是第一次了。天天發現針對Windows和Linux超過十多個的新exploit對咱們來說也不是罕見的,不幸的是,你不可以始終信任exploit的做者或者安全技術文章。
首先,許多exploits並非廣告。它們要麼根本不起做用,要麼僅在特定的時候起做用,要麼僅在一個很小範圍的機器中運行。你測試的exploit代碼越多,你所能明白的指令真相也就越多。
其次,許多網絡包含的防護措施彌補了exploit的***向量。好比說,若是有一個exploit可以在Windows XP SP2被利用,若是你的電腦包含基於硬件的防緩衝區溢出芯片(好比說NX),這個exploit可能就不能被利用了,或者它的影響可以下降到最小程度。也許你的機器包含防病毒掃描工具、IPSes、或者基於主機的防火牆,可以有效的阻止***。當不知什麼時候漏洞的補丁發佈了,它真的就能夠修復這個漏洞嗎?在你通過試驗以前你是不可以知道的。
最後,測試exploit代碼可以給你好的示例,可以讓你的小組成員和管理者相信你的電腦在安全防禦上有多成功。
一些exploits是以編譯過的形式發佈的:它們僅僅是以可執行文件形式運行,你不得不手工編譯或者使用一種腳本語言來運行它。在這種狀況下,要作的一件事情就是找到exploit代碼。若是你訂閱了若干安全郵件列表,也許在你的收件箱中就有一封電子郵件可以連接到某個exploit代碼。
我最喜好的一個exploit代碼郵件列表是FrSIRT,可是最近它們關閉了它們站點上的公開漏洞利用代碼部分。如今要想參與只能經過付費這一種方式了。
還有其它一些安全郵件列表仍舊公開exploit代碼,包括「Full Disclosure」(全面披露)公共安全郵件列表以及Dave Aitel的 Dailydave。
Packet Storm也是一個好的站點,儘管經過搜索常常返回太多的信息而且須要進行一些數據挖掘。Metasploit也始終提供exploit和shell代碼資源,但它不像其它一些站點那樣全面。
若是上面所說的對你都沒用,那就使用你最喜歡使用的搜索引擎而後鍵入適當的關鍵字。一般你會找到這個exploit做者本人的e-mail地址,而後從那裏能夠找到通向代碼的連接。大多數時間做者的web站點上都會有關於這個exploit的更多細節、exploit代碼更新以及許多其它你之前都沒有據說過的相關的信息。
大多數瀏覽器exploit代碼是以JavaScript、VBScript、Perl或者Python腳本語言的形式出現的。把這些腳本語言拷貝到基於ASCII的文本編輯器(好比KWrite、記事本等等),而後把它們保存爲.HTM或者.HTML文件,而後使用你的瀏覽器打開它。
非瀏覽器腳本層exploits在瀏覽器以外運行,它須要帶一個或者多個語法參數的本地腳本引擎才能運行。例如,也許須要像下面這樣運行這個exploit代碼:
perl –w exploit.pl –n –w –h 10.1.1.1 –i
打開這個腳本文件而後研究一下位於最頂端註釋的運行時指令。研究代碼也可以讓你保證在這裏面沒有潛伏祕密的***代碼和惡意代碼。我曾經就看到過除了竊取當前用戶密碼文件和發送到遠程IP地址以外別的什麼都不作的exploit代碼。若是你不可以在運行以前充分分析這份代碼,那麼就在一個虛擬的環境中運行它,或者根本就不要去運行它。
其它類型的exploits必須編譯成可執行文件纔可以測試它。一些惡意代碼可以被幾乎任何相關語言的編譯器編譯,可是其它的都必須經過特定的編譯器纔可以建立(這通常都會在代碼開始的註釋中說明)。比方說,C+程序一般可使用任何C+編譯器編譯成可執行文件。在Linux環境中,我一般使用 GNU的C編譯器-gcc,鍵入像這樣的命令就能夠:
gcc –o OutPutFileName InPutName.c
參數-o後面的文本指出了要輸出的可執行文件的名字。
有時候,一個編譯器須要附加的支持文件和庫文件才能正常工做。Exploit代碼做者或者代碼的註釋中一般會對此進行說明,若是不這樣作,編譯的時候就會出現錯誤。
其它的exploit代碼程序須要特定的編譯器才能進行編譯,一般做者會說明的。大多數狀況下,做者使用公共的編譯器,好比Borland公司或者微軟公司的。
若是你不會編譯代碼,那就下載預編譯的exploit代碼。這樣就不須要親自研究源代碼,也不須要本身動手編譯它。然而,若是它包含其它惡意命令或者bugs,你永遠都不會知道。Exploit代碼做者一般會稍微禁止一下他們的exploit代碼,不讓它們很容易就能夠運行。經過在最終用戶一邊的研究工做,他們認爲專家需求的增長可以減小對***的崇拜。 web