国产午夜视频在线观看,国产国拍精品av在线观看,国产国产人免费人成免费视频,国产福利视频一区二区在线,国产av免费一区二区三区

廈門服務(wù)器租用>業(yè)界新聞> 防黑反制緩沖區(qū)溢出攻擊的介紹

防黑反制緩沖區(qū)溢出攻擊的介紹

發(fā)布時間:2013/1/31 15:03:20    來源: 縱橫數(shù)據(jù)


  文章主要介紹的是黑客中級技術(shù),緩沖區(qū)溢出攻擊,大家都知道緩沖區(qū)溢出是一種普遍、而且危險性極強(qiáng)的漏洞,在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在。利用緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運(yùn)行失敗、系統(tǒng)當(dāng)機(jī)、重新啟動等后果。

  更為嚴(yán)重的是,可以利用它執(zhí)行非授權(quán)指令,甚至可以取得系統(tǒng)特權(quán),進(jìn)而進(jìn)行各種非法操作。


  緩沖區(qū)溢出是一種非常普遍、非常危險的漏洞,在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在。利用緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運(yùn)行失敗、系統(tǒng)當(dāng)機(jī)、重新啟動等后果。更為嚴(yán)重的是,可以利用它執(zhí)行非授權(quán)指令,甚至可以取得系統(tǒng)特權(quán),進(jìn)而進(jìn)行各種非法操作。緩沖區(qū)溢出攻擊有多種英文名稱:buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack, mangle the stack, memory leak,overrun screw;它們指的都是同一種攻擊手段。第一個緩沖區(qū)溢出攻擊--Morris蠕蟲,發(fā)生在十年前,它曾造成了全世界6000多臺網(wǎng)絡(luò)服務(wù)器癱瘓。

  本文將分析緩沖區(qū)溢出的原理;研究各種類型的緩沖區(qū)溢出漏洞和攻擊手段;最后,還將著重研究各種防御手段,用來消除這些漏洞所造成的影響。

  一、 緩沖區(qū)溢出的原理

  通過往程序的緩沖區(qū)寫超出其長度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達(dá)到攻擊的目的。造成緩沖區(qū)溢出的原因是程序中沒有仔細(xì)檢查用戶輸入的參數(shù)。例如下面程序:

  void function(char *str) {

  char buffer[16];

  strcpy(buffer,str);

  }

  上面的strcpy()將直接吧str中的內(nèi)容copy到buffer中。這樣只要str的長度大于16,就會造成buffer的溢出,使程序運(yùn)行出錯。存在象strcpy這樣的問題的標(biāo)準(zhǔn)函數(shù)還有strcat(),sprintf(),vsprintf(),gets(),scanf()等。

  當(dāng)然,隨便往緩沖區(qū)中填東西造成它溢出一般只會出現(xiàn)“分段錯誤”(Segmentation fault),而不能達(dá)到攻擊的目的。最常見的手段是通過制造緩沖區(qū)溢出使程序運(yùn)行一個用戶shell,再通過shell執(zhí)行其它命令。如果該程序?qū)儆趓oot且有suid權(quán)限的話,攻擊者就獲得了一個有root權(quán)限的shell,可以對系統(tǒng)進(jìn)行任意操作了。

  緩沖區(qū)溢出攻擊之所以成為一種常見安全攻擊手段其原因在于緩沖區(qū)溢出漏洞太普遍了,并且易于實現(xiàn)。而且,緩沖區(qū)溢出成為遠(yuǎn)程攻擊的主要手段其原因在于緩沖區(qū)溢出漏洞給予了攻擊者他所想要的一切:植入并且執(zhí)行攻擊代碼。被植入的攻擊代碼以一定的權(quán)限運(yùn)行有緩沖區(qū)溢出漏洞的程序,從而得到被攻擊主機(jī)的控制權(quán)。

  在1998年Lincoln實驗室用來評估入侵檢測的的5種遠(yuǎn)程攻擊中,有2種是緩沖區(qū)溢出。而在1998年CERT的13份建議中,有9份是是與緩沖區(qū)溢出有關(guān)的,在1999年,至少有半數(shù)的建議是和緩沖區(qū)溢出有關(guān)的。在Bugtraq的調(diào)查中,有2/3的被調(diào)查者認(rèn)為緩沖區(qū)溢出漏洞是一個很嚴(yán)重的安全問題。

  緩沖區(qū)溢出漏洞和攻擊有很多種形式,會在第二節(jié)對他們進(jìn)行描述和分類。相應(yīng)地防衛(wèi)手段也隨者攻擊方法的不同而不同,將在第四節(jié)描述,它的內(nèi)容包括針對每種攻擊類型的有效的防衛(wèi)手段。

  二、緩沖區(qū)溢出的漏洞和攻擊

  緩沖區(qū)溢出攻擊的目的在于擾亂具有某些特權(quán)運(yùn)行的程序的功能,這樣可以使得攻擊者取得程序的控制權(quán),如果該程序具有足夠的權(quán)限,那么整個主機(jī)就被控制了。一般而言,攻擊者攻擊root程序,然后執(zhí)行類似“exec(sh)”的執(zhí)行代碼來獲得root權(quán)限的shell。為了達(dá)到這個目的,攻擊者必須達(dá)到如下的兩個目標(biāo):

  1. 在程序的地址空間里安排適當(dāng)?shù)拇a。

  2. 通過適當(dāng)?shù)某跏蓟拇嫫骱蛢?nèi)存,讓程序跳轉(zhuǎn)到入侵者安排的地址空間執(zhí)行。

  根據(jù)這兩個目標(biāo)來對緩沖區(qū)溢出攻擊進(jìn)行分類。在二.1節(jié),將描述攻擊代碼是如何放入被攻擊程序的地址空間的。在二.2節(jié),將介紹攻擊者如何使一個程序的緩沖區(qū)溢出,并且執(zhí)行轉(zhuǎn)移到攻擊代碼(這個就是“溢出”的由來)。在二.3節(jié),將綜合前兩節(jié)所討論的代碼安排和控制程序執(zhí)行流程的技術(shù)。

  二.1 在程序的地址空間里安排適當(dāng)?shù)拇a的方法

  有兩種在被攻擊程序地址空間里安排攻擊代碼的方法:

  1、植入法:

  攻擊者向被攻擊的程序輸入一個字符串,程序會把這個字符串放到緩沖區(qū)里。這個字符串包含的資料是可以在這個被攻擊的硬件平臺上運(yùn)行的指令序列。在這里,攻擊者用被攻擊程序的緩沖區(qū)來存放攻擊代碼。緩沖區(qū)可以設(shè)在任何地方:堆棧(stack,自動變量)、堆(heap,動態(tài)分配的內(nèi)存區(qū))和靜態(tài)資料區(qū)。

  2、利用已經(jīng)存在的代碼:

  有時,攻擊者想要的代碼已經(jīng)在被攻擊的程序中了,攻擊者所要做的只是對代碼傳遞一些參數(shù)。比如,攻擊代碼要求執(zhí)行“exec (“/bin/sh”)”,而在libc庫中的代碼執(zhí)行“exec (arg)”,其中arg使一個指向一個字符串的指針參數(shù),那么攻擊者只要把傳入的參數(shù)指針改向指向”/bin/sh”。

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

  所有的這些方法都是在尋求改變程序的執(zhí)行流程,使之跳轉(zhuǎn)到攻擊代碼。最基本的就是溢出一個沒有邊界檢查或者其它弱點(diǎn)的緩沖區(qū),這樣就擾亂了程序的正常的執(zhí)行順序。通過溢出一個緩沖區(qū),攻擊者可以用暴力的方法改寫相鄰的程序空間而直接跳過了系統(tǒng)的檢查。

  分類的基準(zhǔn)是攻擊者所尋求的緩沖區(qū)溢出的程序空間類型。原則上是可以任意的空間。實際上,許多的緩沖區(qū)溢出是用暴力的方法來尋求改變程序指針的。這類程序的不同之處就是程序空間的突破和內(nèi)存空間的定位不同。主要有以下三種: 1、活動紀(jì)錄(Activation Records):

  每當(dāng)一個函數(shù)調(diào)用發(fā)生時,調(diào)用者會在堆棧中留下一個活動紀(jì)錄,它包含了函數(shù)結(jié)束時返回的地址。攻擊者通過溢出堆棧中的自動變量,使返回地址指向攻擊代碼。通過改變程序的返回地址,當(dāng)函數(shù)調(diào)用結(jié)束時,程序就跳轉(zhuǎn)到攻擊者設(shè)定的地址,而不是原先的地址。這類的緩沖區(qū)溢出被稱為堆棧溢出攻擊(Stack Smashing Attack),是目前最常用的緩沖區(qū)溢出攻擊方式。

  2、函數(shù)指針(Function Pointers):

  函數(shù)指針可以用來定位任何地址空間。例如:“void (* foo)()”聲明了一個返回值為void的函數(shù)指針變量foo。所以攻擊者只需在任何空間內(nèi)的函數(shù)指針附近找到一個能夠溢出的緩沖區(qū),然后溢出這個緩沖區(qū)來改變函數(shù)指針。在某一時刻,當(dāng)程序通過函數(shù)指針調(diào)用函數(shù)時,程序的流程就按攻擊者的意圖實現(xiàn)了。它的一個攻擊范例就是在Linux系統(tǒng)下的superprobe程序。

  3、長跳轉(zhuǎn)緩沖區(qū)(Longjmp buffers):

  在C語言中包含了一個簡單的檢驗/恢復(fù)系統(tǒng),稱為setjmp/longjmp。意思是在檢驗點(diǎn)設(shè)定“setjmp(buffer)”,用“l(fā)ongjmp(buffer)”來恢復(fù)檢驗點(diǎn)。然而,如果攻擊者能夠進(jìn)入緩沖區(qū)的空間,那么“l(fā)ongjmp(buffer)”實際上是跳轉(zhuǎn)到攻擊者的代碼。象函數(shù)指針一樣,longjmp緩沖區(qū)能夠指向任何地方,所以攻擊者所要做的就是找到一個可供溢出的緩沖區(qū)。一個典型的例子就是Perl 5.003的緩沖區(qū)溢出漏洞;攻擊者首先進(jìn)入用來恢復(fù)緩沖區(qū)溢出的的longjmp緩沖區(qū),然后誘導(dǎo)進(jìn)入恢復(fù)模式,這樣就使Perl的解釋器跳轉(zhuǎn)到攻擊代碼上了。

  二.3代碼植入和流程控制技術(shù)的綜合分析

  最簡單和常見的緩沖區(qū)溢出攻擊類型就是在一個字符串里綜合了代碼植入和活動紀(jì)錄技術(shù)。攻擊者定位一個可供溢出的自動變量,然后向程序傳遞一個很大的字符串,在引發(fā)緩沖區(qū)溢出,改變活動紀(jì)錄的同時植入了代碼。這個是由Levy指出的攻擊的模板。因為C在習(xí)慣上只為用戶和參數(shù)開辟很小的緩沖區(qū),因此這種漏洞攻擊的實例十分常見。

  代碼植入和緩沖區(qū)溢出不一定要在在一次動作內(nèi)完成。攻擊者可以在一個緩沖區(qū)內(nèi)放置代碼,這是不能溢出的緩沖區(qū)。然后,攻擊者通過溢出另外一個緩沖區(qū)來轉(zhuǎn)移程序的指針。這種方法一般用來解決可供溢出的緩沖區(qū)不夠大(不能放下全部的代碼)的情況。

  如果攻擊者試圖使用已經(jīng)常駐的代碼而不是從外部植入代碼,他們通常必須把代碼作為參數(shù)調(diào)用。舉例來說,在libc(幾乎所有的C程序都要它來連接)中的部分代碼段會執(zhí)行“exec(something)”,其中somthing就是參數(shù)。攻擊者然后使用緩沖區(qū)溢出改變程序的參數(shù),然后利用另一個緩沖區(qū)溢出使程序指針指向libc中的特定的代碼段。

  三、 緩沖區(qū)溢出攻擊的實驗分析

  2000年1月,Cerberus 安全小組發(fā)布了微軟的IIS 4/5存在的一個緩沖區(qū)溢出漏洞。攻擊該漏洞,可以使Web服務(wù)器崩潰,甚至獲取超級權(quán)限執(zhí)行任意的代碼。目前,微軟的IIS 4/5 是一種主流的Web服務(wù)器程序;因而,該緩沖區(qū)溢出漏洞對于網(wǎng)站的安全構(gòu)成了極大的威脅;它的描述如下:

  瀏覽器向IIS提出一個HTTP請求,在域名(或IP地址)后,加上一個文件名,該文件名以“.htr”做后綴。于是IIS認(rèn)為客戶端正在請求一個“.htr”文件,“.htr”擴(kuò)展文件被映像成ISAPI(Internet Service API)應(yīng)用程序,IIS會復(fù)位向所有針對“.htr”資源的請求到 ISM.DLL程序 ,ISM.DLL 打開這個文件并執(zhí)行之。

  瀏覽器提交的請求中包含的文件名存儲在局部變量緩沖區(qū)中,若它很長,超過600個字符時,會導(dǎo)致局部變量緩沖區(qū)溢出,覆蓋返回地址空間,使IIS崩潰。更進(jìn)一步,在如圖1所示的2K緩沖區(qū)中植入一段精心設(shè)計的代碼,可以使之以系統(tǒng)超級權(quán)限運(yùn)行。

  四、緩沖區(qū)溢出攻擊的防范方法

  緩沖區(qū)溢出攻擊占了遠(yuǎn)程網(wǎng)絡(luò)攻擊的絕大多數(shù),這種攻擊可以使得一個匿名的Internet用戶有機(jī)會獲得一臺主機(jī)的部分或全部的控制權(quán)。如果能有效地消除緩沖區(qū)溢出的漏洞,則很大一部分的安全威脅可以得到緩解。

  目前有四種基本的方法保護(hù)緩沖區(qū)免受緩沖區(qū)溢出的攻擊和影響。在四.1中介紹了通過操作系統(tǒng)使得緩沖區(qū)不可執(zhí)行,從而阻止攻擊者植入攻擊代碼。在四.2中介紹了強(qiáng)制寫正確的代碼的方法。在四.3中介紹了利用編譯器的邊界檢查來實現(xiàn)緩沖區(qū)的保護(hù)。這個方法使得緩沖區(qū)溢出不可能出現(xiàn),從而完全消除了緩沖區(qū)溢出的威脅,但是相對而言。


※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

縱橫數(shù)據(jù)迎中秋國慶佳節(jié),雙節(jié)大禮包回饋客戶活動

>>>>>>>>>>點(diǎn)我免費(fèi)在線咨詢<<<<<<<<<<

業(yè)務(wù)咨詢O、O、:289715452 / 756673127 / 519082853

服熱線電話:0592-5580195 / 189165134113

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

縱橫數(shù)據(jù)提供特價的香港服務(wù)器,美國服務(wù)器,每款限量100臺.

1.香港服務(wù)器感恩優(yōu)惠中

CPU:酷睿雙核E5200/G620T

內(nèi)存:2G 內(nèi)存

硬盤:80G/160G/250G硬盤

帶寬:3M獨(dú)享國際帶寬

默認(rèn)IP:5IP 

費(fèi)用: 750元/月

操作系統(tǒng):任選,無限制.

2.香港至強(qiáng)服務(wù)器特賣中

CPU:四核至強(qiáng) E3-1220L V2

內(nèi)存:4G 內(nèi)存

硬盤:500G硬盤

帶寬:3M獨(dú)享國際帶寬

默認(rèn)IP:5IP 

費(fèi)用:

四核志強(qiáng)  1200月  4G內(nèi)存

四核志強(qiáng)  1300月  8G內(nèi)存

操作系統(tǒng):任選,無限制.

3.美國高端配置企業(yè)級服務(wù)器專用

CPU:E3-1230 V2 四核八線程志強(qiáng)

內(nèi)存:8G DDR2 

硬盤:1x1TB HDD

帶寬:100M 

超大流量,月流量:10*1000GB

默認(rèn)IP:5IP

費(fèi)用:1399元/月

免費(fèi)支持linux/centos/ubuntu/redhat

免費(fèi)支持中文win2003(英文win2003/win2008系統(tǒng),價格另加!)

  縱橫數(shù)據(jù)是頂級的海外服務(wù)器,海外主機(jī),海外域名提供商;專業(yè)提供國外服務(wù)器,海外空間,海外云主機(jī)及香港服務(wù)器租用,美國服務(wù)器租用,臺灣服務(wù)器租用,馬來西亞服務(wù)器租用,韓國服務(wù)器租用,德國服務(wù)器,英國服務(wù)器,法國服務(wù)器等海外服務(wù)器租用托管,是海外互聯(lián)網(wǎng)業(yè)務(wù)和海外營銷解決方案領(lǐng)導(dǎo)者。



在線客服
微信公眾號
免費(fèi)撥打400-1886560
免費(fèi)撥打0592-5580190 免費(fèi)撥打 400-1886560 或 0592-5580190
返回頂部
返回頭部 返回頂部