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

一種粗細(xì)粒度結(jié)合的動(dòng)態(tài)污點(diǎn)分析方法

2014-06-02 06:31:40史大偉袁天偉
計(jì)算機(jī)工程 2014年3期
關(guān)鍵詞:指令分析信息

史大偉,袁天偉

?

一種粗細(xì)粒度結(jié)合的動(dòng)態(tài)污點(diǎn)分析方法

史大偉,袁天偉

(江南計(jì)算技術(shù)研究所,江蘇 無(wú)錫 214083)

針對(duì)當(dāng)前污點(diǎn)分析工具不能兼顧速度和精確度的缺陷,研究并實(shí)現(xiàn)一種粗細(xì)粒度結(jié)合的二進(jìn)制代碼動(dòng)態(tài)污點(diǎn)分析方法。對(duì)比粗粒度污點(diǎn)分析和細(xì)粒度污點(diǎn)分析的實(shí)現(xiàn)過(guò)程,提出兩者結(jié)合的新型分析框架。預(yù)先在線執(zhí)行粗粒度污點(diǎn)分析以篩選有效指令,之后離線執(zhí)行細(xì)粒度污點(diǎn)分析以計(jì)算污點(diǎn)信息。根據(jù)粒度的差異分別建立粗細(xì)粒度污點(diǎn)數(shù)據(jù)的引入標(biāo)記方法,制定粗細(xì)粒度條件下的數(shù)據(jù)流和控制流傳播策略,設(shè)計(jì)離線軌跡記錄結(jié)構(gòu)作為粗細(xì)粒度污點(diǎn)分析的傳遞文件。在原型系統(tǒng)上的測(cè)試結(jié)果表明,該方法通過(guò)在線粗粒度模式保證了污點(diǎn)分析信息采集的快速性,同時(shí)采用離線細(xì)粒度模式以合理的時(shí)間消耗提升了污點(diǎn)分析的精確度。

粗粒度;細(xì)粒度;動(dòng)態(tài)污點(diǎn)分析;離線軌跡;污點(diǎn)傳播;二進(jìn)制

1 概述

污點(diǎn)分析(taint analysis)是指對(duì)非信任來(lái)源的數(shù)據(jù)進(jìn)行標(biāo)記,并追蹤其在程序執(zhí)行中的傳播過(guò)程,以達(dá)到獲取關(guān)鍵位置與輸入數(shù)據(jù)關(guān)聯(lián)信息的分析方法[1]。隨著網(wǎng)絡(luò)化、信息化的不斷推進(jìn),來(lái)自于網(wǎng)絡(luò)的威脅越來(lái)越大,并逐漸呈現(xiàn)以下特征:惡意攻擊代碼變種越來(lái)越多,攻擊方式隱蔽性越來(lái)越高明,攻擊行為組織性專業(yè)性越來(lái)越強(qiáng)。網(wǎng)絡(luò)安全遭受的威脅日益加劇,防范難度日愈嚴(yán)峻。污點(diǎn)分析從網(wǎng)絡(luò)惡意攻擊的本質(zhì)入手,以一種溯源式的方式判斷外部傳遞數(shù)據(jù)對(duì)跳轉(zhuǎn)地址、返回地址、函數(shù)指針的影響,直接檢測(cè)網(wǎng)絡(luò)惡意攻擊的進(jìn)行。

動(dòng)態(tài)污點(diǎn)分析(Dynamic Taint Analysis, DTA)[2]能夠在程序運(yùn)行過(guò)程中,以運(yùn)行時(shí)機(jī)器指令流為依據(jù),對(duì)目標(biāo)軟件的非信任數(shù)據(jù)進(jìn)行信息流跟蹤,監(jiān)控軟件系統(tǒng)安全狀態(tài)。動(dòng)態(tài)污點(diǎn)分析是污點(diǎn)分析的主要模式,被廣泛運(yùn)用于信息安全驗(yàn)證、惡意代碼分析[3]、隱私泄露分析、協(xié)議格式逆向分析[4]等領(lǐng)域。分析時(shí),首先將未獲取安全認(rèn)證的輸入數(shù)據(jù)標(biāo)記為污染源,然后根據(jù)程序?qū)崟r(shí)指令和運(yùn)行時(shí)狀態(tài)信息,依據(jù)制定的污點(diǎn)流傳播規(guī)則,分析污染源數(shù)據(jù)在寄存器和內(nèi)存中的傳播過(guò)程,同時(shí)在程序敏感字段設(shè)置檢測(cè)點(diǎn),當(dāng)檢測(cè)到有污染源數(shù)據(jù)導(dǎo)入時(shí)采取相應(yīng)的安全決策措施。

當(dāng)前動(dòng)態(tài)污點(diǎn)分析技術(shù)按分析粒度可以劃分為細(xì)粒度(fine-grained)[5]動(dòng)態(tài)污點(diǎn)分析技術(shù)和粗粒度(coarse-grained)[6]動(dòng)態(tài)污點(diǎn)分析技術(shù)。粗粒度污點(diǎn)分析一般用于異常行為檢測(cè),例如對(duì)于某一端口的惡意掃描或其他不正常行為;細(xì)粒度污點(diǎn)分析則主要用于檢測(cè)程序的脆弱性攻擊點(diǎn)。粗粒度污點(diǎn)分析具有分析速度快、占用存儲(chǔ)空間小的優(yōu)點(diǎn),可用于檢測(cè)污點(diǎn)數(shù)據(jù)有無(wú)問題;細(xì)粒度污點(diǎn)分析精度高,可解決數(shù)據(jù)流的回溯問題。現(xiàn)階段動(dòng)態(tài)污點(diǎn)分析均采用單一解析模式,都會(huì)碰到污點(diǎn)分析不精確、驗(yàn)證測(cè)試代價(jià)大或代碼解析效率低、空間需求過(guò)大的難題。

針對(duì)現(xiàn)有污點(diǎn)分析方法的不足,本文提出一種面向二進(jìn)制代碼的粗細(xì)粒度結(jié)合的動(dòng)態(tài)污點(diǎn)分析方法,利用粗粒度污點(diǎn)分析技術(shù)對(duì)目標(biāo)程序進(jìn)行實(shí)時(shí)監(jiān)控和預(yù)分析,實(shí)時(shí)記錄其執(zhí)行指令流及相關(guān)寄存器和內(nèi)存信息,同時(shí)依據(jù)策略分析污點(diǎn)傳播狀態(tài)。當(dāng)滿足中斷策略時(shí),輸出現(xiàn)有指令流記錄信息至離線細(xì)粒度污點(diǎn)分析系統(tǒng),快速高效地分析字節(jié)粒度的污點(diǎn)源關(guān)聯(lián)性,并執(zhí)行測(cè)試驗(yàn)證或安全修復(fù)。

2 粗細(xì)粒度結(jié)合的動(dòng)態(tài)污點(diǎn)分析

2.1 動(dòng)態(tài)污點(diǎn)分析原理

動(dòng)態(tài)污點(diǎn)分析的主要目的是解決軟件安全問題,而導(dǎo)致軟件安全性問題的主要原因是軟件自身在設(shè)計(jì)、實(shí)現(xiàn)和配置時(shí)引入的各種安全漏洞(也稱脆弱性)。安全漏洞是指軟件中違背安全策略并導(dǎo)致安全危害的不足或缺陷,在一般條件下,可信程序在無(wú)外界干預(yù)的條件下,其運(yùn)行可認(rèn)為是可控的。軟件安全漏洞的出現(xiàn)在于程序自身,而其利用則以外部數(shù)據(jù)為誘因。

動(dòng)態(tài)污點(diǎn)分析以信息流傳播為主要分析對(duì)象,著重跟蹤外部引入數(shù)據(jù)在運(yùn)行中的傳播活動(dòng),其主要的分析過(guò)程包括污點(diǎn)標(biāo)記、污點(diǎn)傳播、污點(diǎn)檢測(cè)。運(yùn)行時(shí)污點(diǎn)狀態(tài)信息是動(dòng)態(tài)污點(diǎn)分析的基礎(chǔ)和對(duì)象,與污點(diǎn)分析的三大模塊密切相關(guān)。

定義1運(yùn)行時(shí)污點(diǎn)狀態(tài)(taint status)。在污點(diǎn)標(biāo)記和污點(diǎn)傳播中,對(duì)每個(gè)內(nèi)存(MEM)、寄存器(REG)和標(biāo)志位(eflags)獲取污點(diǎn)信息,該污點(diǎn)信息的集合統(tǒng)稱為運(yùn)行時(shí)污點(diǎn)狀態(tài)。指令的運(yùn)行會(huì)觸發(fā)的改變,在程序的運(yùn)行過(guò)程中,隨著污點(diǎn)信息的不斷引入和傳播,最終形成狀態(tài)轉(zhuǎn)換序列:=01…。

動(dòng)態(tài)污點(diǎn)分析的框架結(jié)構(gòu)如圖1所示。

圖1 動(dòng)態(tài)污點(diǎn)分析框架結(jié)構(gòu)

污點(diǎn)數(shù)據(jù)標(biāo)記、污點(diǎn)數(shù)據(jù)傳播和敏感點(diǎn)污點(diǎn)檢測(cè)為3個(gè)平行的污點(diǎn)操作活動(dòng)。運(yùn)用HOOK機(jī)制獲取指令流信息后,需結(jié)合當(dāng)前運(yùn)行時(shí)污點(diǎn)狀態(tài)和指令信息判斷:

(1)若該位置為敏感位置則進(jìn)行污點(diǎn)檢測(cè),如果存在污點(diǎn)信息的不當(dāng)使用則輸出該信息。

(2)若為污點(diǎn)引入則采用污點(diǎn)標(biāo)記策略,標(biāo)記外部引入數(shù)據(jù),同時(shí)更新。

(3)若為污點(diǎn)傳播則依據(jù)指令內(nèi)含的信息流傳播策略指導(dǎo)執(zhí)行并更新。

2.2 粗細(xì)粒度結(jié)合的污點(diǎn)分析框架

運(yùn)行時(shí)污點(diǎn)狀態(tài)提供了系統(tǒng)中的污點(diǎn)信息,依據(jù)記錄信息的精細(xì)劃分,將其區(qū)分為2種不同的粒度:粗粒度污點(diǎn)狀態(tài)和細(xì)粒度污點(diǎn)狀態(tài),其蘊(yùn)含的信息量不同,對(duì)應(yīng)的污點(diǎn)分析目的也有所區(qū)別。對(duì)兩者進(jìn)行比較,結(jié)果如表1所示。

表1 粗細(xì)粒度污點(diǎn)分析對(duì)比

粗粒度污點(diǎn)分析是將所有外部輸入的不可信數(shù)據(jù)源均標(biāo)記為污點(diǎn)源,該污點(diǎn)源的標(biāo)記是采用一種粗放式的標(biāo)識(shí)方法,所有污點(diǎn)源為不區(qū)分的單一模式。而對(duì)于每個(gè)寄存器、內(nèi)存地址和標(biāo)志位,均只有2種狀態(tài):untainted和tainted。

細(xì)粒度污點(diǎn)分析需要標(biāo)定和追蹤每個(gè)污點(diǎn)數(shù)據(jù)單元。由于一個(gè)內(nèi)存單元可能依賴于多個(gè)污點(diǎn)數(shù)據(jù),因此需要用集合結(jié)構(gòu)描述一個(gè)內(nèi)存單元的污點(diǎn)屬性。由污點(diǎn)屬性可以回溯污點(diǎn)傳播源頭,在分析過(guò)程中,一般采用整型變量表示污點(diǎn)標(biāo)簽,并建立變量索引表。本文采用的細(xì)粒度污點(diǎn)分析的污點(diǎn)數(shù)據(jù)標(biāo)記和污點(diǎn)個(gè)體描述均是以字節(jié)為單位。

粗粒度污點(diǎn)分析污點(diǎn)標(biāo)記簡(jiǎn)單,污點(diǎn)信息存儲(chǔ)空間小,分析速率快,而細(xì)粒度污點(diǎn)分析精度高,針對(duì)性強(qiáng)。本文結(jié)合粗粒度污點(diǎn)分析的高效性與細(xì)粒度污點(diǎn)分析的精確性,提出粗細(xì)粒度結(jié)合污點(diǎn)分析框架,具體設(shè)計(jì)如圖2所示。

圖2 粗細(xì)粒度結(jié)合的動(dòng)態(tài)污點(diǎn)分析框架

污點(diǎn)分析的主要分析模式遵循圖1的框架設(shè)計(jì),本文按粗細(xì)粒度區(qū)分實(shí)現(xiàn)了2種污點(diǎn)分析方式,并以中斷策略作為時(shí)空間隔標(biāo)準(zhǔn),先粗后細(xì)、先有無(wú)后精準(zhǔn)地實(shí)現(xiàn)快速高效的污點(diǎn)分析過(guò)程。中斷策略可設(shè)置為程序運(yùn)行結(jié)束或污點(diǎn)數(shù)據(jù)誤用敏感點(diǎn)。

在本文構(gòu)建的粗細(xì)粒度污點(diǎn)分析框架中,目標(biāo)程序運(yùn)行于客戶操作系統(tǒng)中,以運(yùn)行時(shí)的底層二進(jìn)制執(zhí)行指令作為分析對(duì)象,具有較強(qiáng)的系統(tǒng)無(wú)關(guān)性,適用于Windows、Linux、Mac OS等多種操作系統(tǒng)。同時(shí)虛擬的隔離環(huán)境提供良好的透明性,能分析各種類型的應(yīng)用程序軟件。該框架能較全面地應(yīng)用于各類系統(tǒng)與軟件的安全性分析,具有較好的普適性與可擴(kuò)展性。

程序監(jiān)控的指令流及運(yùn)行時(shí)信息駁雜且繁多,其中包含眾多圖形界面接口調(diào)用、系統(tǒng)參數(shù)讀取等非污點(diǎn)傳播事務(wù)軌跡信息,真正有效的污點(diǎn)傳播指令流較少。本文將繁雜的初運(yùn)行時(shí)信息和指令流用于簡(jiǎn)單的粗粒度污點(diǎn)分析,以在線分析形式快速獲取指令污點(diǎn)傳播信息,同時(shí)記錄污點(diǎn)傳播的指令流及對(duì)應(yīng)運(yùn)行時(shí)信息,依據(jù)中斷策略導(dǎo)出,之后轉(zhuǎn)入離線狀態(tài)的細(xì)粒度污點(diǎn)分析模塊,利用高性能處理機(jī)進(jìn)行分析。

2.3 污點(diǎn)標(biāo)記策略

污點(diǎn)標(biāo)記是污點(diǎn)傳播的首要步驟,其標(biāo)記方式極大地影響著污點(diǎn)傳播處理與污點(diǎn)信息存儲(chǔ)的效率。污點(diǎn)標(biāo)記是將外部引入的數(shù)據(jù)標(biāo)記為污點(diǎn)數(shù)據(jù)。本文采取粗細(xì)粒度區(qū)分的方式,制定2種污點(diǎn)標(biāo)記策略:

(1)對(duì)于粗粒度污點(diǎn)分析,污點(diǎn)信息的標(biāo)記值設(shè)定為tainted和untainted。污點(diǎn)源頭標(biāo)記的依據(jù)源于對(duì)程序運(yùn)行時(shí)系統(tǒng)調(diào)用函數(shù)的監(jiān)控,主要的監(jiān)控函數(shù)包括文件輸入open、read函數(shù)(Linux)、文件輸入OpenFile、ReadFile函數(shù)(Windows)、網(wǎng)絡(luò)輸入send、recv、sendto、recvfrom函數(shù)等。利用HOOK技術(shù)監(jiān)視系統(tǒng)調(diào)用,劫持目標(biāo)系統(tǒng)函數(shù)調(diào)用信息,獲取函數(shù)參數(shù),解析參數(shù)含義,轉(zhuǎn)向自定義函數(shù)調(diào)用處理,以獲取污點(diǎn)源頭輸入。

(2)對(duì)于粗粒度污點(diǎn)分析,內(nèi)存標(biāo)記的狀態(tài)空間僅為{tainted, untainted},同時(shí)污點(diǎn)數(shù)據(jù)的引入和傳播具有局部性的特征:污點(diǎn)數(shù)據(jù)通常分散存在于內(nèi)存的某重點(diǎn)區(qū)域;污點(diǎn)數(shù)據(jù)的引入一般會(huì)集中在某塊區(qū)域。故相應(yīng)的粗粒度污點(diǎn)分析內(nèi)存標(biāo)記模型采用精簡(jiǎn)式集中管理,將所有涉污數(shù)據(jù)地址統(tǒng)一存儲(chǔ),運(yùn)用段式污點(diǎn)標(biāo)記方法,標(biāo)識(shí)污點(diǎn)信息流的作用空間,可一定程度上降低內(nèi)存消耗。

在本文中,內(nèi)存中涉污數(shù)據(jù)段采用數(shù)據(jù)結(jié)構(gòu)表示,并以鏈表形式將涉污數(shù)據(jù)段連接;寄存器數(shù)據(jù)表示為,其中,taintinfo為寄存器大小的標(biāo)識(shí)字段,1表示tainted,0表示untainted,以順序表的形式存儲(chǔ)在固定區(qū)域;標(biāo)志位的存儲(chǔ)使用一字節(jié)的指定內(nèi)存位置,以置1表示tainted,置0表示untainted,以8 bit分別代表溢出標(biāo)志OF、符號(hào)標(biāo)志SF、奇偶標(biāo)志PF、方向標(biāo)志DF、零標(biāo)志ZF、進(jìn)位標(biāo)志CF、中斷標(biāo)志IF和輔助進(jìn)位標(biāo)志AF。粗粒度污點(diǎn)分析存儲(chǔ)模式如表2所示。

表2 粗粒度污點(diǎn)分析存儲(chǔ)模式

在細(xì)粒度污點(diǎn)分析中,以粗粒度分析后的涉污軌跡信息文件為對(duì)象,其污點(diǎn)的內(nèi)存標(biāo)記以字節(jié)為單位,并維護(hù)一個(gè)相對(duì)應(yīng)的影子內(nèi)存(shadow memory)[7]記錄內(nèi)存地址和污點(diǎn)屬性的映射關(guān)系。影子內(nèi)存為到的映射,記為{},其中,為單點(diǎn)鏈?zhǔn)絺鞑ゴ械臓顟B(tài)快照,包含源污點(diǎn)數(shù)據(jù)標(biāo)識(shí)表和依賴污點(diǎn)源數(shù)據(jù)結(jié)構(gòu)體。

本文采用字節(jié)粒度的污點(diǎn)數(shù)據(jù)標(biāo)識(shí),標(biāo)識(shí)號(hào)應(yīng)用順序整型的數(shù)字標(biāo)號(hào),標(biāo)識(shí)號(hào)的集合構(gòu)成源污點(diǎn)數(shù)據(jù)標(biāo)識(shí)表,依賴污點(diǎn)源數(shù)據(jù)結(jié)構(gòu)體采用有序二元決策圖(reduced ordered Binary Decision Diagram, roBDD)[8]。

2.4 污點(diǎn)傳播策略

動(dòng)態(tài)污點(diǎn)分析的靈魂是污點(diǎn)信息流[9]的傳播,信息流的傳播是污染源在程序運(yùn)行中擴(kuò)散和蔓延的關(guān)鍵,污染源數(shù)據(jù)以信息流為載體,沿著信息流傳播方向傳遞。伴隨著信息流的不斷傳播,污點(diǎn)信息不斷產(chǎn)生、傳遞和使用,可以說(shuō),信息流是污點(diǎn)數(shù)據(jù)傳播的宿主,它是傳播的支配者,要分析污染源的傳播狀態(tài),需從宿主著手,分析信息流傳播的方向性、范圍度、時(shí)效性,進(jìn)而重點(diǎn)跟蹤污染數(shù)據(jù)的路徑軌跡。本文動(dòng)態(tài)污點(diǎn)分析的過(guò)程即從信息流傳播入手,以執(zhí)行時(shí)二進(jìn)制匯編代碼為分析對(duì)象,研究信息流傳遞的時(shí)空特性,獲取狀態(tài)信息和傳播過(guò)程。

定義2污點(diǎn)信息流傳播(Taint-flow Propagation, TFP)是程序運(yùn)行時(shí)污點(diǎn)狀態(tài)的變化過(guò)程,為運(yùn)行時(shí)污點(diǎn)狀態(tài)序列=01…中相鄰鏈節(jié)點(diǎn)tsts+1的轉(zhuǎn)移過(guò)程,其前趨狀態(tài)ts為源狀態(tài),后趨狀態(tài)ts+1為目的狀態(tài)。

定義3污點(diǎn)傳播策略(Taint Propagation Strategy, TPS)是一種預(yù)設(shè)定的規(guī)則,為執(zhí)行指令操作到污點(diǎn)信息傳播形式的映射集合。TPS={data-flow strategy, control-flow strategy}包含數(shù)據(jù)流[10]分析策略和控制流[11]分析策略。污點(diǎn)傳播策略的完備性和正確性極大程度上決定了污點(diǎn)分析過(guò)程的精準(zhǔn)度。

數(shù)據(jù)流分析主要分析由數(shù)據(jù)移動(dòng)指令、算術(shù)邏輯運(yùn)算指令引發(fā)的值轉(zhuǎn)移過(guò)程,控制流分析主要分析由指令跳轉(zhuǎn)引發(fā)的控制轉(zhuǎn)移過(guò)程。數(shù)據(jù)流分析的主要對(duì)象為顯式操作數(shù)(標(biāo)準(zhǔn)指令格式中的操作數(shù))及隱式操作數(shù)(存在數(shù)據(jù)流轉(zhuǎn)移但未在指令中標(biāo)示的操作數(shù),以標(biāo)志位為代表),其側(cè)重點(diǎn)是通過(guò)解析指令,依據(jù)污點(diǎn)傳播策略指導(dǎo)污染數(shù)據(jù)的傳播。控制流分析大多針對(duì)跳轉(zhuǎn)類指令,以分支路徑跳轉(zhuǎn)為研究?jī)?nèi)容,由于匯編指令中,條件跳轉(zhuǎn)多數(shù)以標(biāo)志位為判斷,因此本文控制流分析的主要對(duì)象為跳轉(zhuǎn)指令中的標(biāo)志位污點(diǎn)信息。

本文將策略定義為模式和行為實(shí)體的集合strategy= ,模式為分析的類方法論,行為實(shí)體是分析的具體實(shí)踐。同樣,污點(diǎn)傳播策略分粗粒度(Coarse- grained Taint Propagation Strategy, CTPS)、細(xì)粒度(Fine- grained Taint Propagation Strategy, FTPS)區(qū)別制定。據(jù)此,動(dòng)態(tài)污點(diǎn)分析策略包括:粗粒度污點(diǎn)數(shù)據(jù)流傳播分析(Coarse- grained Taint Data-flow Propagation Strategy, CTDPS),粗粒度污點(diǎn)控制流傳播分析(Coarse-grained Taint Control-flow Propagation Strategy, CTCPS),細(xì)粒度污點(diǎn)數(shù)據(jù)流傳播分析(Fine-grained Taint Data-flow Propagation Strategy, FTDPS),細(xì)粒度污點(diǎn)控制流傳播分析(Fine-grained Taint Control-flow Propagation Strategy, FTCPS),如表3所示。

表3 動(dòng)態(tài)污點(diǎn)分析策略

控制流傳播分析旨在獲取當(dāng)前執(zhí)行路徑的污點(diǎn)約束,粗粒度污點(diǎn)標(biāo)記信息極簡(jiǎn)單,其控制流污點(diǎn)信息只表明污點(diǎn)控制的有無(wú)性,分析意義并不明顯,因此,本文重點(diǎn)設(shè)計(jì)了CTDPS、FTDPS和FTCPS。

本文依據(jù)匯編指令執(zhí)行規(guī)則,將粗粒度分析條件下信息流傳播模式(CTDPM)區(qū)分為以下5種:data in, data clear, eflags in, eflags set, NULL。過(guò)程分析中的污點(diǎn)傳播模式均屬于該類間集合。data in為存儲(chǔ)單元數(shù)據(jù)流引入;data clear為存儲(chǔ)單元數(shù)據(jù)流清除;eflags in為標(biāo)志位數(shù)據(jù)流引入;eflags clear為標(biāo)志位清除;NULL是空模式,為無(wú)污點(diǎn)流傳遞。圖3展示了粗粒度信息流傳播模式及具體示例。

圖3 粗粒度數(shù)據(jù)流傳播模式

粗粒度污點(diǎn)分析下信息流傳播策略的行為實(shí)體極為簡(jiǎn)略,其實(shí)體集合僅含{settainted, setuntainted, NULL}3類操作,分別表示污點(diǎn)屬性設(shè)定、污點(diǎn)屬性消除和空操作。粗粒度條件下,污點(diǎn)屬性信息為統(tǒng)一存儲(chǔ)維護(hù)的,所以,將依據(jù)污點(diǎn)屬性的更新,實(shí)時(shí)管理內(nèi)存污點(diǎn)屬性標(biāo)識(shí)鏈表、寄存器污點(diǎn)屬性標(biāo)識(shí)順序表和標(biāo)志位污點(diǎn)屬性字節(jié)。

細(xì)粒度分析條件下數(shù)據(jù)流傳播模式(FTDPM)區(qū)分為以下6種:data in, data add, data clear, eflags in, eflagsclear, NULL。data in為存儲(chǔ)單元數(shù)據(jù)流模式;data add為存儲(chǔ)單元數(shù)據(jù)流添加;data clear為存儲(chǔ)單元數(shù)據(jù)流清除;eflags in為標(biāo)志位數(shù)據(jù)流引入;eflags clear為標(biāo)志位清除;NULL為空模式。圖4展示了細(xì)粒度信息流傳播模式及具體示例。

圖4 細(xì)粒度信息流傳播模式

行為實(shí)體是針對(duì)污點(diǎn)屬性的具體操作,本文在細(xì)粒度分析條件下,共定義了7種行為實(shí)體。該行為實(shí)體適用于數(shù)據(jù)流分析策略和控制流分析策略。其中,()為當(dāng)前指令執(zhí)行中引入的源污點(diǎn)數(shù)據(jù)條目;()為當(dāng)前污染源集合,公式中行為實(shí)體5和行為實(shí)體6的主要區(qū)別是實(shí)體5是面向data add模式,而實(shí)體6是面向data in模式。細(xì)粒度污點(diǎn)信息流傳播中污點(diǎn)屬性的行為實(shí)體操作及應(yīng)用條件如表4所示。

表4 細(xì)粒度污點(diǎn)信息流傳播行為實(shí)體操作

細(xì)粒度分析條件下控制流傳播只包含一種模式,即控制流添加模式control add,隨著執(zhí)行路徑的深入,控制流污點(diǎn)信息是一個(gè)將當(dāng)前路徑約束逐步添加到全局路徑約束的不可逆過(guò)程,其行為實(shí)體如下:

對(duì)比可見,文中所提出的細(xì)粒度條件下污點(diǎn)傳播策略較粗粒度條件下擴(kuò)展了模式類別,細(xì)化了行為實(shí)體。此舉既提升了在線模式下污點(diǎn)分析的效率和規(guī)模,同時(shí)應(yīng)用離線細(xì)粒度污點(diǎn)分析,提高了分析的精準(zhǔn)度。

2.5 離線軌跡文件

執(zhí)行軌跡信息是動(dòng)態(tài)污點(diǎn)分析的基礎(chǔ),污點(diǎn)分析過(guò)程中污點(diǎn)屬性的獲取和傳播、污點(diǎn)信息的讀取和寫入都依賴于執(zhí)行軌跡信息。在線粗粒度污點(diǎn)分析過(guò)程中,執(zhí)行軌跡信息是通過(guò)HOOK機(jī)制獲取的,包括指令流的提取,內(nèi)存、寄存器內(nèi)容讀取,可以根據(jù)需要實(shí)時(shí)獲取運(yùn)行時(shí)狀態(tài)信息,信息量足以滿足粗粒度污點(diǎn)分析的需要。而細(xì)粒度污點(diǎn)分析以包含有限信息的離線軌跡文件為唯一依據(jù),離線軌跡文件信息的完備性和精準(zhǔn)性在細(xì)粒度污點(diǎn)分析中起了決定性作用。

離線軌跡文件的記錄關(guān)鍵在于需求信息的全面性,但完整記錄程序運(yùn)行時(shí)的狀態(tài)信息是不現(xiàn)實(shí)的,因此,本文從污點(diǎn)分析的實(shí)質(zhì)出發(fā),以污點(diǎn)為中心,將污點(diǎn)相關(guān)作為記錄標(biāo)準(zhǔn),重點(diǎn)執(zhí)行如表5所示的策略。

表5 污點(diǎn)記錄策略

指令運(yùn)行時(shí)狀態(tài)參數(shù)指導(dǎo)行為實(shí)體具體執(zhí)行,同樣是污點(diǎn)分析的必要信息。因此,本文的離線軌跡信息文件從污點(diǎn)分析需求出發(fā),著重記錄指導(dǎo)污點(diǎn)傳播策略制定的污點(diǎn)屬性標(biāo)識(shí)、設(shè)定污點(diǎn)引入操作的源污點(diǎn)標(biāo)識(shí)、定位污點(diǎn)傳播操作的地址信息等,具體結(jié)構(gòu)如表6所示。

表6 離線軌跡文件記錄結(jié)構(gòu)

該結(jié)構(gòu)所記錄的文件內(nèi)容都是指令執(zhí)行前的狀態(tài)參數(shù),離線分析系統(tǒng)掃描一行軌跡信息后,提取其源污點(diǎn)標(biāo)識(shí),依據(jù)標(biāo)識(shí)有無(wú)采用污點(diǎn)標(biāo)記策略或污點(diǎn)傳播策略。獲取指令助記符、操作數(shù)和污點(diǎn)屬性,可確定完整的污點(diǎn)傳播策略。提取內(nèi)容和獲取信息的對(duì)應(yīng)關(guān)系如表7所示。

表7 離線軌跡文件信息提取

2.6 敏感點(diǎn)檢測(cè)

污點(diǎn)數(shù)據(jù)的超權(quán)限使用是污點(diǎn)分析檢查的重點(diǎn),本文在粗粒度污點(diǎn)分析模塊和細(xì)粒度污點(diǎn)分析模塊中均設(shè)置了敏感點(diǎn)檢測(cè),以制定的策略檢查污點(diǎn)數(shù)據(jù)的異常使用。針對(duì)當(dāng)前軟件安全的主要威脅點(diǎn),本文主要對(duì)污點(diǎn)數(shù)據(jù)作為跳轉(zhuǎn)地址、污點(diǎn)數(shù)據(jù)作為執(zhí)行代碼和污點(diǎn)數(shù)據(jù)的受控寫入等異常以為敏感點(diǎn)。著重檢測(cè)JMP類、MOV類、CALL、RET指令的污點(diǎn)信息。

本文實(shí)現(xiàn)的敏感點(diǎn)檢測(cè)模式包括:粗粒度敏感點(diǎn)檢測(cè)(coarse-grained sensitive point detection),細(xì)粒度敏感點(diǎn)檢測(cè)(fine-grained sensitive point detection),人工檢測(cè)(manual- control detection),3種模式均為可選模式,功能分別為:(1)粗粒度敏感點(diǎn)檢測(cè):監(jiān)控程序運(yùn)行狀態(tài)中的異常,防范惡意攻擊。(2)細(xì)粒度敏感點(diǎn)檢測(cè):獲取敏感位置污點(diǎn)信息,用于脆弱點(diǎn)驗(yàn)證。(3)人工檢測(cè):獲取運(yùn)行時(shí)污點(diǎn)狀態(tài)信息。

3 實(shí)驗(yàn)分析

3.1 原型系統(tǒng)構(gòu)建

本文基于QEMU虛擬機(jī)[12]開發(fā)實(shí)現(xiàn)了粗細(xì)粒度結(jié)合動(dòng)態(tài)污點(diǎn)分析原型系統(tǒng)。利用虛擬化技術(shù)透明地監(jiān)視目標(biāo)程序的運(yùn)行狀態(tài),通過(guò)HOOK機(jī)制監(jiān)控執(zhí)行指令、參數(shù)及存儲(chǔ)狀態(tài)信息等。基本軟/硬件運(yùn)行環(huán)境如表8所示。

表8 實(shí)驗(yàn)基本軟/硬件環(huán)境

原型系統(tǒng)采用前述的框架設(shè)計(jì),使用自編譯程序test.exe、windows系統(tǒng)自帶記事本程序和安裝第三方軟件Adobe Reader作為測(cè)試實(shí)例。

3.2 實(shí)驗(yàn)過(guò)程及分析

在粗粒度污點(diǎn)分析中,將外部引入數(shù)據(jù)標(biāo)記為污點(diǎn)源,包括test.exe的輸入字符、記事本文件test.txt以及PDF文件test.pdf。使用CTDPS與CTCPS指導(dǎo)污點(diǎn)傳播過(guò)程,并維護(hù)一個(gè)共用的污點(diǎn)記錄結(jié)構(gòu),運(yùn)行過(guò)程中依文件記錄策略記錄離線軌跡文件,具體實(shí)例如下:

<7c93017b: IsSource; ADD EAX, [EBX];

REG@EAX[0x00250680]$4T MEM@0x0012fa78 [0x0012fb20] $4T FLAG@EFLAGS[0xffffffa0]$4T>

<7c9301b4: JNZ 0x7c930719; FLAG@EFLAGS[0xfffffcd1] $4T>

<7c872993:CALL 0x7c93069c; REG@0x7c93069c [8ac38ec2]$4N>

監(jiān)控程序主進(jìn)程Test.exe、Notepad.exe、AcroRd32.exe,獲取并記錄其運(yùn)行指令,提取污點(diǎn)相關(guān)指令,同時(shí)記錄粗粒度污點(diǎn)分析的耗時(shí)。表9展示了離線軌跡文件采集過(guò)程的統(tǒng)計(jì)信息。從實(shí)驗(yàn)結(jié)果可以看出,隨著監(jiān)控程序的增大和污點(diǎn)數(shù)據(jù)源的擴(kuò)大,監(jiān)控指令數(shù)和污點(diǎn)相關(guān)指令數(shù)均會(huì)大幅增加,粗粒度污點(diǎn)分析的耗時(shí)也會(huì)增加。分析觀察數(shù)據(jù),發(fā)現(xiàn)Adobe Reader 7.0的污點(diǎn)相關(guān)指令數(shù)占進(jìn)程相關(guān)指令數(shù)的比例較大,而其他兩者均相對(duì)較小。原因在于,test.pdf相對(duì)于其他兩個(gè)輸入污點(diǎn)文件,其包含了許多閱讀器所需的參數(shù),這些參數(shù)和用戶寫入的PDF文件內(nèi)容一同被標(biāo)記為污點(diǎn)數(shù)據(jù),同時(shí)在文件打開閱讀的過(guò)程中,被大量使用,故導(dǎo)致污點(diǎn)相關(guān)指令數(shù)比例的大幅增加。如何篩選污點(diǎn)引入數(shù)據(jù),減少污點(diǎn)相關(guān)指令數(shù)將是筆者下一步工作需要解決的問題。

表9 離線軌跡采集的實(shí)驗(yàn)數(shù)據(jù)

輸出離線軌跡文件至離線分析機(jī),通過(guò)細(xì)粒度污點(diǎn)分析模塊進(jìn)一步進(jìn)行細(xì)粒度污點(diǎn)分析,以FTDPS與FTCPS為指導(dǎo)策略,依次序讀取指令流,獲取指令參數(shù)及存儲(chǔ)狀態(tài)信息,計(jì)算并更新內(nèi)存、寄存器、標(biāo)志位的污點(diǎn)狀態(tài),并將其存儲(chǔ)在相應(yīng)影子內(nèi)存中。在離線分析過(guò)程中,可設(shè)置停止位、暫停污點(diǎn)分析、查詢污點(diǎn)狀態(tài)、在離線文件 27 658行查詢寄存器EAX、內(nèi)存地址0x00250680和符號(hào)位ZF的污點(diǎn)信息值,結(jié)果如下:

line27658EAX:tainted{1,2,3,4,7,8}

line27658 0x00250680:untainted

line27658ZF:tainted{5,6,7,8}

對(duì)比粗粒度污點(diǎn)分析污點(diǎn)記錄和細(xì)粒度污點(diǎn)分析污點(diǎn)查詢信息,可以看出污點(diǎn)狀態(tài)基本一致,但其中也存在個(gè)別位置污點(diǎn)屬性不統(tǒng)一的情況,主要原因是兩者的污點(diǎn)傳播策略不一致,粗粒度污點(diǎn)分析以快速方便為目標(biāo),相對(duì)而言分析的精確度不高,例如有些污點(diǎn)清除策略未制定全面。細(xì)粒度分析的策略則相對(duì)全面,因此,在具體分析過(guò)程中會(huì)有些許區(qū)別。

在對(duì)離線軌跡文件進(jìn)行細(xì)粒度污點(diǎn)分析過(guò)程中,本文在表10中記錄了細(xì)粒度污點(diǎn)分析模塊的運(yùn)行性能。

表10 細(xì)粒度污點(diǎn)的分析性能

可以看出,隨著應(yīng)用程序規(guī)模的擴(kuò)大,執(zhí)行指令數(shù)增加,污點(diǎn)分析的耗時(shí)也隨之增大。細(xì)粒度污點(diǎn)分析的主要時(shí)間消耗在于:(1)指令條目解析;(2)污點(diǎn)存儲(chǔ)模塊讀寫;(3)污點(diǎn)信息集合運(yùn)算。前兩條的耗時(shí)與離線軌跡文件中指令數(shù)成正比,集合運(yùn)算耗時(shí)與污點(diǎn)源大小關(guān)聯(lián),所以,細(xì)粒度污點(diǎn)分析的耗時(shí)與目標(biāo)軟件大小與污點(diǎn)源規(guī)模正相關(guān)。同時(shí)對(duì)比該表數(shù)據(jù)與表9可見細(xì)粒度污點(diǎn)分析的耗時(shí)和粗粒度污點(diǎn)分析差距不大,在只分析污點(diǎn)相關(guān)指令的情況下時(shí)間還能進(jìn)一步縮短,驗(yàn)證了粗細(xì)粒度結(jié)合的動(dòng)態(tài)污點(diǎn)分析方法具有較高的準(zhǔn)確性和快速性。

4 結(jié)束語(yǔ)

本文提出一種粗細(xì)粒度結(jié)合的二進(jìn)制代碼動(dòng)態(tài)污點(diǎn)分析方法,以動(dòng)態(tài)污點(diǎn)分析為基礎(chǔ),重點(diǎn)設(shè)計(jì)了先粗粒度后細(xì)粒度分析的新型框架結(jié)構(gòu),同時(shí)結(jié)合分析特性與需求,分別制定了粗細(xì)粒度條件下的信息流分析策略,并通過(guò)一種松耦合的方式,利用離線軌跡文件來(lái)傳遞分析信息。通過(guò)對(duì)原型系統(tǒng)的測(cè)試,驗(yàn)證了該方法兼有粗粒度和細(xì)粒度污點(diǎn)分析的優(yōu)點(diǎn),可實(shí)現(xiàn)高效、快捷、精確的分析。下一步將研究污點(diǎn)信息的精準(zhǔn)化定位和污點(diǎn)傳播路徑的回溯,提高對(duì)大型程序的分析效能。

[1] Lam M S, Martin M C, Livshits V B, et al. Securing Web Applications with Static and Dynamic Information Flow Tracking[C]//Proc. of 2008 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation. New York, USA: ACM Press, 2008: 3-12.

[2] Newsome J, Song D. Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software[C]//Proc. of the 12th Annual Network and Distributed System Security Symposium. San Diego, USA: 2005.

[3] Sharif M, Lanzi A, Giffin J, et al. Automatic Reverse En- gineering of Malware Emulators[C]//Proc. of 2009 IEEE Symposium on Security and Privacy. Oakland, USA: IEEE Press, 2009: 94-109.

[4] Comparetti P M, Wondracek G, Kruegel C, et al. Prospex: Protocol Speci?cation Extraction[C]//Proc. of the 30th IEEE Symposium on Security and Privacy. Washington D. C., USA: IEEE Computer Society, 2009: 110-125.

[5] Yin Heng, Song D, Egele M, et al. Panorama: Capturing System-wide Information Flow for Malware Detection and Analysis[C]//Proc. of ACM Conference on Computer and Communication Security. Alexandria, USA: ACM Press, 2007: 116-127.

[6] Kohli P. Coarse-grained Dynamic Taint Analysis for Defeating Control and Non-control Data[EB/OL]. (2009-06-24). http:// arxiv.org/abs/0906.4481.

[7] Nethercote N, Seward J. How to Shadow Every Byte of Memory Used by a Program[C]//Proc. of the 3rd International ACM SIGPLAN/SIGOPS Conference on Virtual Execution

Environments. San Diego, USA: ACM Press, 2007: 65-74.

[8] Bryant R E. Symbolic Boolean Manipulation with Ordered Binary-decision Diagrams[J]. ACM Computing Surveys, 1992, 24(3): 293-318.

[9] 黃 強(qiáng), 曾慶凱. 基于信息流策略的污點(diǎn)傳播分析及動(dòng)態(tài)驗(yàn)證[J]. 軟件學(xué)報(bào), 2011, 22(9): 2036-2048.

[10]Denning D E. A Lattice Model of Secure Information Flow[J]. Communications of the ACM, 1976, 19(5): 236-243.

[11]Kang M G, McCamant S, Poosankam P. DTA++: Dynamic Taint Analysis with Targeted Control-Fow Pro- pagation[C]// Proc. of the 18th Annual Network and Distributed System Security Symposium. San Diego, USA: [s. n.], 2011.

[12]Bellard F. Qemu: A Fast and Portable Dynamic Translator[C]// Proc. of USENIX’05. Berkeley, USA: [s. n.], 2005: 41-46.

編輯 金胡考

A Dynamic Taint Analysis Method Combined with Coarse-grained and Fine-grained

SHI Da-wei, YUAN Tian-wei

(Jiangnan Institute of Computing Technology, Wuxi 214083, China)

Combination of coarse-grained and fine-grained Dynamic Taint Analysis(DTA) is developed to take speed and accuracy both into account. By comparing the realization process of coarse-grained DTA and fine-grained DTA, this paper proposes a new analysis framework. It executes online coarse-grained DTA to filter useful instruction, uses offline fine-grained DTA to calculate taint information. Coarse-grained and fine-grained taint mark methods are established respectively by comparing the difference of taint analysis. Data-flow property strategy and control-flow property strategy are developed under the condition of coarse-grained DTA and fine-grained DTA. As a transfer file, offline track record structure is designed to provide necessary information for fine-grained analysis. A prototype system is implemented and the experimental result proves that this method can ensure the rapid collection of taint information through online coarse-grained mode, and use offline fine-grained mode to improve the accuracy with accepted time consumption.

coarse-grained; fine-grained; Dynamic Taint Analysis(DTA); offline track; taint propagation; binary

國(guó)家“863”計(jì)劃基金資助項(xiàng)目(2012AA7111043)。

史大偉(1989-),男,碩士研究生,主研方向:軟件安全;袁天偉,高級(jí)工程師。

2013-10-17

2013-11-22 E-mail:sdave@126.com

1000-3428(2014)03-0012-06

A

TP309.2

10.3969/j.issn.1000-3428.2014.03.003

猜你喜歡
指令分析信息
聽我指令:大催眠術(shù)
隱蔽失效適航要求符合性驗(yàn)證分析
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
展會(huì)信息
坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 免费毛片视频| 欧美成一级| 青青操国产视频| 日本三级黄在线观看| 67194亚洲无码| 中文字幕 日韩 欧美| 亚洲日韩精品无码专区97| 无码中文AⅤ在线观看| av在线5g无码天天| 少妇露出福利视频| 91精品专区国产盗摄| 特级精品毛片免费观看| 精品国产91爱| 久久精品嫩草研究院| 午夜无码一区二区三区| 久久香蕉国产线看观| av在线手机播放| 国产成人精品男人的天堂下载| 欧美福利在线观看| 国产精品xxx| 国产情侣一区| 国产第一页屁屁影院| 日韩无码白| 亚洲手机在线| 色老二精品视频在线观看| 国产精品一区在线观看你懂的| 国产女人在线视频| 亚洲精品视频在线观看视频| 久久特级毛片| 婷婷99视频精品全部在线观看| 久久精品国产免费观看频道| 无码网站免费观看| 久久综合亚洲色一区二区三区| 无套av在线| 国产成人综合日韩精品无码首页| 色欲国产一区二区日韩欧美| 一级成人欧美一区在线观看| 麻豆精品视频在线原创| 亚洲一区二区三区香蕉| 亚洲人妖在线| 夜夜操狠狠操| 中文字幕在线永久在线视频2020| 国产幂在线无码精品| 九九香蕉视频| 伊人久久大香线蕉综合影视| 女人18毛片一级毛片在线 | 亚洲欧美日韩视频一区| 妇女自拍偷自拍亚洲精品| 久久久久亚洲av成人网人人软件| 麻豆精品在线视频| 97se亚洲综合在线| 亚洲中文字幕在线精品一区| 99视频在线观看免费| 九一九色国产| 在线观看免费国产| 人人看人人鲁狠狠高清| 日韩在线观看网站| 亚洲Aⅴ无码专区在线观看q| 激情六月丁香婷婷四房播| 九九线精品视频在线观看| 东京热av无码电影一区二区| 国产一区二区精品福利| 国产美女无遮挡免费视频网站| 亚洲高清在线天堂精品| 黄色片中文字幕| 国产男人天堂| 亚洲欧美人成电影在线观看| 亚洲成人77777| 久久久久中文字幕精品视频| 91成人免费观看| 亚洲精品自产拍在线观看APP| 欧美第二区| 亚洲一区二区无码视频| 婷婷综合在线观看丁香| 国产浮力第一页永久地址| 国产丝袜第一页| 国产激爽大片在线播放| 国产欧美在线观看视频| 午夜视频日本| 欧美成人区| 丰满人妻一区二区三区视频| 日本a∨在线观看|