模糊測試應(yīng)用于二進(jìn)制程序的漏洞發(fā)現(xiàn)方法研究
發(fā)布時(shí)間:2018-05-29 02:11
本文選題:模糊測試 + 動態(tài)符號執(zhí)行 ; 參考:《廈門大學(xué)》2014年碩士論文
【摘要】:程序漏洞是網(wǎng)絡(luò)安全的根源問題之一,如何快速發(fā)現(xiàn)程序漏洞是目前安全領(lǐng)域的一個(gè)研究熱點(diǎn),特別是基于二進(jìn)制程序的漏洞發(fā)現(xiàn)技術(shù)研究由于其廣泛的適用性和難度更是目前研究的前沿領(lǐng)域。目前,已有的程序發(fā)現(xiàn)技術(shù)包括靜態(tài)分析技術(shù)、動態(tài)分析技術(shù)和滲透測試技術(shù),其中動態(tài)分析技術(shù)中的模糊測試方法因?yàn)槠涓咝詢r(jià)比:簡單的思想、出色的漏洞發(fā)現(xiàn)數(shù)量,成為安全研究人員和黑客使用最廣泛的漏洞發(fā)現(xiàn)技術(shù)。然而,傳統(tǒng)的模糊測試存在兩個(gè)關(guān)鍵問題:(1)生成的測試數(shù)據(jù)質(zhì)量不高,表現(xiàn)為測試深度和廣度不夠(2)漏洞確認(rèn)階段需要大量的人工參與。 針對模糊測試的數(shù)據(jù)生成問題,本文將其歸約為邏輯領(lǐng)域的公式可滿足性問題,使用動態(tài)符號執(zhí)行作為歸約實(shí)現(xiàn)手段。本文基于中間語言BIL介紹了動態(tài)符號執(zhí)行用于測試數(shù)據(jù)生成的基本理論和作為動態(tài)符號執(zhí)行重要性能優(yōu)化措施的動態(tài)污點(diǎn)分析理論,包括符號引入、符號演算、搜索策略、SMT求解器、污點(diǎn)分析策略和主要的難題。在此基礎(chǔ)上,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)離線動態(tài)符號執(zhí)行引擎DSEE, DSEE首先將主體是匯編指令序列的軌跡翻譯成BIL程序,然后基于BIL程序做符號執(zhí)行,其間,由原是系統(tǒng)調(diào)用幀和污點(diǎn)引入幀翻譯過來的BIL語句引入初始符號變量,依據(jù)BIL語句和表達(dá)式操作語義進(jìn)行符號演算,生成由BIL表達(dá)式描述的路徑公式,之后該公式被翻譯成SMT求解器Z3支持的SMT2格式并被求解,該解將作為一個(gè)新的輸入被繼續(xù)測試,而關(guān)于下一個(gè)測試輸入的選擇問題則使用了改進(jìn)的分代搜索算法。另外,本文還設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)帶污點(diǎn)分析的軌跡記錄引擎TLET,設(shè)計(jì)內(nèi)容包括:參照動畫模型的軌跡模型設(shè)計(jì)、隨機(jī)讀取軌跡幀的序列化容器設(shè)計(jì)、會引入污點(diǎn)的linux系統(tǒng)調(diào)用建模、基于數(shù)據(jù)依賴的污點(diǎn)傳播規(guī)則建模。本文對DSEE和TLET進(jìn)行了實(shí)驗(yàn)測試和驗(yàn)證,結(jié)果顯示,兩者能達(dá)到之前的設(shè)計(jì)要求。針對漏洞確認(rèn)問題,本文通過將棧溢出漏洞利用生成歸約為邏輯公式可滿足性求解實(shí)現(xiàn)了棧溢出漏洞的自動確認(rèn)和利用自動生成。 本文的主要貢獻(xiàn)有:(1)設(shè)計(jì)實(shí)現(xiàn)了離線符號執(zhí)行引擎DSEE和作為其基礎(chǔ)的軌跡記錄引擎TLET,實(shí)驗(yàn)證明兩者能正確工作,這兩者將是該領(lǐng)域后續(xù)繼續(xù)研究工作的平臺基礎(chǔ);(2)改進(jìn)了分代搜索算法,加入啟發(fā)因子,以期使搜索盡快朝高代碼覆蓋率方向前進(jìn),測試分析顯示,改進(jìn)后的算法能達(dá)到預(yù)期的目的;(3)使用動態(tài)污點(diǎn)分析和死碼移除作為DSEE的性能優(yōu)化措施,結(jié)果顯示,能很大程度上減少需要符號執(zhí)行的BIL語句數(shù)量,從而很大程度上減小了路徑公式尺寸,是有效的優(yōu)化措施;(4)將棧溢出漏洞歸約為邏輯公式的可滿足性問題,使用DSEE實(shí)現(xiàn)了該類漏洞的利用自動生成。
[Abstract]:A program vulnerability is one of the root causes of network security . How to quickly detect the vulnerability of the program is a research hotspot in the current security field . The existing program discovery technology includes static analysis technology , dynamic analysis technology and penetration testing technology .
In this paper , we design and implement dynamic symbol execution engine DSEE , which includes symbol introduction , symbol calculus , search strategy , SMT solver , point analysis strategy and main problem .
The main contributions of this paper are : ( 1 ) The design realizes the off - line symbol execution engine DSEE and the track record engine TLET as its base , and the experiment proves that both can work correctly , both of which will be the platform foundation for follow - up research in this field ;
( 2 ) The heuristic search algorithm is improved and heuristic factors are added in order to advance the search in the high code coverage direction as soon as possible , and the test analysis shows that the improved algorithm can achieve the intended purpose ;
( 3 ) Using the dynamic stain analysis and the dead code removal as the performance optimization measures of DSEE , the results show that the number of BIL statements requiring symbol execution can be reduced to a large extent , so that the path formula size is reduced to a large extent , which is an effective optimization measure ;
( 4 ) Return the stack overflow vulnerability to the satisfiability problem of the logic formula , and use DSEE to realize the automatic generation of the exploit .
【學(xué)位授予單位】:廈門大學(xué)
【學(xué)位級別】:碩士
【學(xué)位授予年份】:2014
【分類號】:TP393.08
【參考文獻(xiàn)】
相關(guān)期刊論文 前1條
1 韋韜;王貴駟;鄒維;;軟件漏洞產(chǎn)業(yè):現(xiàn)狀與發(fā)展[J];清華大學(xué)學(xué)報(bào)(自然科學(xué)版);2009年S2期
,本文編號:1949097
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/1949097.html
最近更新
教材專著