999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于靜、動態分析相結合的漏洞挖掘分析方法

2016-01-01 06:40:06孫文靜
軟件 2016年8期
關鍵詞:程序分析

傅 濤,孫文靜

(1. 江蘇博智軟件科技有限公司,南京 210019;2. 南京審計大學計算機與軟件學院,南京 210044)

一種基于靜、動態分析相結合的漏洞挖掘分析方法

傅濤1*,孫文靜2

(1. 江蘇博智軟件科技有限公司,南京210019;2. 南京審計大學計算機與軟件學院,南京210044)

基于源碼與二進制文件的的靜態漏洞挖掘分析可以檢測出很多漏洞,但同時存在很多漏報以及誤報。動態分析技術分析動態調試器中程序的內存、狀態以及調試器的寄存器等信息,進而發現潛在的安全漏洞,具有較高的準確率和較強的針對性。但動態漏洞分析技術在輸入數據格式較為復雜時,很容易構造出觸發程序異常的數據。針對二者的不足,本文提出了一種基于靜、動態結合的漏洞挖掘分析方法,為漏洞挖掘分析增添了新的思路。

漏洞挖掘;靜態分析;動態分析;靜、動態相結合

本文著錄格式:傅濤,孫文靜,等. 一種基于靜、動態分析相結合的漏洞挖掘分析方法[J]. 軟件,2016,37(8):95-98

An Vulnerability Analysis Mining Method Based on Static and Dynamic Analysis

0 引言

靜態漏洞分析技術都需要借助一些靜態分析工具來“理解”程序源代碼或者反匯編代碼,其執行效率比較高。但是,靜態分析缺少必要程序的運行時信息,它很難處理程序邏輯中由動態因素引起的復雜條件分支和循環,因此分析結果將會不可避免地出現大量的漏報或誤報[1]。此外,基于二進制文件的靜態分析技術需要有扎實的逆向基礎,能夠對大量高復雜度的反匯編代碼進行細致的分析,因此很難將分析自動化。而且靜態分析工具的設計開發一般都是針對某種語言及其應用平臺,不能對多種語言和不同平臺都能勝任,同時它們的針對性也不夠強。

動態分析技術通過動態檢測程序的運行狀況,可以準確的發現出異常的發生,從而找出目標程序的漏洞或缺陷,具有較高的準確率和較強的針對性。不足的是,動態漏洞分析技術在輸入數據格式較為復雜時,很容易構造出觸發程序異常的數據。

基于此,亟待需要探索出新的漏洞挖掘方法,結合現有漏洞挖掘技術的優點,融合靜態分析和動態分析之長,以增強漏洞挖掘的目的性和自動化,提高漏洞挖掘分析的效率。

本文提出了將靜態分析與動態分析相結合的漏洞挖掘分析方法,通過兩者的結合以彌補兩者的缺陷,同時又發揮各自的優勢,達到更好地漏洞挖掘分析效果。

1 漏洞靜態分析技術

靜態分析技術是指在程序非運行情況下,對程序的源代碼進行分析,直接在程序的邏輯上尋找潛在的漏洞,主要包括基于源碼和基于二進制文件的漏洞挖掘分析技術。

1.1基于源碼的漏洞挖掘分析技術

該技術是指對程序的源碼通過人工或者運用半自動化、自動化工具進行閱讀分析,檢測程序中可能存在的安全漏洞的關鍵點。目前使用最為廣泛的是詞法分析、控制流分析和數據流分析等。

詞法分析的核心是特征數據庫,特征數據庫中包含了從詞法、語法、語義等方面進行分析得出的可能產生安全問題的函數,如strcpy、gets、malloc等。再在特征數據庫的基礎上對程序進行分析,尤其對那些囊括函數的地方進行重點分析[2]。

控制流分析主要是用來發現程序的執行流與數據操作相關的特征。它的基本方法是對程序的基本塊進行標識,標識出程序最基本的模塊,以及模塊之間的調用關系。它包含了基本模塊和控制流程兩個部分。通過對基本模塊的分析,得出函數、變量、緩沖區等重要的信息,再結合對控制流程分析而得到的程序控制結構的信息,進行宏觀和微觀的分析。所以這種分析方法能夠得到比較全面的分析結果。

而數據流分析是建立在控制流分析的基礎上的,在控制流分析得到程序的基本模塊和控制流程后,利用這些信息對程序的函數和進程的數據信息進行全局性的分析。其具體的實現方法是在通過建立程序各個節點的數據流方程,然后通過求解來收集系統的數據流信息。

基于源代碼掃描分析技術屬于靜態分析技術,都需要借助一些靜態分析工具來“理解”程序源代碼或者反匯編代碼。雖然執行效率而言比較高,但是由于是靜態分析缺少必要程序的運行時信息,這種分析方法很難處理程序邏輯中由動態因素引起的復雜條件分支和循環,因此分析結果將會不可避免地出現大量的漏報或誤報[3]。

1.2基于二進制文件的漏洞挖掘分析技術

其基本思路:反匯編可執行程序,識別出目標文件中的函數、庫函數以及各種間接跳轉,獲得程序的控制流圖;跟蹤分析反匯編出來的代碼或者腳本語言,識別出一些可疑的匯編代碼序列,進而發現一些存在漏洞的關鍵信息。

目前基于二進制文件的漏洞挖掘分析技術包括二進制補丁比對、有向圖分析、污點數據傳播分析、IDC腳本分析技術等。

1.2.1二進制補丁比對技術

一般的軟件漏洞公告中都不會對漏洞的確切位置進行公布,也不會指出漏洞導致的具體原因,所以已公布的漏洞的信息其實是比較少的。通過補丁比對分析,找出補丁程序具體所做修改之處,定位漏洞代碼,然后進行分析找出漏洞觸發的原因,得到更多漏洞的相關信息。

目前常用的二進制補丁比對方法主要分為基于文本的比對,基于匯編指令的比對以及基于結構化的比對。前種方法只適用于若干字節變化的比較,不適合文件修改較多的情況。而第二種方法可以圖形化的顯示比對結果,同時可以發現一些非結構化的變化(如緩沖區大小改變等),但是仍然存在輸出結果范圍大,誤報情況多和漏洞定位不精確的缺點,比較有代表性的工具有eEye的EBDS軟件。

1.2.2有向圖分析技術

有向圖分析技術利用反匯編軟件IDA得到反匯編文件,然后直接通過廣度或者深度優先搜索算法,搜索匯編代碼中的Ret,Call指令。根據軟件邏輯流程得出函數調用有向圖,用每個調用函數點作為有向圖的節點,其中包含了函數的入口地址,局部變量使用情況,分配的堆棧空間大小,調用者傳遞的參數以及返回地址等信息。然后在有向圖中判斷每個調用函數是否進行了參數邊界檢測,特別是那些容易引發漏洞的函數調用。

1.2.3污點數據傳播分析技術

對于沒有源碼的二進制文件,污點數據傳播分析通過雙向數據流分析,從污點數據輸入開始,自上而下形成一棵傳播樹;再從反匯編文本中搜索可疑函數的調用,然后從這些函數調用的地方開始向上回溯,找到兩者相交的位置(可能不存在交點),從而產生污染流路徑。將污染數據標記為“tainted”,通過程序語句傳播“tainted”數據,凡是對“tainted”數據進行添加、插入、合并等操作,那么它的結果值也肯定是“tainted”。最后再分析交點處指令,判斷是否進行了污點數據的長度檢查,進而判斷漏洞是否存在。與有向圖分析技術類似的難題是,污點數據傳播分析技術在搜索字符串操作函數時受到編譯器優化的影響,同時構造完整的污染點數據也是一個難點。

1.2.4IDC腳本分析技術

IDC腳本分析技術主要是基于IDA Pro的靜態分析技術,在漏洞挖掘分析時對于緩沖區溢出漏洞方面的檢測要比前兩種技術更有效[4]。IDC腳本分析技術的關鍵是在匯編代碼中搜索諸如ReadFile,recv等數據輸入函數的調用,在這些函數后面如果能夠搜索到容易產生漏洞的關鍵函數,比如strcpy(),sprintf()等函數的調用,則記錄相應的內存地址,并且檢查在調用函數前是否進行了數據長度的檢查,如果沒有就有可能存在潛在的安全漏洞。

靜態分析方法的主要優點在于漏洞發掘過程中沒有任何的運行時間開銷,快速高效,適合自動化,檢測范圍廣,代碼覆蓋率高,易融入開發流程等[5-8]。主要不足:

1)檢測代碼類型存在局限性

靜態分析工具的設計開發一般都是針對某種語言及其應用平臺[9]。

2)誤報率高

無論是特征檢測還是檢測方式,都是來自于以往的經驗總結,這就會導致對于當前程序是否適合、有效的問題。這樣造成的結果就是檢測的誤報率高。

3)針對性不強

靜態分析技術的重點是分析代碼的“特征”,它所關注的是程序的實現特性,程序的功能特性則是被忽視,因此進行的檢查就沒有針對程序結構及功能的分析。

2 漏洞動態分析技術

動態分析技術就是通過將目標程序加載到動態跟蹤調試器中,讓程序動態地執行,從而分析動態調試器中程序的內存、狀態以及調試器的寄存器等信息,進而發現潛在的安全漏洞。

最優折衷解一般位于Pareto前端的中間段,選擇折衷解的方法有多種,如基于信息熵理論的Pareto集選優方法[7]和TOPSIS法[20]。為了更靈活地表達設計者對不同優化目標的偏好,本文采用TOPSIS法幫助設計人員選擇最優折衷解。

2.1環境錯誤注入法

程序開發時,通常沒有將程序運行的環境進行充分的考慮,總是認為程序會在理想的安全穩定的情況下運行,所以一旦程序的運行環境出現了某種人為的或是非人為的變化時,程序能不能正常的運行就不得而知,所以在程序運行中輸入環境錯誤是驗證計算機和軟件系統容錯性和可靠性的一種有效方法。

2.2虛擬堆棧分析

虛擬堆棧分析是挖掘緩沖區溢出漏洞常用的動態分析技術[10]。它首先進行格式化分析,然后在這基礎上通過動態攔截軟件運行時的可疑函數調用,創建記錄所有函數緩沖區使用情況的虛擬堆棧表;其次判斷緩沖區是否在堆中,如果緩沖區在堆中則定位堆指針,而如果緩沖區在棧中則通過查詢虛擬棧表,來獲得緩沖區位置、大小以及函數的返回地址等信息;最后將得到的信息與限定條件進行比較,得到分析的結果,進而判斷是否存在安全問題。

2.3Fuzzing技術

Fuzzing技術是一種自動或半自動化的漏洞挖掘分析技術,通過向目標(如文件格式、網絡協議、API等)輸入半有效的數據,即提供非預期的輸入數據并監測系統的異常情況來發現潛在的軟件安全漏洞[50]。而所謂半有效的數據,是指該數據的大部分是有效的,這樣應用程序就會認為這是一個有效的數據,但是同時該數據的其余部分是無效的。

Fuzzing技術主要是通過構造模糊測試工具(fuzzer)來實現的。通過向編寫的 fuzzer 工具中輸入一些隨機或者精心構造的數據來觀察目標程序對輸入數據的響應,從而發現問題。通常對目標的fuzzing測試以大小相關的部分、字符串、標志字符串開始或結束的二進制塊等為重點。根據對象不同,一般將fuzz分為fuzz文件格式和fuzz網絡協議。

2.3.1fuzz文件格式

對于黑客和攻擊者而言,他們往往會嘗試對軟件所約定的數據結構進行稍許的修改,然后觀察軟件在解析這種“畸形文件”時是否會發生錯誤,是否會引起堆棧的溢出,一旦發生了錯誤,再經過精心地構造畸形數據,就有可能利用軟件的漏洞達到破壞軟件,操作系統獲得權限等目的。

1)以一個正常的文件模板為基礎,按照一定的規則產生一批畸形文件。

2)將畸形文件逐一加載到軟件進行解析,監視軟件是否產生了異常或者錯誤。

3)記錄軟件產生的錯誤信息,如寄存器狀態,棧狀態等。

4)測試人員通過日志等形式了解異常信息,從而確定這些錯誤是否能被利用。

2.3.2fuzz網絡協議

網絡協議與文件格式一樣都需要嚴格的fuzz測試以確保其魯棒性與健壯性。網絡協議的fuzz按照協議標準,對郵件、FTP服務器等網絡應用中的服務器端和客戶端的數據包進行fuzz,,通過控制觀察被測協議實現的外部輸入的響應對其進行分析評價。

對于攻擊者而言,網絡協議解析中的漏洞比文件格式解析時的漏洞更有價值,因為利用文件格式中的漏洞需要用戶點擊下載載有shellcode的畸形文件,攻擊者不能人為地讓用戶主動下載。而一個郵件服務程序在解析SMTP協議中如果產生了堆棧溢出,攻擊者就可以主動地發送載有shellcode的畸形數據包以獲得遠程控制。但是協議比文件格式更為復雜性,因此協議fuzz要比文件格式fuzz更為復雜。

假設服務器端在解析“Cmd3”數據包中的命令時存在堆棧溢出漏洞,那么攻擊者會先模仿客戶端,在與服務器進行了正確的“Cmd1”和“Cmd2”會話后,才能觸發這個漏洞;若直接發送“Cmd3”數據包,則數據包有可能直接被服務器丟掉。

動態分析,不需要測試人員對目標程序的邏輯流程作深入的分析和理解,也不需要了解目標程序的文件格式或通信協議,只利用隨機填充數據來驗證目標程序對非正常輸入的可靠性。但當輸入數據格式較為復雜時,很容易構造出觸發程序異常的數據。

此外,Fuzzing 測試是一種黑箱測試,不能對程序進行覆蓋測試,永遠不能保證目標軟件中不再存在漏洞。

3 一種基于靜、動態結合的漏洞挖掘分析方法

動態分析和靜態分析有著各自的優勢,單純地通過靜態或者動態地分析挖掘漏洞,又總是不可避免的存在一些缺陷和問題。為此,本文建議通過將靜態與動態分析方法相結合進行漏洞挖掘分析,以求更好的彌補各自的缺陷,發揮各自的優勢,達到更好地漏洞挖掘分析效果。

以緩沖區溢出漏洞的挖掘分析為例,基于靜、動態結合的漏洞挖掘分析方法的處理流程為:

(1)首先,對于有源代碼的軟件程序,將目標程序通過源代碼掃描軟件進行分析,查找目標程序中存在的容易發生緩沖區溢出的函數,比如strcpy()、sprintf()等,如果發現直接進行修改直至沒有。然后將目標程序進行編譯,編譯成為可以執行的二進制文件,進而轉為執行第二步的漏洞挖掘分析。

(2)對于沒有源代碼的二進制文件,通過反匯編軟件獲得反匯編代碼,然后根據 strcpy()、sprintf()等函數的特征代碼在目標軟件的反匯編代碼中搜索strcpy()、sprintf()等容易發生緩沖區溢出的函數。再結合IDA或者Ollydbg 動態加載目標軟件,接著在所有搜索到的關鍵函數處設置斷點,通過改變輸入數據不斷觀察調試器異常行為,最后確認脆弱點。

當然在實際的運用中,緩沖區溢出漏洞只是一種漏洞類型,在應對其他漏洞時,雖然查找監測的漏洞函數不一樣,但是主體的思想與方法是一致。

4 結束語

傳統的漏洞挖掘分析方法在漏洞挖掘分析中總是不可避免的存在一些缺陷和問題,基于源碼與二進制文件的的靜態漏洞挖掘分析可以檢測出很多漏洞,但同時存在很多漏報以及誤報。動態分析技術分析動態調試器中程序的內存、狀態以及調試器的寄存器等信息,進而發現潛在的安全漏洞,具有較高的準確率和較強的針對性。但動態漏洞分析技術在輸入數據格式較為復雜時,很容易構造出觸發程序異常的數據。針對二者的不足,本文提出了一種基于靜、動態結合的漏洞挖掘分析方法,通過兩者的相互結合可以更好地彌補兩者的缺陷,同時又發揮各自的優勢,達到更好地漏洞挖掘分析效果,為漏洞挖掘分析增添了新的思路。

[1] 田蘭, 汪君勇. 貴州氣象信息網絡安全問題研究[J]. 貴州氣象, 2008, 32(6): 35-36.

[2] Cigital. ITS4. [EB/OL]. http://www.cigital.com/its4.

[3] 杜家幸, 趙斌, 封心充. 淺析氣象網絡安全[J]. 硅谷, 2008, 4: 20.

[4] 唐正軍. 網絡入侵檢測系統的設計與實現[M]. 北京: 電子工業出版社, 2002: 103-251.

[5] Brain Chess, Gary McGraw. StaticAnalysis for Security. IEEE Security and Privacy, v 2, n 6, November/December, 2004, 76-79.

[6] Bruce Potter, BoozAllen and Gary McGraw. Software Security Testing. IEEE Security and Privacy, v 2, n 5, September/ October, 2004, 81-85.

[7] Gary McGraw. Application Security Testing Tools: Worth the Money. Network Magazine, v 19, n 11, 2004, 60.

[8] 劉為. 基于模糊測試的XSS漏洞檢測系統研究與實現[D].長沙: 湖南大學, 2010.

[9] 羅宇翔. 面向軟件安全缺陷的靜態代碼分祈及防御[D].中國科學院碩士論文, 2007.

[10] 吳晨, 張量, 張靜. ASP.NET+SQLSERVER 數據庫開發與實例[M]. 北京: 清華大學出版社, 2004: 351-422.

FU Tao1, SUN Wen-jing2(1. Jiangsu Elextec Tech. Co., Ltd., Nanjing210003, China; 2. Nanjing Audit University, Nanjing210029, China)

Static vulnerability mining based on the source code and binaries can detect a lot of vulnerabilities, but there are a lot of missing reports and error reports. Dynamic analysis techniques can analyze the dynamic memory debugger program, status and debugger register and other information. Then identify potential security vulnerabilities, with high accuracy and highly targeted. However, it is easy to construct a program to make an exception of data when input data format is more complicated in dynamic vulnerabilities analysis technology. For the above two drawbacks, this paper presents an vulnerability analysis mining method based on static and dynamic analysis, which adds a new way of thinking for mining vulnerabilities analysis.

Vulnerability mining; Static analysis; Dynamic analysis; Combination of static and dynamic

TP 311

A

10.3969/j.issn.1003-6970.2016.08.021

江蘇省2016年度科技發展基金,項目編號:寧科(2016)138號。

傅濤(1980-),男,博士,副研究員,主要研究方向:信息安全。孫文靜(1979-),女,碩士,研究方向:計算機網絡。

猜你喜歡
程序分析
隱蔽失效適航要求符合性驗證分析
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
電力系統及其自動化發展趨勢分析
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
中西醫結合治療抑郁癥100例分析
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 亚洲精品少妇熟女| 亚洲人网站| 狠狠色噜噜狠狠狠狠色综合久 | 精品国产成人a在线观看| 日韩一级毛一欧美一国产| 视频二区中文无码| 青青青视频91在线 | 久久国产亚洲偷自| 一级毛片免费观看不卡视频| 国产成人亚洲毛片| 日本道综合一本久久久88| 91最新精品视频发布页| 国产女同自拍视频| 狼友视频一区二区三区| 精品国产一区二区三区在线观看| 久久婷婷色综合老司机| 中文字幕乱码二三区免费| 美女高潮全身流白浆福利区| 日本久久免费| 亚洲精品卡2卡3卡4卡5卡区| 国产SUV精品一区二区| 亚洲中文字幕av无码区| 亚洲手机在线| 日韩欧美国产区| 国产色伊人| 一边摸一边做爽的视频17国产| 色香蕉网站| 亚洲色婷婷一区二区| 国模极品一区二区三区| 国产精品一区二区在线播放| 99青青青精品视频在线| 国产成人精品免费av| 亚洲一区网站| 免费一级大毛片a一观看不卡| 玖玖精品视频在线观看| 91精品人妻一区二区| 亚洲中文字幕久久无码精品A| 国产精品白浆在线播放| 日本伊人色综合网| 99精品伊人久久久大香线蕉 | 毛片视频网| 熟妇人妻无乱码中文字幕真矢织江| 亚洲一区二区三区中文字幕5566| 亚洲精品成人片在线观看| 在线观看亚洲天堂| 毛片在线播放a| 波多野结衣亚洲一区| 日本黄色a视频| 成人亚洲国产| 久久综合九色综合97婷婷| 久久亚洲综合伊人| a天堂视频| 久久综合色视频| 欧美成人午夜影院| 国产不卡网| 国产精品自在线拍国产电影 | 2019年国产精品自拍不卡| 色综合久久88色综合天天提莫| 亚洲一级色| 欧美a在线看| 国产人人乐人人爱| 久久毛片网| 黑人巨大精品欧美一区二区区| 亚洲无限乱码一二三四区| 亚洲va在线∨a天堂va欧美va| 久热re国产手机在线观看| 国产91小视频在线观看| 三级视频中文字幕| 91小视频在线观看| 91在线一9|永久视频在线| 尤物精品视频一区二区三区| 国产在线日本| 一级一级特黄女人精品毛片| 国内精品久久久久鸭| 激情综合网址| 精品国产中文一级毛片在线看 | 国产福利免费观看| 日韩国产另类| 国产69囗曝护士吞精在线视频| 香蕉久久永久视频| 色网站免费在线观看| 国产精品视频白浆免费视频|