• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于污點(diǎn)分析的緩沖區(qū)溢出檢測(cè)方法

      2012-04-13 11:37:00
      科技視界 2012年24期
      關(guān)鍵詞:污點(diǎn)緩沖區(qū)攻擊者

      孫 峰

      (中國(guó)民航信息網(wǎng)絡(luò)股份有限公司 中國(guó) 北京 100010)

      一種基于污點(diǎn)分析的緩沖區(qū)溢出檢測(cè)方法

      孫 峰

      (中國(guó)民航信息網(wǎng)絡(luò)股份有限公司 中國(guó) 北京 100010)

      緩沖區(qū)溢出占據(jù)了目前網(wǎng)絡(luò)攻擊的90%以上,給信息安全造成了巨大的威脅。本文提出了一種針對(duì)基于污點(diǎn)分析的動(dòng)態(tài)分析方法,該方法追蹤網(wǎng)絡(luò)數(shù)據(jù)在系統(tǒng)內(nèi)的傳播過(guò)程,并在網(wǎng)絡(luò)數(shù)據(jù)被非法使用的時(shí)候報(bào)警,能夠有效檢測(cè)到各類緩沖區(qū)溢出攻擊。

      緩沖區(qū)溢出攻擊;網(wǎng)絡(luò)攻擊;信息安全

      0 簡(jiǎn)介

      緩沖區(qū)溢出是目前最常見(jiàn)的軟件安全漏洞之一,接近90%的網(wǎng)絡(luò)攻擊都是通過(guò)緩沖區(qū)溢出漏洞達(dá)成的。通過(guò)精心構(gòu)造程序輸入,攻擊者可以通過(guò)緩沖區(qū)溢出覆蓋幾乎任何他想覆蓋的目標(biāo),并在這個(gè)過(guò)程中植入shellcode[1]。這樣,當(dāng)應(yīng)用程序?qū)斎霐?shù)據(jù)進(jìn)行處理的時(shí)候,其控制流將會(huì)被篡改,從而執(zhí)行攻擊者所期望執(zhí)行的惡意代碼。從1988年的Morris蠕蟲(chóng)開(kāi)始,直到2010年對(duì)伊朗核工業(yè)設(shè)施造成巨大破壞的“震網(wǎng)”病毒,一直到最近的危害更勝“震網(wǎng)”的“超級(jí)火焰”病毒,當(dāng)中都利用了緩沖區(qū)溢出攻擊技術(shù)??梢?jiàn),緩沖區(qū)溢出是目前最重要的網(wǎng)絡(luò)安全威脅之一。

      傳統(tǒng)的緩沖區(qū)溢出分為靜態(tài)分析和動(dòng)態(tài)分析兩種方法。靜態(tài)分析能夠覆蓋更多的程序執(zhí)行路徑,具有更高的覆蓋率,但需要程序的源代碼,如Stack Guard[2];動(dòng)態(tài)分析方法根據(jù)軟件的實(shí)際執(zhí)行來(lái)對(duì)緩沖區(qū)溢出進(jìn)行檢測(cè),更貼近軟件真實(shí)行為,但只能覆蓋單一的執(zhí)行路徑,如CRED[3]。因此,靜態(tài)分析和動(dòng)態(tài)分析方法兩者各有所長(zhǎng),不能互相取代。本文提出了一種基于污點(diǎn)分析[4]的動(dòng)態(tài)分析方法來(lái)檢測(cè)基于網(wǎng)絡(luò)的緩沖區(qū)溢出攻擊,它的基本思想是:首先通過(guò)將網(wǎng)絡(luò)數(shù)據(jù)打標(biāo)標(biāo)記為污點(diǎn)數(shù)據(jù),然后利用模擬器如QEMU[5]等跟蹤污點(diǎn)數(shù)據(jù)在系統(tǒng)內(nèi)的傳播過(guò)程。一旦污點(diǎn)數(shù)據(jù)被非法使用,則說(shuō)明可能發(fā)生了緩沖區(qū)溢出攻擊,系統(tǒng)報(bào)警。

      1 緩沖區(qū)溢出原理及其分類

      根據(jù)緩沖區(qū)溢出的不同,分為如下三種形式:棧溢出、堆溢出和BSS溢出。

      1)棧溢出

      棧是在函數(shù)調(diào)用的時(shí)候建立的,它包含以下信息:函數(shù)參數(shù)信息;函數(shù)返回地址信息;棧頂和棧底信息;局部變量的信息等。棧的生長(zhǎng)方向是從內(nèi)存高地址向低地址生長(zhǎng)的,其數(shù)據(jù)的壓入和彈出操作由PUSH和POP完成,并且遵循后進(jìn)先出的原則。當(dāng)函數(shù)被調(diào)用時(shí),其函數(shù)參數(shù)、函數(shù)返回地址、棧幀信息和局部變量依次壓入到堆棧當(dāng)中。這樣,通過(guò)向棧中壓入超長(zhǎng)的數(shù)據(jù),就有可能改變函數(shù)的返回地址,從而使得函數(shù)在返回的時(shí)候執(zhí)行攻擊者所期望執(zhí)行的代碼。例如:假設(shè)函數(shù)存在某個(gè)數(shù)組參數(shù)s[20],則當(dāng)執(zhí)行strcpy(s,attackstr)時(shí),只要 attackstr的長(zhǎng)度足夠長(zhǎng)(>20),就會(huì)覆蓋函數(shù)返回地址IP。通過(guò)精心構(gòu)造attackstr字符串,就可以從而達(dá)到攻擊目的。

      2)堆溢出

      在C語(yǔ)言中,使用malloc()可以動(dòng)態(tài)分配一段內(nèi)存,并向用戶返回一個(gè)內(nèi)存地址,而實(shí)際上這個(gè)地址前面通常還有8Bytes的內(nèi)部結(jié)構(gòu),用來(lái)記錄分配的塊長(zhǎng)度以及一些標(biāo)志,如圖1所示。

      顯然,在malloc分配的用戶數(shù)據(jù)后面,緊接著的是本堆的數(shù)據(jù)(4B)和上一堆的字節(jié)數(shù)(4B)。這樣,當(dāng)用戶輸入的數(shù)據(jù)超長(zhǎng),超過(guò)了malloc的參數(shù)指定的長(zhǎng)度時(shí),本堆的字節(jié)數(shù)和上一堆的字節(jié)數(shù)就可以被覆蓋,從而實(shí)現(xiàn)了堆溢出。

      圖1 堆分配示意圖

      3)BSS 溢出

      BSS和靜態(tài)全局變量相關(guān)。例如,假設(shè)有如下定義:

      static char buf1[10],buf2[12];

      則buf1和but2兩個(gè)數(shù)組位于BSS段。如果buf1寫入的數(shù)據(jù)足夠長(zhǎng)(>10),例如12個(gè)字節(jié),則會(huì)覆蓋buf2的內(nèi)容。利用這點(diǎn),攻擊者可以通過(guò)改寫B(tài)SS中的指針或函數(shù)指針等方式,改變程序原先的執(zhí)行流程,使指針跳轉(zhuǎn)到特定的內(nèi)存地址并執(zhí)行攻擊者指定的操作。

      從以上分析可以知道,對(duì)于緩沖區(qū)溢出攻擊,其發(fā)生的根本原因是類C語(yǔ)言不對(duì)緩沖區(qū)做邊界檢查,從而使得攻擊者可以通過(guò)輸入超長(zhǎng)的數(shù)據(jù)(超過(guò)緩沖區(qū)的長(zhǎng)度)來(lái)覆蓋某些內(nèi)存單元,進(jìn)而達(dá)到控制程序流程的目的。

      2 基于污點(diǎn)分析的緩沖區(qū)溢出檢測(cè)方法

      對(duì)于基于網(wǎng)絡(luò)攻擊的緩沖區(qū)溢出而言,根據(jù)上面的分析,攻擊者必須通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程將(超長(zhǎng))數(shù)據(jù)傳入到應(yīng)用程序的緩沖區(qū)以篡改程序的控制流。換句話說(shuō),當(dāng)緩沖區(qū)溢出發(fā)生時(shí),一定是攻擊者通過(guò)網(wǎng)絡(luò)傳入的攻擊數(shù)據(jù)被使用了。從這個(gè)結(jié)論出發(fā),如果能夠監(jiān)控應(yīng)用程序?qū)?shù)據(jù)的使用,一旦發(fā)現(xiàn)EIP寄存器或者JMP系列機(jī)器指令使用的是網(wǎng)絡(luò)數(shù)據(jù),則意味著很可能發(fā)生了緩沖區(qū)溢出攻擊(因?yàn)橥ǔ5木彌_區(qū)是數(shù)據(jù)而不是指令,因而不會(huì)被EIP寄存器或者JMP指令使用)。而為了監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)的時(shí)候,可以采用污點(diǎn)分析的方法,將網(wǎng)絡(luò)數(shù)據(jù)打上污點(diǎn)標(biāo)記,并利用硬件模擬器如QEMU等對(duì)機(jī)器指令的執(zhí)行進(jìn)行模擬即可。整個(gè)系統(tǒng)的流程如圖2所示。

      從圖2可以看到,基于污點(diǎn)分析的緩沖區(qū)溢出攻擊檢測(cè)有三個(gè)大的步驟:

      1)標(biāo)記污點(diǎn)數(shù)據(jù)。這是通過(guò)將網(wǎng)絡(luò)數(shù)據(jù)打上污點(diǎn)標(biāo)記完成的。通過(guò)在QEMU內(nèi)部的“影子內(nèi)存”,將網(wǎng)絡(luò)傳入的數(shù)據(jù)打上污點(diǎn)標(biāo)記。進(jìn)行污點(diǎn)標(biāo)記時(shí),可以使用一個(gè)bit的影子內(nèi)存標(biāo)記一個(gè)字節(jié)的網(wǎng)絡(luò)數(shù)據(jù),顯然,這種方式只能說(shuō)明某個(gè)字節(jié)是否是網(wǎng)絡(luò)數(shù)據(jù)。如果需要記錄更多的信息,可以使用更多的bit來(lái)標(biāo)記一個(gè)字節(jié)的網(wǎng)絡(luò)數(shù)據(jù)。

      2)跟蹤污點(diǎn)傳播。QEMU硬件模擬器將采用軟件方式來(lái)模擬機(jī)器指令的執(zhí)行。這使得我們可以利用QEMU來(lái)跟蹤污點(diǎn)數(shù)據(jù)的傳播。其基本過(guò)程是:根據(jù)不同的機(jī)器指令,當(dāng)源操作數(shù)是污點(diǎn)數(shù)據(jù)時(shí),則目的操作數(shù)也應(yīng)該打上污點(diǎn)標(biāo)記。例如:對(duì)于“MOV AX,DX”,若DX存儲(chǔ)的污點(diǎn)數(shù)據(jù),則AX也應(yīng)該打上污點(diǎn)標(biāo)記標(biāo)明為污點(diǎn)數(shù)據(jù)。這一部分需要根據(jù)機(jī)器指令的分類:算術(shù)指令、單操作數(shù)、雙操作數(shù)、三操作數(shù)指令等來(lái)實(shí)現(xiàn)不同的跟蹤。

      圖2 基于污點(diǎn)分析的緩沖區(qū)溢出攻擊檢測(cè)

      3)檢測(cè)溢出攻擊。當(dāng)QEMU的指令模擬發(fā)現(xiàn)JMP指令的操作數(shù)是污點(diǎn)數(shù)據(jù),或者EIP寄存器內(nèi)部存儲(chǔ)的是污點(diǎn)數(shù)據(jù),則說(shuō)明發(fā)生了緩沖區(qū)溢出攻擊。事實(shí)上,上述規(guī)則是最低限的普遍規(guī)則。根據(jù)不同的場(chǎng)景,檢測(cè)規(guī)則可以更加復(fù)雜。例如:可以檢測(cè)函數(shù)調(diào)用參數(shù),當(dāng)某些函數(shù)調(diào)用參數(shù)是污點(diǎn)數(shù)據(jù)時(shí),可能發(fā)生了其他類型的溢出攻擊等等。

      3 結(jié)論

      緩沖區(qū)溢出是一種危害非常大的攻擊方式。針對(duì)基于網(wǎng)絡(luò)的緩沖區(qū)溢出攻擊特點(diǎn):當(dāng)攻擊發(fā)生時(shí),一定使用了網(wǎng)絡(luò)傳入的、攻擊者精心設(shè)計(jì)的網(wǎng)絡(luò)數(shù)據(jù)流,本文提出了一種基于污點(diǎn)分析的緩沖區(qū)溢出檢測(cè)方法。它通過(guò)監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)的傳入,并通過(guò)打標(biāo)跟蹤網(wǎng)絡(luò)數(shù)據(jù)在系統(tǒng)內(nèi)的傳播和使用過(guò)程,實(shí)現(xiàn)了緩沖區(qū)溢出攻擊的檢測(cè)。實(shí)驗(yàn)證明我們的方法是有效的。

      [1]林志強(qiáng),王逸,茅兵,等.SafeBird:一種動(dòng)態(tài)和透明的運(yùn)行時(shí)緩沖區(qū)溢出防御工具集[J].電子學(xué)報(bào),2007,35(5):882-889.

      [2]C.Cowan,C.Pu,D.Maier,et al.StackGuard:Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks[C].Proceedings of the 7th USENIX Security Symposium,1998.

      [3]O.Ruwase,M.S.Lam.A Practical Dynamic Buffer Overflow Detector[C].Proceedings of the 11th Annual Network and Distributed System Security Symposium,2004.

      [4]J.Newsome,D.Song.Dynamic Taint Analysis for Automatic Detection,Analysis,and Signature Generation of Exploits on Commodity Software[R].CMU-CS-04-140,2004.

      [5]QEMU WiKi[EB/OL].[2012-07-24].http://wiki.qemu.org/Main_Page.

      A Buffer Overflow Detection Method based on Taint Analysis

      SUN Feng
      (Travel Sky Technology Limited,Beijing,100010,China)

      Buffer overflow is the one of the most often-seen attacks,and nearly 90%of the network attacks are cause by it.To address this issue,a dynamic analysis approach is introduced.The approach uses the taint analysis to track the propagation of network data flow,and throws an alarm when the abnormal use of network data is detected.Experimental results show that it can efficiently detect a variety of buffer overflow attacks.

      Buffer overflow attack;Network attack;Information security

      孫峰(1977—),男,吉林長(zhǎng)春人,碩士研究生,就職于中國(guó)民航信息網(wǎng)絡(luò)股份有限公司,研究方向?yàn)檐浖y(cè)試與信息安全。

      尹雪梅]

      猜你喜歡
      污點(diǎn)緩沖區(qū)攻擊者
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
      基于代碼重寫的動(dòng)態(tài)污點(diǎn)分析
      基于微分博弈的追逃問(wèn)題最優(yōu)策略設(shè)計(jì)
      正面迎接批判
      愛(ài)你(2018年16期)2018-06-21 03:28:44
      使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
      有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
      我國(guó)“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      電視技術(shù)(2012年1期)2012-06-06 08:13:58
      孟津县| 扶沟县| 安宁市| 芦溪县| 南阳市| 砀山县| 十堰市| 桃园县| 石林| 讷河市| 泗洪县| 和平区| 凌海市| 肃北| 南城县| 邯郸市| 西昌市| 青河县| 英超| 简阳市| 丹阳市| 连城县| 抚远县| 隆安县| 开原市| 广昌县| 建水县| 囊谦县| 绥中县| 长乐市| 大姚县| 孟津县| 穆棱市| 石城县| 太原市| 东城区| 三穗县| 辛集市| 刚察县| 海晏县| 巴彦淖尔市|