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

一種基于fuzzing技術的漏洞發掘新思路

2009-01-01 00:00:00張小松蘇恩標
計算機應用研究 2009年3期

(電子科技大學 計算機科學與工程學院, 成都 610054)

摘要:

目前檢測軟件緩沖區溢出漏洞僅局限于手工分析、二進制補丁比較及fuzzing技術等,這些技術要么對人工分析依賴程度高,要么盲目性太大,致使漏洞發掘效率極為低下。結合fuzzing技術、數據流動態分析技術以及異常自動分析技術等,提出一種新的緩沖區溢出漏洞發掘思路。新思路克服了已有緩沖區溢出漏洞發掘技術的缺點,能有效發掘網絡服務器軟件中潛在的未知安全漏洞(0day),提高了緩沖區溢出漏洞發掘效率和自動化程度。

關鍵詞:自動化; 緩沖區溢出; 黑盒測試; 安全漏洞; 漏洞發掘

中圖分類號:TP319文獻標志碼:A

文章編號:10013695(2009)03108603

New method of software vulnerability detection based on fuzzing

SHAO Lin, ZHANG Xiaosong, SU Enbiao

(School of Computer Application Technology, Technology University of Electronic Science Technology of China, Chengdu 610054, China)

Abstract:

The techniques of buffer overflow vulnerabilities detection was single and limited to manual analysis, binarypatch comparison, fuzzing and so on. These techniques of vulnerabilities detection were either too dependent on manual analysis or too blind, leading up to the low efficiency of vulnerabilities detection. Introduced a new method of buffer overflow vulnerabilities detection, which was based on fuzzing, dataflow dynamic analysis and automated exception analysis. Overcame the disadvantages of old techniques, this new method effectively improves the detection of potential unknown security vulnerabilities (0day) in software. Besides, this method is more automated and performs better in finding new security vulnerabilities.

Key words:automation; buffer overflow; fuzzing; security vulnerability; vulnerability detection



自從A. One[1]在著名黑客雜志《Phrack》上發表了開創性文章之后,緩沖區溢出漏洞利用技術被網絡黑客廣泛采用。雖然后來興起的入侵檢測系統(IDS)和入侵保護系統(IPS)能根據攻擊數據包指紋對黑客攻擊進行攔截,但這種防御措施極為被動,只有在相關漏洞利用程序公布后才能攔截這些緩沖區溢出攻擊。因此,利用軟件的未知安全漏洞進行網絡攻擊一直都是網絡攻防的重點。為了確保計算機網絡的安全,安全人員應盡可能地發掘軟件潛在安全漏洞并及時修補,這樣才能有效防止利用軟件安全漏洞的攻擊行為。

目前,軟件安全漏洞發掘技術大致分為基于源代碼的漏洞發掘技術和基于可執行文件的漏洞發掘技術。然而,現在大多數軟件都是不開源的,如各種商業軟件和操作系統軟件Windows、MacOS等。因此,針對可執行文件的漏洞發掘技術顯得尤為重要。本文將提出一種在協議層面上,利用fuzzing技術對第三方服務器軟件進行緩沖區溢出漏洞發掘的新思路。

1傳統的漏洞發掘技術

1.1Fuzzing技術(黑盒測試)

Fuzzing技術是一種高度自動化的測試技術,它以大量半有效(semivalid)的數據作為程序輸入,從而發掘程序內部潛在的缺陷或錯誤。P. Oehlert[2]對fuzzing技術以及如何構造fuzzing工具(fuzzer)進行了詳細說明;Miller等人[3,4]首先將fuzzing技術應用于軟件的可靠性測試,在UNIX系統上利用fuzzing技術對UNIX系統及該系統上的工具(utilities)進行了可靠性測試;在此基礎之上,Miller等人[5]進一步將fuzzing技術應用到Windows平臺上以及MacOS上進行了類似的測試。迄今為止,國外學者已對fuzzing技術進行了大量研究,并取得了很多成果。芬蘭Oulu大學研究并實現了針對網絡協議實現軟件進行漏洞發掘的PROTOS系統;此后,美國加州大學Sant Babara分校又提出了針對狀態協議的漏洞發掘軟件[6],beSTORM、SPIKE等都是目前為止較為成功的商業漏洞發掘軟件,已成功發掘出多個軟件安全漏洞。

目前國內安全領域在fuzzing技術方面的研究并不多見,相關文獻也較少。文獻[7]中介紹了如何利用fuzzing技術發掘MP3播放軟件中存在的安全漏洞;文獻[8]則介紹了利用fuzzing技術發掘TFTP服務器軟件中安全漏洞的方法。

1.2源碼審計(白盒測試)

源碼審計是通過對程序源代碼進行檢測,以發現代碼中可能的錯誤。源碼審計主要針對C/C++代碼,而且所能檢測出的漏洞局限于緩沖區溢出漏洞和格式化字符串漏洞。文獻[7]對當前已有的知名源代碼審計工具進行了詳細的分析,并指出當前的源代碼審計工具應用范圍較窄,而且大多數商業軟件都是不開源的。目前,源碼審計技術多與開發平臺相結合或由編譯器實現,如Visual Studio 6.0、Visual Studio 7.0以及DDK編譯器等。

1.3IDA反匯編審計(灰盒測試)

該技術與源碼審計較為相似,所不同的是該技術是針對可執行文件進行漏洞發掘。很多時候軟件的源代碼無法獲取,但通過類似IDA這樣的強大反匯編平臺,可以實現基于可執行文件的漏洞發掘。由于匯編代碼可讀性差,且軟件的反匯編代碼數量極為龐大,該技術對于漏洞發掘人員的要求極高。

1.4二進制補丁比較

一旦發現軟件存在安全漏洞,軟件廠商就會通過打補丁的方式對軟件進行修復。這樣,通過對比打補丁前后的可執行文件(或反匯編碼)就能知道漏洞的具體細節。然而,二進制補丁比較技術只能用于發掘已經公布的安全漏洞,這種事后分析方法的現實意義并不大。

1.5逆向分析安全產品

在2007年世界黑客大會(DefCon)上,G. Robert等人[9]提出了通過逆向分析安全產品以獲取未知安全漏洞的方法。眾所周知,在世界范圍內存在著一個巨大的地下漏洞交易市場,通過高額價格不僅可以買到安全漏洞描述,甚至還可以買到漏洞利用程序。因此,一些商業廠家就通過地下交易方式購買未知漏洞利用程序,提取特征代碼加入到殺毒軟件病毒庫或IDS的指紋庫中。可見,通過逆向分析安全產品有可能獲得未知安全漏洞。雖然該技術與前面的二進制補丁比較技術相似,但是該技術所發掘到的漏洞很可能是未知安全漏洞,因此該技術應用價值較大。

2Internet文本消息協議

目前,網絡應用層協議大致可以分為基于文本消息的協議和基于數據塊的協議。顧名思義,基于文本消息的協議就是使用文本消息來描述協議命令以及協議命令參數,這類協議的典型包括Telnet、FTP、POP3、SMTP以及IMAP等;而基于數據塊的協議則包括了SMB協議(即CIFS協議)和RPC等,該類協議的特點是協議命令和參數往往都是以數據塊中某個域的數值來表示的。與文本消息相比,基于數據塊的協議功能更強大,同時也更為復雜。

在互聯網發展初期,計算機及網絡硬件條件較差,文本消息協議得到廣泛應用,尤其是Telnet、FTP、POP3以及SMTP等協議。這些協議作為Internet發展的遺留物一直保存了下來,像FTP、SMTP以及POP3等協議實現軟件仍舊被廣泛使用。

近年來,隨著操作系統級別安全漏洞的不斷公布以及操作系統的不斷完善,系統級安全漏洞發掘難度日益增加。網絡黑客開始轉向網絡協議實現軟件,通過這些軟件,網絡黑客也能實現對目標系統的入侵。而這些軟件則主要集中于FTP、HTTP以及SMTP等服務器軟件。因此,針對第三方網絡協議實現軟件進行漏洞發掘是很有必要的,能夠有效防范網絡入侵。

如上所述,Internet文本消息協議采用文本來描述協議命令以及命令參數,因此更為簡單。為了便于描述漏洞發掘模型以及實現模型原型,本文將針對基于Internet文本消息的協議進行說明和開發原型系統。

3在協議層面上實現的fuzzing技術

從前面對各種漏洞發掘技術的分析來看,只有fuzzing技術具有較高的自動化程度,其他漏洞發掘技術則過多地依賴于漏洞發掘人員的經驗。然而fuzzing技術也存在著一定的缺陷,如漏洞發掘時間開銷大,存在測試過程中的運行時開銷等。針對fuzzing技術所存在的優缺點,本文提出了在協議層面上使用fuzzing技術來實現對服務器軟件漏洞發掘的思路。具體而言,該思路要求在詳細分析協議文檔后,按照特定的數據結構來描述整個測試過程,然后測試控制模塊根據該結構實施測試。在整個測試過程中,需要對被測試的服務器進行監控,一旦服務器內部出現異常,才能夠立即捕獲并分析異常。由于整個測試過程中,測試模塊記錄下了測試數據的長度等信息,在異常分析時能較為精確地定位異常信息。基于該思路實現的漏洞發掘系統原型框架如圖1所示。

3.1文本消息協議的描述

為了便于說明,本文將以FTP為例來詳細說明對文本消息協議的描述。FTP中的所有命令、命令參數以及分隔符都是特定的字符或字符串。而且這些命令及分隔符又可以分為一定的類型。這樣就可以通過幾張表格將這些字符或字符串關聯起來,從而很好地描述協議命令。用于描述協議命令、參數及分隔符的各表格如圖2所示。

3.2異型數據包的生成

異型數據包是指滿足協議語法規則但又是無效的測試數據。這些數據能夠有效地覆蓋程序執行路徑,從而盡可能地觸發程序內部的漏洞。構造異型數據包的常用方法如下:

a)針對緩沖區溢出漏洞而言,異型數據包的構造很簡單,只需填充超長字符串即可。但是,為了便于異常分析模塊分析,在填充時往往都是重復填充相同字符串,如“ABAB”“\\A\\A”或“\\..\\”等。

b)對于格式化字符串漏洞探測而言,填充字符串往往是“%s%d”“%n%d”以及諸如此類的字符串。這些用于測試格式化字符串漏洞的字符串可以通過參數類型配置文件來設置。

c)整數溢出也是軟件安全漏洞中常見的一類軟件漏洞。在測試軟件整數溢出漏洞時,所采用的方法往往是填充整數的邊界值,如-1、0、1、0xff、0xffff、0xffffffff等。

上述三種測試數據構造方法是fuzzing技術實現時最常采用的方法,根據測試目的的不同,還有其他的異型數據包構造方法。此外,針對不同的漏洞測試,fuzzer(基于fuzzing技術實現的漏洞發掘工具)所采用的測試數據構造方法也有所不同。比如本文所實現的原型系統所針對的是緩沖區溢出漏洞,因此系統沒有必要構造用于發掘整數溢出漏洞的異型數據包。

3.3Fuzzing過程的控制

在漏洞發掘過程中,各個測試命令的順序是極為重要的。根據筆者對已經報告的軟件安全漏洞的分析,大多數安全漏洞的觸發都需要特定的上下文環境,即只有在發送特定協議命令序列時,軟件中的安全漏洞才可能被觸發。Golden FTP Server(<=2.7)版本中,NLST及CWD命令漏洞都必須在登錄FTP服務器之后才可能觸發。由此可見,在整個測試過程中,協議命令的測試順序(即異型數據包的發送順序)是極為重要的。

系統采用圖3所示的有向圖來描述測試過程中各個協議命令的發送順序。從起始節點到終端節點(可以包括多個終端節點)的每一條路徑都對應于一個測試序列。這樣,每一個測試序列就對應于一個特定的協議上下文。根據該有向圖,原型系統將依次構建并發送測試數據包。在原型系統中,該有向圖采用XML語言進行描述,然后由腳本解析模塊進行解析并轉換為程序內部約定好的結構。

3.4異常的捕獲及分析

當前有不少的fuzzer都只是簡單地提供測試數據,對于異常的分析幾乎不涉及。利用這些fuzzer進行漏洞發掘時,漏洞發掘人員往往需要第三方調試器配合才能有效地發掘軟件漏洞。筆者在設計原型系統時考慮到了該問題,因此原型系統采用Windows操作系統自身提供的調試API(如DebugActiveProcess等)對服務器進程進行全程監控,一旦發現服務器進程內部異常,系統將暫停發送測試數據包并立即保存與異常相關的信息。此后,系統嘗試將處于崩潰狀態的進程恢復到正常狀態。異常恢復是漏洞發掘自動化的一個關鍵所在,但本文的重點不在于此,在此將不對該問題進行過多說明。

在捕獲并保存服務器進程內部的異常之后,原型系統將對異常信息進行自動分析,從而智能地給出異常分析報告。原型系統所實現的異常自動分析算法是筆者在分析已有的緩沖區溢出漏洞之后設計出來的算法,該算法能夠有效地分析出導致異常的命令、異常類型以及異常風險程度等。根據該算法生成的異常分析報告在一定程度上能減少漏洞分析人員的后期分析工作,縮短漏洞分析時間,從而提高漏洞發掘的效率。

4實驗與結果

4.1對弱點軟件進行的漏洞發掘

利用原型系統,筆者對ServU FTP Server(<5.0)、Golden FTP(≤2.7)、WSFTP Server(5.05)以及Titan FTP Server(6.04.0545)等多款FTP服務器軟件進行了安全性測試。在對Titan FTP Server(6.04.0545)進行測試時,筆者還發現了兩個未知安全漏洞。圖4是原型系統對XXX服務器軟件進行測試時,發現服務器內部異常時的截圖。

4.2實驗結果

原型系統在設計之初就充分考慮到系統的重用性和可擴展性。具體而言,原型系統的使用者只需對腳本文件進行適當的修改就可以構造出滿足特定要求的數據包。正是由于該原因,原型系統幾乎可以發掘已經公布的所有緩沖區溢出漏洞。本文利用原型系統對已經公布的ServU、Golden FTP Server以及WS FTP Server等服務器漏洞都進行了驗證性測試,除了Golden FTP Server(2.7)及其后續版本中的漏洞無法發掘之外,其他的漏洞本文的原型系統都能發掘。表1是原型系統對ServU、Golden FTP Server以及WS FTP Server等FTP服務器軟件進行漏洞發掘的結果。

表1原型系統測試結果

名稱(版本)漏洞類型探測字符串探測長度

ServU(<5.0)棧溢出SITECHMOD[ABAB]/test.txt256 B

Golden FTP(<=2.7)同上NLST [/A/A]5 836 B

Golden FTP(<=2.7)同上CWD [//A:]1 400 B

WSFTP(<=5.05)同上XCRC [ABAB]

XMD5 [ABAB]

XSHA1 [ABAB]1 KB

Titan FTP(6.04.0545)堆溢出USER [ABAB]

ACCT [ABAB]64 KB

表1所給出的漏洞中,Titan FTP服務器漏洞都是原型系統所發掘出的。此外,Titan FTP服務器中USER命令所導致的堆溢出漏洞,在黑客網站http://www.milw0rm.com上已經公布了相關利用代碼。而ACCT命令所導致的漏洞仍舊未公布,因此該漏洞仍舊是一個0day漏洞。

4.3原型系統所不能處理的軟件

為了提高漏洞發掘效率,本文的原型系統采用調試器來捕獲測試過程的異常。然而一些商業軟件在發布版本中加入了反調試功能,這些具有反調試功能的軟件在運行過程中一直在檢測是否有調試器附著到自身,一旦發現有調試器附著到其上,軟件對應的進程就拋出異常并自動中止運行。對于這些軟件而言,本文的原型系統無法進行漏洞發掘工作,因為原型系統會將程序運行時拋出的異常認為是“可疑漏洞”。此外,一旦該類程序拋出異常,服務器進程就中止運行。

5結束語

目前,原型系統的自動化程度和智能化程度與本文的預期目標仍有差距。在后續的研究工作中,筆者將從以下幾方面進一步提高系統的自動化和智能化程度:a)在測試輸入數據構造方面,準備借鑒人工智能中的遺傳變異和啟發式算法來生成測試數據,從而提高漏洞發掘效率和自動化程度;b)采用內存斷點技術對弱函數調用進行跟蹤,從而捕獲服務器從接收數據到系統崩潰過程中的函數調用圖;c)在現有的異常自動分析算法上進行改進,提高異常分析的智能性和正確性。

參考文獻:

[1]ONE A. Smashing the stack for fun and profit[J]. Phrack Magazine,1996,7(49)1416.

[2]OEHLERT P. Violating assumptions with fuzzing[J]. IEEE Security Privacy, 2005, 3(2):5862.

[3]MILLER B P, FREDRIKSEN L, SO B. An empirical study of the reliability of UNIX utilities[J]. Communications of the ACM, 1990,33(12):3244.

[4]MILLER B P, KOSKI D, LEE C P, et al. Fuzz revisited: a reexamination of the reliability of UNIX utilities and services[R].Madison: University of WisconsinMadison, 1995.

[5]MILLER B P, MILLER C, FREDRICK M. An empirical study of the robustness of MacOS applications using random testing[C]//Proc of the 1st International Workshop on Random Testing. 2006:4654.

[6]BANKS G, COVA M, FELMETSGER V, et al. SNOOZE: toward a stateful Network protocol fuzzer[C]//Proc of the 9th International Conference on Information Security. 2006:343358.

[7]魏瑜豪,張玉清. 基于fuzzing的MP3播放軟件漏洞發掘技術[J]. 計算機工程, 2007, 33(24):158167.

[8]劉旭奇,張玉清. 基于fuzzing的TFTP漏洞挖掘技術[J]. 計算機工程, 2007, 33(20):142147.

[9]GRAHAM R, MAYNOR D. A simpler way of finding 0day[R/OL]. (2007).http://www.black hat.com/presentations/bhusa_07_Maynor and Graham/whitepaper/bh_usa_07_mayor and_graham_wp.pdf.

[10]JON H, PASCAL M. Can source code auditing software identify common vulnerabilities and be used to evaluate software security[C]//Proc of the 37th Annual Hawaii International Conference on System Sciences. 2004:44054414.

主站蜘蛛池模板: 久久99精品久久久久久不卡| 成人在线第一页| 久久黄色视频影| 丁香婷婷久久| 成人永久免费A∨一级在线播放| 久久国产精品77777| 成人午夜免费视频| 制服丝袜一区| 亚洲福利视频一区二区| 国产97视频在线| 精品91自产拍在线| 99热亚洲精品6码| 中文国产成人精品久久| 狠狠综合久久久久综| 色哟哟国产精品一区二区| 色综合中文综合网| 国产国语一级毛片在线视频| 欧美色伊人| 99精品免费欧美成人小视频| 波多野结衣久久高清免费| 亚洲有无码中文网| 亚洲天堂网视频| 国产成人91精品| 久久综合AV免费观看| 中文字幕欧美日韩高清| 无码aaa视频| 国产成人超碰无码| 黄色网站在线观看无码| 波多野结衣爽到高潮漏水大喷| 免费三A级毛片视频| 日本人妻丰满熟妇区| 1024你懂的国产精品| 91精品啪在线观看国产| 鲁鲁鲁爽爽爽在线视频观看| 成人午夜福利视频| 香蕉国产精品视频| 手机精品福利在线观看| 亚洲精品无码抽插日韩| 国产性猛交XXXX免费看| 中文字幕在线一区二区在线| 久久久久久国产精品mv| 国产高清又黄又嫩的免费视频网站| 51国产偷自视频区视频手机观看| 日韩人妻精品一区| 国产丰满大乳无码免费播放| 成人精品视频一区二区在线| 午夜精品福利影院| 久久精品国产免费观看频道| aaa国产一级毛片| 99热这里都是国产精品| 男女猛烈无遮挡午夜视频| 黄色网站在线观看无码| 亚洲A∨无码精品午夜在线观看| 精品无码一区二区三区在线视频| 日韩无码真实干出血视频| 大学生久久香蕉国产线观看| 国产免费久久精品44| 狠狠干综合| 中文字幕va| www.精品国产| 国产乱肥老妇精品视频| 国产精品无码久久久久AV| 美女国产在线| 亚洲国产亚综合在线区| 国产成人精品高清不卡在线| 4虎影视国产在线观看精品| 99国产精品一区二区| 亚洲成综合人影院在院播放| 先锋资源久久| 欧美日韩在线国产| 日韩在线视频网| 国内精品伊人久久久久7777人| 亚洲欧美激情另类| 欧美激情综合| 国产男女免费完整版视频| 久久无码高潮喷水| 91久久夜色精品国产网站| 国产精品大白天新婚身材| 免费一级毛片| 暴力调教一区二区三区| 国产情精品嫩草影院88av| 亚洲第一页在线观看|