国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

什么是緩沖區(qū)溢出攻擊?這種攻擊有哪些類型?
2007-09-29   網(wǎng)絡(luò)

在黑客的攻擊活動中,利用緩沖區(qū)溢出安全漏洞發(fā)起的攻擊占了遠程網(wǎng)絡(luò)攻擊的絕大多數(shù)。這種漏洞的嚴重性,在于可以使得一個匿名的Internet用戶有機會獲得一臺主機的部分或全部的控制權(quán)。緩沖區(qū)溢出攻擊之所以成為一種常見的攻擊手段,原因在于緩沖區(qū)溢出漏洞太普遍,對它的利用易于實現(xiàn)。緩沖區(qū)溢出漏洞給予了攻擊者所希望的一切:植入攻擊代碼并且執(zhí)行代碼。被植入的攻擊代碼以一定的權(quán)限運行有緩沖區(qū)溢出漏洞的程序,進而取得被攻擊系統(tǒng)的控制權(quán)。

緩沖區(qū)溢出攻擊有多種形式,相應(yīng)的防衛(wèi)手段也隨攻擊方法的不同而不同。緩沖區(qū)溢出攻擊的目的,在于擾亂具有某些特權(quán)運行的程序的功能,使得攻擊者取得程序的控制權(quán)。如果該程序具有足夠的特權(quán),整個主機就能夠被控制。例如對于UNIX系統(tǒng),攻擊者可以通過攻擊root程序,然后執(zhí)行類似“exec(sh)”的執(zhí)行代碼來獲得root的shell。為了達到利用緩沖區(qū)溢出漏洞進行攻擊的目的,攻擊者必須實現(xiàn)這樣兩個目標:在程序的地址空間里安排適當(dāng)?shù)拇a;通過適當(dāng)?shù)爻跏蓟拇嫫骱痛鎯ζ鳎尦绦蛱D(zhuǎn)到精心安排的地址空間執(zhí)行。根據(jù)這兩個目標,可以對緩沖區(qū)溢出攻擊進行分類。

1.在程序的地址空間里安排適當(dāng)代碼的攻擊方法

存在兩種在被攻擊程序地址空間里安排攻擊代碼的方法,植入法和利用已經(jīng)存在代碼的方法。植入法是攻擊者向被攻擊的程序輸入一個字符串,程序會把這個字符串放到緩沖區(qū)里。這個字符串包含的數(shù)據(jù)是可以在這個被攻擊的硬件平臺上運行的指令序列。在這里攻擊者用被攻擊程序的緩沖區(qū)來存放攻擊代碼。為了實現(xiàn)這個目標,攻擊者可能在不必溢出任何緩沖區(qū)的情況下,就找到足夠的空間來放置攻擊代碼,也可能存放在緩沖區(qū)可以設(shè)置的任何地方,如堆棧、動態(tài)分配的堆和靜態(tài)數(shù)據(jù)區(qū)等。利用已經(jīng)存在代碼的方法,是指攻擊者希望使用的代碼已經(jīng)存在于被攻擊的程序中,攻擊者所要做的只是對代碼傳遞一些參數(shù),然后使程序跳轉(zhuǎn)到指定的目標。例如對于UNIX系統(tǒng),攻擊代碼要求執(zhí)行“exec("/bin/sh")”,而在libc庫中的代碼執(zhí)行“exec(arg)”,其中arg是一個指向一個字符串的指針參數(shù),攻擊者只要把傳入的參數(shù)指針改向指向"/bin/sh",然后就可以轉(zhuǎn)到libc庫中的相應(yīng)指令序列。

2.控制程序轉(zhuǎn)移到攻擊代碼的方法

控制程序轉(zhuǎn)移到攻擊代碼的思路是尋求改變程序的執(zhí)行流程,使之跳轉(zhuǎn)到攻擊代碼。采用的基本手段是溢出一個沒有邊界檢查或者其他弱點的緩沖區(qū),從而擾亂程序的正常執(zhí)行順序。通過溢出一個緩沖區(qū),攻擊者可以用近乎暴力的方法改寫相鄰的程序空間,直接跳過系統(tǒng)的檢查。按照攻擊者所尋求的緩沖區(qū)溢出程序的空間類型,可以對這類攻擊進行分類。許多的緩沖區(qū)溢出是用暴力的方法來尋求改變程序指針的。這類程序的區(qū)別在于程序空間的突破和內(nèi)存空間的定位不同。例如,當(dāng)一個函數(shù)調(diào)用發(fā)生時,調(diào)用者會在堆棧中留下一個激活紀錄(Activation Records),它包含了函數(shù)結(jié)束時返回的地址。攻擊者可以通過溢出這些自動變量,使這個返回地址指向攻擊代碼。通過改變程序的返回地址,當(dāng)函數(shù)調(diào)用結(jié)束時,程序就跳轉(zhuǎn)到攻擊者設(shè)定的地址,而不是原先的地址。這類的緩沖區(qū)溢出被稱為“stack smashing attack”,是目前常用的緩沖區(qū)溢出攻擊方式。利用函數(shù)指針(Function Pointers)是另一種方法,函數(shù)指針可以用來定位任何地址空間。攻擊者只需在任何空間內(nèi)的函數(shù)指針附近找到一個能夠溢出的緩沖區(qū),然后溢出這個緩沖區(qū)來改變函數(shù)指針。當(dāng)程序通過函數(shù)指針調(diào)用函數(shù)時,程序的流程就能夠按照攻擊者意圖改變。攻擊者還可以利用長跳轉(zhuǎn)緩沖區(qū)(Longjmp buffers)。在C語言中包含了一個簡單的檢驗/恢復(fù)系統(tǒng),稱為 setjmp/longjmp,是在檢驗點設(shè)定“setjmp(buffer)”,用“l(fā)ongjmp(buffer)”來恢復(fù)檢驗點。如果攻擊者能夠進入緩沖區(qū)的空間,那么“l(fā)ongimp(buffer)”就可以作為跳轉(zhuǎn)到攻擊者的代碼。攻擊者就是要找到一個可供溢出的緩沖區(qū)。


熱詞搜索:

上一篇:什么是局域網(wǎng)監(jiān)聽?如何防范?
下一篇:如何防范緩沖區(qū)溢出攻擊?

分享到: 收藏
主站蜘蛛池模板: 鄂托克前旗| 盐边县| 永靖县| 城口县| 东城区| 绥棱县| 沁水县| 临漳县| 林州市| 八宿县| 新巴尔虎右旗| 富民县| 昆山市| 鄢陵县| 富宁县| 望都县| 万安县| 二手房| 轮台县| 甘谷县| 临沧市| 莒南县| 柘荣县| 广西| 张掖市| 鄂尔多斯市| 岳池县| 金平| 内丘县| 旺苍县| 同德县| 罗城| 晋城| 昆明市| 金湖县| 沙雅县| 手游| 马鞍山市| 七台河市| 宣汉县| 融水|