宋廣軍 宋婉約
摘要:結(jié)合fuzzing技術(shù)、API序列特征匹配技術(shù)及特征函數(shù)參數(shù)檢測技術(shù)等,開發(fā)研究了一種新的軟件漏洞檢測系統(tǒng)。能有效發(fā)掘Window環(huán)境下的軟件中潛在的未知安全漏洞,提高了軟件漏洞檢測效率。
關(guān)鍵詞:模糊檢測 軟件漏洞 漏洞發(fā)掘
中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2012)10(b)-0004-01
隨著軟件行業(yè)飛速發(fā)展,許多問題也相應(yīng)產(chǎn)生,如軟件開發(fā)周期短、測試量少、安全性低等,很多軟件在倉促的工期之下被頒布出來,這些問題會導(dǎo)致很多軟件漏洞的產(chǎn)生,軟件漏洞的存在,會影響軟件的正常運(yùn)行,若漏洞被黑客利用,系統(tǒng)就很可能被非法入侵和攻擊。為提高軟件漏洞檢測的效率,針對這些存在的問題,設(shè)計(jì)開發(fā)了一種新的軟件漏洞檢測系統(tǒng),利用本系統(tǒng)能夠自動檢測到軟件的功能性、安全性等方面出現(xiàn)的漏洞。利用這個(gè)系統(tǒng)簡化測試漏洞與缺陷的工作,并提高軟件漏洞的檢出率和正確率,實(shí)踐證明該系統(tǒng)對軟件漏洞測試的有效性。
1 系統(tǒng)原理與結(jié)構(gòu)設(shè)計(jì)
這種軟件漏洞檢測系統(tǒng)初步構(gòu)想是利用目標(biāo)程序的API序列與已訓(xùn)練過的特征庫進(jìn)行對比,從而檢測出軟件的顯式及隱式漏洞。然而,在人為不對目標(biāo)軟件進(jìn)行操作的情況下,僅能夠獲取程序加載段的API序列,需要一個(gè)自動化檢測模塊使檢測范圍擴(kuò)展至整個(gè)程序。因此,在該軟件漏洞檢測系統(tǒng)中引入了模糊測試(Fuzzing)理念,通過對交互界面的控件掃描及分類,不斷地向程序接口輸入大量有目的構(gòu)造的隨機(jī)化操作,其目的是迫使程序報(bào)出錯(cuò)誤,檢測出漏洞及缺陷。但僅僅報(bào)出錯(cuò)誤是不夠的,還需要對錯(cuò)誤進(jìn)行監(jiān)控,所以加入了漏洞回溯模塊,這樣對漏洞的發(fā)掘及過程查找很有益,也簡化了測試人員的工作,系統(tǒng)功能模塊劃分如圖1所示。
本系統(tǒng)針對中、大型企業(yè)軟件開發(fā)及測試人員,檢測運(yùn)行在Windows平臺下的應(yīng)用軟件,并從底層函數(shù)調(diào)用序列的特征匹配、特征函數(shù)參數(shù)檢測與Fuzzing漏洞檢測方法三個(gè)方面進(jìn)行底層與表現(xiàn)的多重檢測,在系統(tǒng)設(shè)計(jì)中,對API特征庫的創(chuàng)建也是比較重要的任務(wù)之一。
2 系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)
2.1Fuzzing模塊
Fuzzing,也叫做模糊測試,是一種在各大、中軟件公司中常用的測試辦法,也是較有效的測試辦法。其原理是對于目標(biāo)軟件產(chǎn)生大量的用例,替代了人工獲取軟件的漏洞情況,當(dāng)其中的某一個(gè)用例使得軟件異常,那么可以獲取這個(gè)用例并對其中的操作進(jìn)行整理分析,從而能夠追溯到比較合理的軟件漏洞過程。在系統(tǒng)引入Fuzzing理念之前,只可以對程序加載段進(jìn)行API序列分析,至于運(yùn)行過程中則無法監(jiān)控或者只能以人工代替輸入,當(dāng)引入Fuzzing后,便能夠?qū)⒈O(jiān)控范圍擴(kuò)展至程序運(yùn)行段,從而更全面地檢測漏洞。
Fuzzing是本軟件漏洞檢測系統(tǒng)中的重要模塊,它發(fā)送數(shù)據(jù)到目標(biāo)程序的指定控件,進(jìn)行大量的測試任務(wù),是用以觸發(fā)軟件中未知的漏洞的方法。
2.2APIHOOK模塊
Detours是一個(gè)強(qiáng)大的工具,提供了簡單易用的函數(shù)接口來攔截win32系統(tǒng)下API調(diào)用和為一個(gè)已在運(yùn)行的進(jìn)程裝入一個(gè)動態(tài)鏈接庫。Detours庫有三個(gè)主要的函數(shù),一個(gè)是原API函數(shù);另一個(gè)是需要自己編寫的替換函數(shù),再有一個(gè)是過渡函數(shù)。
在實(shí)現(xiàn)過程中,將有關(guān)HOOK的代碼整合到一個(gè)動態(tài)鏈接庫中。在exe文件中,Detours庫提供一個(gè)函數(shù),該函數(shù)可以啟動被檢測軟件,并直接將動態(tài)鏈接庫注入到被檢測軟件中。這樣軟件所有調(diào)用的API就會被記錄下來,連接起來就是API的序列,調(diào)用API時(shí)傳遞的參數(shù)也會被記錄并保存下來,這樣就實(shí)現(xiàn)了API序列的跟蹤。
2.3數(shù)據(jù)處理模塊
數(shù)據(jù)集是某些數(shù)據(jù)的集合;項(xiàng)集是項(xiàng)的集合,或者說就是泛指的集合;一個(gè)數(shù)據(jù)集到另一個(gè)數(shù)據(jù)集支持度是指兩個(gè)數(shù)據(jù)集重合的數(shù)據(jù)占后一個(gè)數(shù)據(jù)集的比例。在這里使用顯露模式尋找被測軟件的漏洞比例,它的優(yōu)點(diǎn)是在尋找兩個(gè)數(shù)據(jù)集之間多個(gè)屬性上的差異時(shí)結(jié)果明顯直觀。
顯露模式(EmergingPatterns,EPs)是指那些從一個(gè)數(shù)據(jù)集到另一個(gè)數(shù)據(jù)集支持度發(fā)生顯著變化的項(xiàng)集,它們能夠捕獲數(shù)據(jù)庫中兩個(gè)數(shù)據(jù)集之間的多個(gè)屬性上的差異,兩個(gè)支持度的比稱作EP的增長率。每個(gè)EP是一個(gè)多屬性上的測試,并且可能在區(qū)分一個(gè)類的實(shí)例與另一個(gè)類的實(shí)例方面非常強(qiáng)。一般地,EP的區(qū)分能力大約正比于它的增長率和它在目標(biāo)類的支持度。
在經(jīng)過匹配之后,將找到所有存在問題的序列及其位置,結(jié)合已有的完整序列,可以計(jì)算出有問題的序列占總序列的百分比。這種對數(shù)據(jù)的分析處理過程可以幫助系統(tǒng)更有效地對軟件測試數(shù)據(jù)進(jìn)行分析評估,提高軟件漏洞檢測的效率。
3 結(jié)語
軟件漏洞的存在,會影響軟件的正常運(yùn)行,甚至可能被非法入侵和攻擊。而現(xiàn)有的測試技術(shù)對人力有很強(qiáng)依賴性,效率也不高,為提高檢測軟件漏洞的效率,開發(fā)了自動化程度較高的軟件漏洞檢測系統(tǒng)。系統(tǒng)運(yùn)用模糊測試(Fuzzing)技術(shù)進(jìn)行數(shù)據(jù)檢測,并利用目標(biāo)程序的API序列與已訓(xùn)練過的特征庫進(jìn)行對比,從而檢測出軟件的顯式及隱式漏洞,大大提高了軟件檢測的自動化程度,系統(tǒng)的主要檢測對象是用于Windows平臺上的應(yīng)用軟件,并且含有交互性界面及數(shù)據(jù)輸入模塊,可以迅速的發(fā)現(xiàn)并定位出被檢測軟件中存在的漏洞,并向用戶提交檢測報(bào)告。系統(tǒng)方便快捷、漏洞檢出準(zhǔn)確率高、誤報(bào)率低,有很強(qiáng)的實(shí)用性與創(chuàng)新性。
參考文獻(xiàn)
[1] 王清.0day安全:軟件漏洞分析技術(shù)[M].北京:電子工業(yè)出版社,2008,4.
[2] Anley·C,JohnHeasmanFehx“Fx”Linder,等,著,黑客攻防技術(shù)寶典:系統(tǒng)實(shí)戰(zhàn)篇[M].羅愛國,鄭艷杰[譯].2版,北京:人民郵電出版社,2010,1.
[3] 孔東林,羅向陽,鄧崎皓,等.基于AC自動機(jī)匹配算法的入侵檢測系統(tǒng)研究微電子學(xué)與計(jì)算機(jī),2005,22(3):89-95.
[4] 郭焱,蔣澤軍,王麗芳.基于API截獲技術(shù)的實(shí)時(shí)數(shù)據(jù)采集[J].微處理機(jī),2008,5:112-115.