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