亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        孫 峰

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

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

        孫 峰

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

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

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

        0 簡(jiǎn)介

        緩沖區(qū)溢出是目前最常見的軟件安全漏洞之一,接近90%的網(wǎng)絡(luò)攻擊都是通過緩沖區(qū)溢出漏洞達(dá)成的。通過精心構(gòu)造程序輸入,攻擊者可以通過緩沖區(qū)溢出覆蓋幾乎任何他想覆蓋的目標(biāo),并在這個(gè)過程中植入shellcode[1]。這樣,當(dāng)應(yīng)用程序?qū)斎霐?shù)據(jù)進(jìn)行處理的時(shí)候,其控制流將會(huì)被篡改,從而執(zhí)行攻擊者所期望執(zhí)行的惡意代碼。從1988年的Morris蠕蟲開始,直到2010年對(duì)伊朗核工業(yè)設(shè)施造成巨大破壞的“震網(wǎng)”病毒,一直到最近的危害更勝“震網(wǎng)”的“超級(jí)火焰”病毒,當(dāng)中都利用了緩沖區(qū)溢出攻擊技術(shù)??梢?,緩沖區(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í)行來對(duì)緩沖區(qū)溢出進(jìn)行檢測(cè),更貼近軟件真實(shí)行為,但只能覆蓋單一的執(zhí)行路徑,如CRED[3]。因此,靜態(tài)分析和動(dòng)態(tài)分析方法兩者各有所長,不能互相取代。本文提出了一種基于污點(diǎn)分析[4]的動(dòng)態(tài)分析方法來檢測(cè)基于網(wǎng)絡(luò)的緩沖區(qū)溢出攻擊,它的基本思想是:首先通過將網(wǎng)絡(luò)數(shù)據(jù)打標(biāo)標(biāo)記為污點(diǎn)數(shù)據(jù),然后利用模擬器如QEMU[5]等跟蹤污點(diǎn)數(shù)據(jù)在系統(tǒng)內(nèi)的傳播過程。一旦污點(diǎn)數(shù)據(jù)被非法使用,則說明可能發(fā)生了緩沖區(qū)溢出攻擊,系統(tǒng)報(bào)警。

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

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

        1)棧溢出

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

        2)堆溢出

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

        顯然,在malloc分配的用戶數(shù)據(jù)后面,緊接著的是本堆的數(shù)據(jù)(4B)和上一堆的字節(jié)數(shù)(4B)。這樣,當(dāng)用戶輸入的數(shù)據(jù)超長,超過了malloc的參數(shù)指定的長度時(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ù)足夠長(>10),例如12個(gè)字節(jié),則會(huì)覆蓋buf2的內(nèi)容。利用這點(diǎn),攻擊者可以通過改寫B(tài)SS中的指針或函數(shù)指針等方式,改變程序原先的執(zhí)行流程,使指針跳轉(zhuǎn)到特定的內(nèi)存地址并執(zhí)行攻擊者指定的操作。

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

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

        對(duì)于基于網(wǎng)絡(luò)攻擊的緩沖區(qū)溢出而言,根據(jù)上面的分析,攻擊者必須通過網(wǎng)絡(luò)從遠(yuǎn)程將(超長)數(shù)據(jù)傳入到應(yīng)用程序的緩沖區(qū)以篡改程序的控制流。換句話說,當(dāng)緩沖區(qū)溢出發(fā)生時(shí),一定是攻擊者通過網(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ù)。這是通過將網(wǎng)絡(luò)數(shù)據(jù)打上污點(diǎn)標(biāo)記完成的。通過在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ù),顯然,這種方式只能說明某個(gè)字節(jié)是否是網(wǎng)絡(luò)數(shù)據(jù)。如果需要記錄更多的信息,可以使用更多的bit來標(biāo)記一個(gè)字節(jié)的網(wǎng)絡(luò)數(shù)據(jù)。

        2)跟蹤污點(diǎn)傳播。QEMU硬件模擬器將采用軟件方式來模擬機(jī)器指令的執(zhí)行。這使得我們可以利用QEMU來跟蹤污點(diǎn)數(shù)據(jù)的傳播。其基本過程是:根據(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ù)指令等來實(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ù),則說明發(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è)方法。它通過監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)的傳入,并通過打標(biāo)跟蹤網(wǎng)絡(luò)數(shù)據(jù)在系統(tǒng)內(nèi)的傳播和使用過程,實(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—),男,吉林長春人,碩士研究生,就職于中國民航信息網(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)分析
        基于微分博弈的追逃問題最優(yōu)策略設(shè)計(jì)
        正面迎接批判
        愛你(2018年16期)2018-06-21 03:28:44
        使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
        有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
        我國“污點(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
        久久精品麻豆日日躁夜夜躁| 精品久久一品二品三品| 日本在线一区二区三区不卡| 中文字幕av免费专区| 激情婷婷六月| 日本一区不卡高清在线观看| 国产性虐视频在线观看| 女人和拘做受全程看视频| 性夜影院爽黄a爽在线看香蕉 | s级爆乳玩具酱国产vip皮裤| 久久综合第一页无码| 成人午夜视频在线观看高清| 一本久道竹内纱里奈中文字幕| 精品国产一二三产品区别在哪 | 亚洲永久精品ww47永久入口| 成年男人午夜视频在线看| 亚洲中文字幕午夜精品| 中文字幕日韩精品无码内射| 不卡国产视频| av在线一区二区三区不卡| 国产精品久久久久9999| 午夜无码片在线观看影院| 国产亚洲无码1024| 国产精品国产自产自拍高清av| 国产色在线 | 亚洲| 一本大道东京热无码中字| 久久久一本精品久久久一本| 精品国产粉嫩内射白浆内射双马尾 | 九一精品少妇一区二区三区| 疯狂做受xxxx高潮视频免费| 精品一区二区三区在线观看视频| 久久高潮少妇视频免费| 国产av精品麻豆网址| 五十路丰满中年熟女中出| 久久婷婷色香五月综合激情| 色婷婷av一区二区三区丝袜美腿| 男女性杂交内射妇女bbwxz| 99久久精品免费看国产情侣 | 亚洲av综合av成人小说| 乱码一二区在线亚洲| 亚洲天堂一区二区精品|