漏洞分析是指在代碼中迅速定位漏洞。弄清攻擊原理,準確地估計潛在的漏洞利用方式和風險等級的過程。
扎實的漏洞利用技術(shù)是進行漏洞分析的基礎,否則很可能將不可利用的bug判斷成漏洞,或者將可以允許遠程控制的高危漏洞誤判成D.O.S型的中級漏洞。
一般情況下,漏洞發(fā)現(xiàn)者需要向安全專家提供一段能夠重現(xiàn)漏洞的代碼。這段代碼被稱為POC(Proof of Concept)。
POC可以是很多種形式,只要能夠觸發(fā)漏洞就行。例如,它可能是一個能夠引起程序崩潰的畸形文件。也可能是一個Metasploit的exploit模塊。根據(jù)POC的不同,漏洞分析的難度也會有所不同——按照MSF標準公布出來的exploit顯然要比幾個二進制形式的數(shù)據(jù)包容易分析得多。
在拿到POC之后。安全專家需耍部署實驗環(huán)境,重現(xiàn)攻擊過程,并進行分析調(diào)試,以確定到底是哪個函數(shù)、哪一行代碼出的問題。并指導開發(fā)人員制作補丁。
安全專家常用的分析方法包括:
(1)動態(tài)調(diào)試:使用OllyDbg等調(diào)試工具,跟蹤軟件,從棧中一層層地回溯出發(fā)生溢出的漏洞函數(shù)。
(2)靜態(tài)分析:使用IDA等逆向工具。獲得程序的“全局觀”和高質(zhì)量的反匯編代碼,輔助動態(tài)調(diào)試。
(3)指令追蹤技術(shù):我們可以先正常運行程序,記錄下所有執(zhí)行過的指令序列;然后觸發(fā)漏洞。記錄下攻擊狀況下程序執(zhí)行過的指令序列;最后比較這兩輪執(zhí)行過的指令,重點逆向兩次執(zhí)行中表現(xiàn)不同的代碼區(qū),并動態(tài)調(diào)試和跟蹤這部分代碼。從而迅速定位漏洞函數(shù)。
除了安全專家需要分析漏洞之外。黑客也經(jīng)常需要分析漏洞。比如當微軟公布安全補丁之后,全世界的用戶不可能全都立刻patch,因此,在補丁公布后一周左右的時間內(nèi),其所修復的漏洞在一定范圍內(nèi)仍然是可利用的。
安全補丁一旦公布,其中的漏洞信息也就相當于隨之一同公布了。黑客可以通過比較分析Patch前后的PE文件而得到漏洞的位置,經(jīng)驗豐富的黑客甚至可以在補丁發(fā)布當天就寫出exploit。
鑒于這種攻擊的價值,補丁比較也是漏洞分析方法中重要的一種,不同的是,這種分析方法多被攻擊者采用。