[發(fā)明專利]基于可執(zhí)行代碼逆向分析的漏洞挖掘方法無效
| 申請?zhí)枺?/td> | 200810207769.5 | 申請日: | 2008-12-25 |
| 公開(公告)號: | CN101482846A | 公開(公告)日: | 2009-07-15 |
| 發(fā)明(設(shè)計)人: | 薛質(zhì);王軼駿;施勇 | 申請(專利權(quán))人: | 上海交通大學(xué) |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 上海交達(dá)專利事務(wù)所 | 代理人: | 王錫麟;王桂忠 |
| 地址: | 200240*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 可執(zhí)行 代碼 逆向 分析 漏洞 挖掘 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種計算機技術(shù)領(lǐng)域的漏洞挖掘方法,具體地說,涉及的是一種基于可執(zhí)行代碼逆向分析的漏洞挖掘方法。
背景技術(shù)
目前已有多種針對漏洞進(jìn)行挖掘及檢測的技術(shù),但往往在檢測中需消耗大量的人力和物力,如采用黑盒方式的自動挖掘技術(shù)。為增加檢測效率,在代碼檢測中也常常采用一些通過規(guī)范來檢查代碼安全性的工具,這種基于匹配查找的方式可以快速檢測出固有漏洞,但對于邏輯性的代碼漏洞卻無法進(jìn)行詳細(xì)的檢測。基于逆向分析的漏洞發(fā)掘?qū)嶋H上屬于灰盒測試方法,是采用逆向分析技術(shù)來輔助漏洞的挖掘,既能直接對問題域進(jìn)行衡量,又測試了盡可能多的脆弱點。同時可以降低檢測中消耗的人力成本,同時對于邏輯性漏洞也具備較高的檢測率。
另外一種對基于目標(biāo)代碼的檢測方法,是先用反匯編工具對待測程序進(jìn)行處理,再依賴基于源碼的檢測分析技術(shù)來對所得結(jié)果進(jìn)行處理。返回點檢測技術(shù)是一種通過判決調(diào)用的返回點位置(堆或者棧)來判決正在執(zhí)行的代碼是否是溢出代碼的方法。這種漏洞發(fā)掘方法對普通的溢出代碼的防范是有效的,但是存在不少眾所周知的缺點,許多病毒程序繞過其檢測的問題依然可以入侵到系統(tǒng)中。基于可執(zhí)行代碼逆向分析的漏洞挖掘技術(shù)由于可以針對程序的決策進(jìn)行判斷,因此對基于目標(biāo)代碼的檢測方法可以進(jìn)行補充的檢測,防止病毒程序繞過。
經(jīng)對現(xiàn)有技術(shù)文獻(xiàn)的檢索發(fā)現(xiàn),中國專利申請?zhí)枮椋?00610103592.5,名稱為“一種整型溢出漏洞自動化挖掘方法”。該技術(shù)自述為:“設(shè)置填充字符長度、內(nèi)容及存儲地址,在指定的存儲地址用指定的字符填充數(shù)據(jù),被測對象執(zhí)行對文件型數(shù)據(jù)或網(wǎng)絡(luò)協(xié)議型數(shù)據(jù)的處理,捕獲被測對象是否有錯誤發(fā)生,如果有錯誤發(fā)生,記錄出錯的位置或/和保存出錯的數(shù)據(jù),并修改存儲地址,如此循環(huán)測試,直到被測對象的數(shù)據(jù)尾為止。”利用該方法,能夠?qū)崿F(xiàn)黑盒測試或獨立的安全測試人員在不知道數(shù)據(jù)格式的情況下,通過自動對數(shù)據(jù)內(nèi)容遍歷的方法來嘗試發(fā)現(xiàn)可能存儲整型變量的位置,從而有效地進(jìn)行整型溢出漏洞挖掘工作,提高軟件開發(fā)的質(zhì)量及穩(wěn)定性。該檢測技術(shù)屬于黑盒測試的一種,其發(fā)現(xiàn)的漏洞類型比較單一,并且無法知道造成漏洞的輸入可能造成的其他問題。采用基于可執(zhí)行代碼逆向分析的漏洞發(fā)掘可以對漏洞產(chǎn)生的所有分支進(jìn)行檢查,因此可以挖掘出其他類型及代碼分支帶來的漏洞。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種基于可執(zhí)行代碼逆向分析的漏洞挖掘方法。使其能夠在符合測試要求的前提下,盡可能多地穿越代碼樹的所有節(jié)點,檢測受測軟件中固有的與邏輯的脆弱點,同時對問題域進(jìn)行衡量,判斷漏洞的危害,主要用來輔助網(wǎng)絡(luò)服務(wù)型軟件和本地應(yīng)用型軟件的漏洞挖掘和安全性檢測。
本發(fā)明是通過以下技術(shù)方案實現(xiàn)的,本發(fā)明對于可執(zhí)行文件,這里是指Windows系統(tǒng)下的PE格式文件,采用的是灰箱的檢測方法,利用調(diào)試軟件捕獲程序的漏洞信息,通過分析漏洞造成程序脫離安全態(tài)時的具體代碼,并逆向分析程序指令流及輸入決策信息,動態(tài)分析交互數(shù)據(jù)和決策。挖掘出程序中的固有和邏輯漏洞,確定漏洞的危害,從而達(dá)到檢測漏洞的目的。
本發(fā)明包括如下步驟:
第一步,對可執(zhí)行二進(jìn)制代碼進(jìn)行軟件漏洞的捕捉,軟件漏洞捕捉用來提升對軟件系統(tǒng)錯誤的可觀測性。具體為:使用受檢測軟件內(nèi)置調(diào)試程序或附加到軟件上的調(diào)試程序,將低觀測性的軟件變成高觀測性軟件。漏洞捕捉的可行性在一定程度上需要取決于受測軟件與調(diào)試程序的結(jié)合度。其結(jié)果將用于指導(dǎo)是否將軟件系統(tǒng)錯誤和導(dǎo)致錯誤的外部輸入進(jìn)行深入的漏洞探測。
第二步,當(dāng)漏洞捕捉完成后,由于此時已確定受測軟件存在一定的可檢測漏洞,則將造成漏洞的輸入數(shù)據(jù)作為主要輸入,因為在輸入后系統(tǒng)將脫離安全態(tài)。對于脫離安全態(tài)的程序點檢測其完整的代碼覆蓋情況。代碼覆蓋主要使用指令流追蹤的技術(shù)。代碼覆蓋記錄能夠測試盡可能多的、已生成的代碼樹分支。
第三步,通過對代碼覆蓋檢測觀察程序執(zhí)行路徑,再通過附加到軟件的調(diào)試器追蹤指令流,盡可能多地收集程序的內(nèi)部狀態(tài)信息,實時收集狀態(tài)信息從而指導(dǎo)重構(gòu)惡意輸入,有效影響正在執(zhí)行的程序的狀態(tài),彌補了黑盒測試的盲目性、片面性,并以此確定出現(xiàn)漏洞的具體位置前執(zhí)行的指令流,來完成漏洞點的回溯。
第四步,指令流回溯尋找到的漏洞點,通過追蹤代碼執(zhí)行分支來確定軟件漏洞和外部輸入的聯(lián)系。判斷受測軟件基于用戶提交的數(shù)據(jù)所做出的決策。通過追蹤交互數(shù)據(jù)在內(nèi)存頁中斷點的情況有利于追蹤外部輸入的流向,確定漏洞和外部輸入的關(guān)聯(lián)關(guān)系,最終用來確定漏洞的危害性。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海交通大學(xué),未經(jīng)上海交通大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200810207769.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 從多形態(tài)可執(zhí)行程序到多形態(tài)操作系統(tǒng)
- 操作可執(zhí)行非易失性存儲器中的部分可執(zhí)行程序的方法
- 一種實現(xiàn)編譯器錯誤的自動定位方法和裝置
- 參數(shù)傳遞方法、單板加載器、單板和單板仿真器
- 一種可執(zhí)行模塊的提供、加載方法及終端
- 調(diào)用重定向機制構(gòu)建Unix可信平臺的方法
- 用于運行可執(zhí)行代碼的方法、處理模塊及系統(tǒng)
- 用于系統(tǒng)適配的動態(tài)程序評估系統(tǒng)和方法
- 一種用于管控可執(zhí)行程序的方法和裝置
- 一種安全運行可執(zhí)行文件的方法及系統(tǒng)





