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

針對復(fù)合文檔的漏洞挖掘技術(shù)研究

2016-09-23 01:26:02刁培金劉嘉勇
現(xiàn)代計(jì)算機(jī) 2016年2期

刁培金,劉嘉勇

(四川大學(xué)電子信息學(xué)院,成都 610065)

針對復(fù)合文檔的漏洞挖掘技術(shù)研究

刁培金,劉嘉勇

(四川大學(xué)電子信息學(xué)院,成都610065)

0 引言

Fuzzing測試是目前軟件漏洞挖掘工作中廣泛使用的技術(shù),它通過對樣本進(jìn)行變異并輸入到目標(biāo)程序中監(jiān)控發(fā)生的異常,來挖掘程序的漏洞。但是傳統(tǒng)的Fuzzing測試效率低,盲目性比較強(qiáng),未反饋測試用例的使用情況是否有效、對異常類型的分類比較粗糙,導(dǎo)致后期漏洞分析工作效率較低[1]。本文根據(jù)復(fù)合文檔結(jié)構(gòu)化存儲(chǔ)的特征和上述Fuzzing測試中存在的問題,設(shè)計(jì)了一套原型工具DocuFuzzer,并通過實(shí)驗(yàn)證明了該工具在復(fù)合文檔漏洞挖掘方面的有效性。

1 復(fù)合文檔結(jié)構(gòu)

復(fù)合文檔與文件系統(tǒng)的結(jié)構(gòu)類似,它將數(shù)據(jù)分成許多流,這些流存儲(chǔ)在不同的倉庫里。每個(gè)復(fù)合文檔都包含一個(gè)根倉庫。流和倉庫的命名規(guī)則與文件系統(tǒng)相似,同一個(gè)倉庫下的流不能重名,不同倉庫下可以有同名的流[2-4]。復(fù)合文檔的結(jié)構(gòu)如圖1所示。

所有的流分成更小的數(shù)據(jù)塊,叫做數(shù)據(jù)扇區(qū)(Sectors)。數(shù)據(jù)扇區(qū)包含控制數(shù)據(jù)或者用戶數(shù)據(jù)。整個(gè)文件由一個(gè)頭結(jié)構(gòu) (Header)以及其后的所有數(shù)據(jù)扇區(qū)組成。扇區(qū)的大小在頭部中確定,并且每個(gè)sectors的大小都相同。

圖1 復(fù)合文檔結(jié)構(gòu)

以二進(jìn)制方式打開一個(gè)樣本,分析其二進(jìn)制結(jié)構(gòu),文件的二進(jìn)制結(jié)構(gòu)如圖2所示。

圖2 復(fù)合文檔結(jié)構(gòu)圖

(1)復(fù)合文檔頭。每個(gè)文件都有一個(gè)頭部,大小為512字節(jié),包含文檔的控制信息。

(2)主扇區(qū)配置表。

(3)扇區(qū)配置表。

(4)短扇區(qū)配置表。

(5)目錄結(jié)構(gòu)。目錄是一種內(nèi)部控制流,由一系列目錄入口組成。每一個(gè)目錄入口都指向復(fù)合文檔的倉庫或流。

(6)目錄入口。目錄入口按照在目錄流中出現(xiàn)的順序列舉,一個(gè)以0開始的目錄入口索引稱為目錄入口標(biāo)識(shí)。

(7)流結(jié)構(gòu)。流結(jié)構(gòu)包括流的入口、大小以及計(jì)算得出的數(shù)據(jù)流的位置[5]。

2 Fuzzing測試

我們所知道最早的對Fuzzing的描述是1989年Barton Miller教授使用一個(gè)模糊器來測試Unix應(yīng)用程序的安全性。此后,各種Fuzzing測試工具層出不窮,包括Sully、Zzuf、Peach等一系列具有代表性的測試工具[6]。

Fuzzing測試的思路比較簡單:首先準(zhǔn)備測試樣本,可以通過生成和變異的方式構(gòu)造測試樣本。變異樣本的時(shí)候可以用“overwrite”和“replace”兩種方式修改原始數(shù)據(jù)。“overwrite”使用畸形數(shù)據(jù)直接覆蓋指定位置的正常數(shù)據(jù),不改變樣本的大小。“replace”通過搜索特征串進(jìn)行替換,并可以改變文件的大小,支持正則表達(dá)式,可以有針對性地進(jìn)行數(shù)據(jù)替換[7]。

然后部署目標(biāo)程序,指示其加載測試用例,開始執(zhí)行Fuzzing測試并通過調(diào)試器監(jiān)視異常信息。圖3展示了Fuzzing測試的各個(gè)步驟[8]:

在Fuzzing的過程中,一個(gè)至關(guān)緊要的步驟就是對產(chǎn)生的異常進(jìn)行監(jiān)視。當(dāng)異常發(fā)生時(shí),保存調(diào)試器記錄的堆棧、寄存器等信息,保存觸發(fā)異常的測試樣本,分析找出有價(jià)值的異常作為重現(xiàn)及利用的依據(jù)[9]。

識(shí)別異常最好的方法是使用調(diào)試器,它既可以識(shí)別已處理的異常,也能夠識(shí)別未處理的異常。調(diào)試器可以在每次迭代的過程中監(jiān)視異常條件,當(dāng)有異常發(fā)生的時(shí)候,異常發(fā)生的位置和異常線程的前后代碼、內(nèi)存地址、堆棧數(shù)據(jù)都會(huì)被保存下來。根據(jù)這些信息可以確定異常的準(zhǔn)確位置。出現(xiàn)的異常類型包括拒絕服務(wù)、整數(shù)溢出、堆溢出和棧溢出、邏輯錯(cuò)誤、格式化字符串和競爭條件等。

圖3 Fuzzing測試過程

下面使用一段簡單的代碼描述整數(shù)溢出:

上面代碼描述了一個(gè)導(dǎo)致內(nèi)存破壞的整數(shù)溢出漏洞。如果size被人為賦值為0xFFFFFFFF,則allcation_size的值經(jīng)過size的值加1操作后將變?yōu)?,在代碼的第三行將使用malloc()函數(shù)分配一個(gè)大小為0的內(nèi)存,buffer指針將指向一個(gè)未分配的內(nèi)存塊。在代碼第四行和第五行進(jìn)入循環(huán),把size大小的數(shù)據(jù)復(fù)制到內(nèi)存塊中,從而造成內(nèi)存破壞。如果人為構(gòu)造數(shù)據(jù)可以使覆蓋的內(nèi)存數(shù)據(jù)能夠被使用,則可以獲取對應(yīng)用程序的控制權(quán)。

根據(jù)上文對Fuzzing測試的描述,其過程可以描述為,其中,表示Fuzzing測試的過程,表示初始樣本集,表示Fuzzing所使用的時(shí)間,“P”表示目標(biāo)Fuzzing程序,表示對樣本的變異策略[10]。

最后通過人工分析產(chǎn)生的異常,找到產(chǎn)生異常的原因,分析其可利用性。

3 工具實(shí)現(xiàn)

該漏洞挖掘工具的包括初始化、讀取文檔結(jié)構(gòu)、生成變異文檔、部署目標(biāo)程序、核心Fuzz測試、異常檢測6個(gè)模塊。其運(yùn)行過程可以簡單描述如圖4所示:

圖4 Docufuzzer運(yùn)行過程

初始化模塊主要用于初始化DocuFuzzer,包括解析命令行選項(xiàng)并檢測DocuFuzzer所依賴的軟件是否被正確地安裝。

然后讀取模塊開始解析文檔結(jié)構(gòu)。根據(jù)上文對復(fù)合文檔格式的介紹,可以有針對性的構(gòu)造畸形樣本:選取一個(gè)正常的復(fù)合文檔,根據(jù)上文對復(fù)合文檔結(jié)構(gòu)的介紹,定位文件的頭部、目錄結(jié)構(gòu)以及數(shù)據(jù)流的位置,根據(jù)需要修改某特定位置的數(shù)據(jù)并保存,生成新的測試樣本。而且采用以下幾種方法可以提高測試的成功率:

①插入或替換數(shù)據(jù)的時(shí)候,選取臨界值、負(fù)數(shù)、超大值、超小值以及特殊字符。

②用多種方式改變數(shù)據(jù),在不改變固定標(biāo)識(shí)的前提下,增加或刪除數(shù)據(jù)塊,改變數(shù)據(jù)塊的相對位置。

③在重要的數(shù)據(jù)區(qū)(頭部、長度控制區(qū)域、CRC32/ 16校驗(yàn)碼)處修改數(shù)據(jù)。

生成測試樣本之后,要初始化Process類的實(shí)例,將它們部署到目標(biāo)測試程序中。在目標(biāo)程序每次測試的過程中,創(chuàng)建一個(gè)進(jìn)程并設(shè)置其屬性,并設(shè)置每個(gè)進(jìn)程運(yùn)行時(shí)間間隔,使進(jìn)程在達(dá)到間隔之后自動(dòng)銷毀。

Fuzzing測試過程中,一個(gè)核心的操作是控制目標(biāo)測試程序使用什么樣的畸形數(shù)據(jù)以及在什么位置對樣本進(jìn)行修改。可以準(zhǔn)備一個(gè)畸形值數(shù)據(jù)庫,選定文檔特定位置使用畸形值進(jìn)行變異。通常是使用任意長度的任意值,包括二進(jìn)制數(shù)值和字符串。字符串?dāng)?shù)值可以使用任意字符串,特定字符串。Fuzzing測試中常用的字符串值是"AAAAA",可以導(dǎo)致緩沖區(qū)溢出。

異常檢測模塊也是Fuzzing測試中的一個(gè)核心部分。獲取異常信息的途徑是觀察目標(biāo)程序的崩潰或者查看日志文件,通過時(shí)間戳識(shí)別輸入和輸出之間的關(guān)聯(lián)。在Docufuzzer中,使用調(diào)試器識(shí)別異常。調(diào)試器可以識(shí)別已發(fā)生和未發(fā)生的異常,而且,不能直接將調(diào)試器關(guān)聯(lián)到目標(biāo)程序,因?yàn)槊窟_(dá)到一個(gè)時(shí)間間隔,目標(biāo)程序進(jìn)程會(huì)被銷毀[11]。筆者在Docufuzzer中使用調(diào)試器。所以當(dāng)執(zhí)行Fuzzing測試的時(shí)候,Docufuzzer可以關(guān)聯(lián)到調(diào)試器并銷毀目標(biāo)程序。部分核心代碼如下:

上段代碼的功能是只要沒達(dá)到時(shí)間間隔,調(diào)試器就一直監(jiān)視異常。

可以看出上述組件分別對應(yīng)測試前準(zhǔn)備、Fuzzing測試中兩個(gè)階段,最后通過人工分析異常信息,找出漏洞成因、驗(yàn)證代碼以及危害程度。

4 實(shí)驗(yàn)設(shè)計(jì)

為證明Docufuzzer在復(fù)合文檔漏洞挖掘方面的有效性,本節(jié)將用實(shí)驗(yàn)進(jìn)行驗(yàn)證。把工具布置在虛擬機(jī)上,實(shí)驗(yàn)環(huán)境:物理機(jī)系統(tǒng)Win7,配置為Intel Corei5-5200,2.20GHz,8GB內(nèi)存,虛擬機(jī)為VMware Workstation10.0,系統(tǒng)為WinXP sp3,內(nèi)存為2GB。

本文使用doc文件類型進(jìn)行實(shí)驗(yàn),從網(wǎng)絡(luò)上下載100個(gè)doc文件,以金山WPS作為目標(biāo)程序,應(yīng)用本工具進(jìn)行漏洞挖掘工作。實(shí)驗(yàn)數(shù)據(jù)見表1:

表1 樣本數(shù)據(jù)

設(shè)置DocuFuzzer的測試時(shí)間閾值為500分鐘,在配置文件里設(shè)置對每個(gè)樣本變異50次,經(jīng)過測試,實(shí)驗(yàn)數(shù)據(jù)如表2所示:

表2 異常數(shù)量

經(jīng)過測試,發(fā)現(xiàn)生成的異常數(shù)大于測試的樣本數(shù),為了使數(shù)據(jù)更加真實(shí),對產(chǎn)生的異常進(jìn)行人工分析,清除重復(fù)異常。

對產(chǎn)生的異常進(jìn)行分析與分類,得到的數(shù)據(jù)如表3所示:

表3 異常分類

表4 人工分析結(jié)果

高危漏洞指對機(jī)密性、完整性和可用性的影響比較嚴(yán)重的漏洞,中危漏洞指對機(jī)密性、完整性和可用性的影響相對較輕的漏洞,雖不可被利用但是某些關(guān)鍵數(shù)據(jù)可被人為控制,低危漏洞指對機(jī)密性、完整性和可用性影響基本可以忽略的漏洞,不可利用且關(guān)鍵數(shù)據(jù)不可控[12]。從表中的數(shù)據(jù)可以看出,Docufuzzer可以有效挖掘出使用復(fù)合文檔的程序的漏洞。

將Docufuzzer部署在漏洞挖掘平臺(tái)中,已發(fā)現(xiàn)金山WPS辦公軟件[13]的3個(gè)0day漏洞并提交到國家漏洞庫。出于安全性考慮,不在此披露漏洞的細(xì)節(jié)。

5 結(jié)語

針對目前Fuzzing測試過程中數(shù)據(jù)完整性校驗(yàn)嚴(yán)重影響了測試效果的問題,以及復(fù)合文檔的結(jié)構(gòu)化存儲(chǔ)的特征,設(shè)計(jì)了一套原型工具DocuFuzzer,該工具從樣本處理、測試策略調(diào)整兩個(gè)層面進(jìn)行改進(jìn)與優(yōu)化,以提高Fuzzing測試的效率。在樣本處理方面,本文提出了針對文檔格式的數(shù)據(jù)模型構(gòu)造畸形樣本;在測試策略方面,本文提出一種動(dòng)態(tài)選擇元素方法。實(shí)驗(yàn)結(jié)果表明,本工具在復(fù)合文檔的漏洞挖掘方面具有較強(qiáng)的實(shí)用性。

本文對傳統(tǒng)Fuzzing測試技術(shù)的不足之處進(jìn)行了補(bǔ)充,拓展了Fuzzing測試的思路,有助于Fuzzing測試技術(shù)的進(jìn)一步應(yīng)用和推廣。

[1]李紅輝,齊佳,劉峰,等.模糊測試技術(shù)研究[J].中國科學(xué),2014:44(10):1305-I22

[2]唐彰國,鐘明全,李煥洲,張健.基于Fuzzing的文件格式漏洞挖掘技術(shù).計(jì)算機(jī)工程,2010,16(16):151-153.

[3]任春鈺,舒輝,瞿進(jìn).一種改進(jìn)的針對復(fù)合文檔的Fuzz測試技術(shù)[J].計(jì)算機(jī)應(yīng)用,2008,28(2):535-537.

[4]高峻,徐志大,李健.針對復(fù)合文檔的Fuzzing測試技術(shù)[J].計(jì)算機(jī)與數(shù)字工程,2008,12(12):116-119.

[5]羅文華.Microsoft復(fù)合文檔結(jié)構(gòu)電子數(shù)據(jù)取證分析.信息網(wǎng)絡(luò)安全,2013,3(03):9-11.

[6]王欣,董國偉,邵帥,朱龍華.基于驗(yàn)證繞過的漏洞Fuzzing測試技術(shù)[C].信息安全漏洞分析與風(fēng)險(xiǎn)評估大會(huì),2014.

[7]歐陽永基,魏強(qiáng),王清賢,尹中旭,等。基于異常分布導(dǎo)向的智能Fuzzing方法.電子與信息學(xué)報(bào),2015,01期(1):143-149.

[8]Rebert A,Cha S,Avgerinos T,et al.Optimizing Seed Selection for Fuzzing[C].Proc.23rd USENIX conference on Security Symposium. California,San Diego:USENIX Association,2014:861-875.

[9]熊琦,王婷,彭勇,戴忠華,伊勝偉.工控網(wǎng)絡(luò)協(xié)議Fuzzing測試技術(shù)研究進(jìn)展[C].信息安全漏洞分析與風(fēng)險(xiǎn)評估大會(huì),2013.

[10]馬金鑫,張濤,李舟軍,張江霄.Fuzzing過程中的若干優(yōu)化方法研究[C].信息安全漏洞分析與風(fēng)險(xiǎn)評估大會(huì),2015.

[11]MichaelSutton,AdamGreene,PedramAmini.Fuzzing:Brute Force Vulnerability Discovery.

[12]劉奇旭,張翀斌,張玉清,張寶峰.安全漏洞等級劃分關(guān)鍵技術(shù)研究[J].通信學(xué)報(bào),2012,S1(S1):79-87.

[13]WPS.http://www.wps.cn/

Compound Document;Fuzzing Test;Storage Feature;Docufuzzer

Research and Implementation of Vulnerabilities for Compound Document

DIAO Pei-jin,LIU Jia-yong
(College of Electronic Information,Sichuan University,Chengdu 610065)

1007-1423(2016)02-0011-05

10.3969/j.issn.1007-1423.2016.02.003

刁培金(1990-),男,碩士研究生,研究方向?yàn)榫W(wǎng)絡(luò)通信與網(wǎng)絡(luò)安全

2015-12-01

2012-12-30

復(fù)合文檔是一種包含文本、圖形、電子表格數(shù)據(jù)、聲音、視頻圖像以及其他信息的結(jié)構(gòu)化存儲(chǔ)的文件類型。由于其被辦公軟件廣泛應(yīng)用,針對復(fù)合文檔的攻擊技術(shù)也越來越多。然而復(fù)合文檔結(jié)構(gòu)嚴(yán)謹(jǐn),支持多種編碼方式和壓縮算法,其復(fù)雜的格式導(dǎo)致傳統(tǒng)的Fuzzing測試效率低下。針對復(fù)合文檔的結(jié)構(gòu)化存儲(chǔ)的特征,設(shè)計(jì)一套原型工具DocuFuzzer,并使用該工具對金山WPS進(jìn)行測試實(shí)驗(yàn),證明該工具確實(shí)可以提高測試效率。

復(fù)合文檔 ;Fuzzing測試;結(jié)構(gòu)化存儲(chǔ);Docufuzzer

劉嘉勇(1962-),男,博士,教授,研究方向?yàn)榫W(wǎng)絡(luò)通信與網(wǎng)絡(luò)安全

Compound document is a document type that contains text,graphics,spreadsheet data,voice,video and other information storage structure,since it is widely used office software,attacks against a compound document technology is also increasing.However,compound document structured to support multiple encoding and compression algorithm,which leads to poor form complex traditional Fuzzing test efficiency.According to the structure of the compound document storage feature,designs a prototype tool DocuFuzzer,and uses the tool to test Kingsoft WPS,experiments prove that the tool can indeed improve test efficiency.

主站蜘蛛池模板: 成人免费网站在线观看| 国产菊爆视频在线观看| 亚洲中文字幕在线精品一区| 久久精品人人做人人爽电影蜜月| 成年人免费国产视频| 欧美视频在线第一页| 91精品国产91久无码网站| 伊人久久福利中文字幕| 国产综合欧美| 亚洲国产成人久久精品软件| 国产一级毛片在线| 国产精品亚洲va在线观看| 99视频全部免费| 国产美女视频黄a视频全免费网站| 色AV色 综合网站| 成人福利在线观看| 亚洲永久精品ww47国产| 国内精品小视频在线| 欧美日韩成人| 国产精品第一区在线观看| 成人另类稀缺在线观看| 国产微拍精品| 欧美在线综合视频| 国产交换配偶在线视频| 天堂成人在线视频| 亚洲欧洲自拍拍偷午夜色| 91麻豆久久久| 中文字幕免费在线视频| 日本一区高清| 成人精品亚洲| 国产青榴视频| 精品国产99久久| 五月天天天色| 国产精品自拍合集| 欧美精品v| 国产精品999在线| 国产屁屁影院| 99久久免费精品特色大片| 中文字幕一区二区人妻电影| 婷婷激情亚洲| 在线观看亚洲精品福利片| 99精品影院| 91亚洲精品国产自在现线| a毛片免费在线观看| 国产99视频在线| 亚洲日本中文综合在线| 日韩第八页| 天堂在线视频精品| 九色91在线视频| 国产永久无码观看在线| 欧美成人日韩| 国内精品九九久久久精品| 国产91av在线| 在线va视频| 亚洲天堂网视频| 狠狠操夜夜爽| 国产精选自拍| 日本免费a视频| 极品性荡少妇一区二区色欲| av午夜福利一片免费看| 538精品在线观看| 91精品国产丝袜| 国产素人在线| 国产成人一区在线播放| 亚洲国产亚洲综合在线尤物| 亚洲成A人V欧美综合| 亚洲成AV人手机在线观看网站| 大学生久久香蕉国产线观看| 夜夜高潮夜夜爽国产伦精品| 99久久人妻精品免费二区| 亚洲人成色在线观看| 亚洲欧美一区二区三区麻豆| 日韩精品久久无码中文字幕色欲| 91精品国产自产在线老师啪l| 久草视频中文| 精品国产自在在线在线观看| 456亚洲人成高清在线| 少妇精品久久久一区二区三区| 国产精品自拍露脸视频| 国产精品欧美日本韩免费一区二区三区不卡 | 99在线观看精品视频| 亚洲毛片一级带毛片基地|