解密DDoS攻擊——“緩存溢出”新變形
更新時(shí)間:2007年01月16日 00:00:00 作者:
在windows系統(tǒng)中,同樣存在著緩存溢出的問(wèn)題。而且,隨著internet的普及,win系列平臺(tái)上的internet服務(wù)程序越來(lái)越多,低水平的win程序就成為你系統(tǒng)上的致命傷,因?yàn)樗鼈兺瑯訒?huì)發(fā)生遠(yuǎn)程堆棧溢出。而且,由于win系統(tǒng)使用者和管理者普遍缺乏安全防范意識(shí),一臺(tái)win系統(tǒng)上的堆棧溢出,如果被惡意利用,將導(dǎo)致整個(gè)機(jī)器被黑客所控制,進(jìn)而可能導(dǎo)致整個(gè)局域網(wǎng)落入黑客之手。在微軟的產(chǎn)品iis server4.0中就被發(fā)現(xiàn)存在一種被稱(chēng)為“非法htr請(qǐng)求”的缺陷。據(jù)微軟稱(chēng),此缺陷在特定情況下會(huì)導(dǎo)致任意代碼都可以在服務(wù)器端運(yùn)行。黑客可以利用這一漏洞對(duì)iis服務(wù)器進(jìn)行完全的控制,而實(shí)際上許多電子商務(wù)站點(diǎn)恰恰是基于這套系統(tǒng)的。
■ 黑客如何攪亂緩存
下面讓我們了解一下緩存溢出的原理。眾說(shuō)周知,c語(yǔ)言不進(jìn)行數(shù)組的邊界檢查,在許多運(yùn)用c語(yǔ)言實(shí)現(xiàn)的應(yīng)用程序中,都假定緩沖區(qū)的大小是足夠的,其容量肯定大于要拷貝的字符串的長(zhǎng)度。然而事實(shí)并不總是這樣,當(dāng)程序出錯(cuò)或者惡意的用戶(hù)故意送入一過(guò)長(zhǎng)的字符串時(shí),便有許多意想不到的事情發(fā)生,超過(guò)的那部分字符將會(huì)覆蓋與數(shù)組相鄰的其他變量的空間,使變量出現(xiàn)不可預(yù)料的值。如果碰巧,數(shù)組與子程序的返回地址鄰近時(shí),便有可能由于超出的一部分字符串覆蓋了子程序的返回地址,而使得子程序執(zhí)行完畢返回時(shí)轉(zhuǎn)向了另一個(gè)無(wú)法預(yù)料的地址,使程序的執(zhí)行流程發(fā)生了錯(cuò)誤。甚至,由于應(yīng)用程序訪問(wèn)了不在進(jìn)程地址空間范圍的地址,而使進(jìn)程發(fā)生違例的故障。這種錯(cuò)誤其實(shí)是編程中常犯的。
一個(gè)利用緩沖區(qū)溢出而企圖破壞或非法進(jìn)入系統(tǒng)的程序通常由如下幾個(gè)部分組成:
1.準(zhǔn)備一段可以調(diào)出一個(gè)shell的機(jī)器碼形成的字符串,在下面我們將它稱(chēng)為shellcode。
2.申請(qǐng)一個(gè)緩沖區(qū),并將機(jī)器碼填入緩沖區(qū)的低端。
3.估算機(jī)器碼在堆棧中可能的起始位置,并將這個(gè)位置寫(xiě)入緩沖區(qū)的高端。這個(gè)起始的位置也是我們執(zhí)行這一程序時(shí)需要反復(fù)調(diào)用的一個(gè)參數(shù)。
4.將這個(gè)緩沖區(qū)作為系統(tǒng)一個(gè)有緩沖區(qū)溢出錯(cuò)誤程序的入口參數(shù),并執(zhí)行這個(gè)有錯(cuò)誤的程序。
通過(guò)以上的分析和實(shí)例,我們可以看到緩存溢出對(duì)系統(tǒng)的安全帶來(lái)的巨大威脅。在unix系統(tǒng)中,使用一類(lèi)精心編寫(xiě)的程序,利用suid程序中存在的這種錯(cuò)誤可以很輕易地取得系統(tǒng)的超級(jí)用戶(hù)的權(quán)限。當(dāng)服務(wù)程序在端口提供服務(wù)時(shí),緩沖區(qū)溢出程序可以輕易地將這個(gè)服務(wù)關(guān)閉,使得系統(tǒng)的服務(wù)在一定的時(shí)間內(nèi)癱瘓,嚴(yán)重的可能使系統(tǒng)立刻宕機(jī),從而變成一種拒絕服務(wù)的攻擊。這種錯(cuò)誤不僅是程序員的錯(cuò)誤,系統(tǒng)本身在實(shí)現(xiàn)的時(shí)候出現(xiàn)的這種錯(cuò)誤更多。如今,緩沖區(qū)溢出的錯(cuò)誤正源源不斷地從unix、windows、路由器、網(wǎng)關(guān)以及其他的網(wǎng)絡(luò)設(shè)備中被發(fā)現(xiàn),并構(gòu)成了對(duì)系統(tǒng)安全威脅數(shù)量最大、程度較大的一類(lèi)。
最近,一種被稱(chēng)為“緩存溢出(buffer overflow)”的設(shè)計(jì)缺陷,正在嚴(yán)重危害著系統(tǒng)的安全,成為比y2k更為頭痛的問(wèn)題。一旦這個(gè)缺陷被別有用心的人發(fā)現(xiàn),就會(huì)被利用作為非法入侵的一種手段,破壞電腦中的資料。據(jù)統(tǒng)計(jì),通過(guò)緩存溢出進(jìn)行的攻擊占所有系統(tǒng)攻擊總數(shù)的80%以上,最近各大網(wǎng)站所遭受的所謂分布式服務(wù)拒絕(ddos)式的攻擊也是一種利用緩存溢出原理的攻擊方式。
簡(jiǎn)單地說(shuō),緩存溢出是指一種攻擊系統(tǒng)的手段,通過(guò)往程序的緩沖區(qū)中寫(xiě)入超出其長(zhǎng)度的內(nèi)容造成溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,而達(dá)到攻擊的目的。分布式拒絕服務(wù)(ddos)的入侵者采用的是輸入很長(zhǎng)的字串,將通訊欄等區(qū)域填到超過(guò)設(shè)計(jì)的容量,有些多余字串就會(huì)被電腦誤認(rèn)為是執(zhí)行密碼,使入侵者有機(jī)會(huì)進(jìn)入電腦,而同時(shí)系統(tǒng)無(wú)法察覺(jué)。有報(bào)告指出,“緩存溢出”是過(guò)去十年發(fā)生的非常普遍的電腦安全問(wèn)題,入侵者可以利用它完全控制電腦。
■ 緩存溢出黑客們的慣用伎倆
在unix系統(tǒng)中,通過(guò)緩存溢出來(lái)獲得root權(quán)限是目前使用得相當(dāng)普遍的一種黑客技術(shù)。事實(shí)上這是一個(gè)黑客在系統(tǒng)本地已經(jīng)擁有了一個(gè)基本賬號(hào)后的首選攻擊方式。它也被廣泛應(yīng)用于遠(yuǎn)程攻擊,通過(guò)對(duì)daemon進(jìn)程的堆棧溢出來(lái)實(shí)現(xiàn)遠(yuǎn)程獲得rootshell的技術(shù),已經(jīng)有很多實(shí)例。
■ 黑客如何攪亂緩存
下面讓我們了解一下緩存溢出的原理。眾說(shuō)周知,c語(yǔ)言不進(jìn)行數(shù)組的邊界檢查,在許多運(yùn)用c語(yǔ)言實(shí)現(xiàn)的應(yīng)用程序中,都假定緩沖區(qū)的大小是足夠的,其容量肯定大于要拷貝的字符串的長(zhǎng)度。然而事實(shí)并不總是這樣,當(dāng)程序出錯(cuò)或者惡意的用戶(hù)故意送入一過(guò)長(zhǎng)的字符串時(shí),便有許多意想不到的事情發(fā)生,超過(guò)的那部分字符將會(huì)覆蓋與數(shù)組相鄰的其他變量的空間,使變量出現(xiàn)不可預(yù)料的值。如果碰巧,數(shù)組與子程序的返回地址鄰近時(shí),便有可能由于超出的一部分字符串覆蓋了子程序的返回地址,而使得子程序執(zhí)行完畢返回時(shí)轉(zhuǎn)向了另一個(gè)無(wú)法預(yù)料的地址,使程序的執(zhí)行流程發(fā)生了錯(cuò)誤。甚至,由于應(yīng)用程序訪問(wèn)了不在進(jìn)程地址空間范圍的地址,而使進(jìn)程發(fā)生違例的故障。這種錯(cuò)誤其實(shí)是編程中常犯的。
一個(gè)利用緩沖區(qū)溢出而企圖破壞或非法進(jìn)入系統(tǒng)的程序通常由如下幾個(gè)部分組成:
1.準(zhǔn)備一段可以調(diào)出一個(gè)shell的機(jī)器碼形成的字符串,在下面我們將它稱(chēng)為shellcode。
2.申請(qǐng)一個(gè)緩沖區(qū),并將機(jī)器碼填入緩沖區(qū)的低端。
3.估算機(jī)器碼在堆棧中可能的起始位置,并將這個(gè)位置寫(xiě)入緩沖區(qū)的高端。這個(gè)起始的位置也是我們執(zhí)行這一程序時(shí)需要反復(fù)調(diào)用的一個(gè)參數(shù)。
4.將這個(gè)緩沖區(qū)作為系統(tǒng)一個(gè)有緩沖區(qū)溢出錯(cuò)誤程序的入口參數(shù),并執(zhí)行這個(gè)有錯(cuò)誤的程序。
通過(guò)以上的分析和實(shí)例,我們可以看到緩存溢出對(duì)系統(tǒng)的安全帶來(lái)的巨大威脅。在unix系統(tǒng)中,使用一類(lèi)精心編寫(xiě)的程序,利用suid程序中存在的這種錯(cuò)誤可以很輕易地取得系統(tǒng)的超級(jí)用戶(hù)的權(quán)限。當(dāng)服務(wù)程序在端口提供服務(wù)時(shí),緩沖區(qū)溢出程序可以輕易地將這個(gè)服務(wù)關(guān)閉,使得系統(tǒng)的服務(wù)在一定的時(shí)間內(nèi)癱瘓,嚴(yán)重的可能使系統(tǒng)立刻宕機(jī),從而變成一種拒絕服務(wù)的攻擊。這種錯(cuò)誤不僅是程序員的錯(cuò)誤,系統(tǒng)本身在實(shí)現(xiàn)的時(shí)候出現(xiàn)的這種錯(cuò)誤更多。如今,緩沖區(qū)溢出的錯(cuò)誤正源源不斷地從unix、windows、路由器、網(wǎng)關(guān)以及其他的網(wǎng)絡(luò)設(shè)備中被發(fā)現(xiàn),并構(gòu)成了對(duì)系統(tǒng)安全威脅數(shù)量最大、程度較大的一類(lèi)。
最近,一種被稱(chēng)為“緩存溢出(buffer overflow)”的設(shè)計(jì)缺陷,正在嚴(yán)重危害著系統(tǒng)的安全,成為比y2k更為頭痛的問(wèn)題。一旦這個(gè)缺陷被別有用心的人發(fā)現(xiàn),就會(huì)被利用作為非法入侵的一種手段,破壞電腦中的資料。據(jù)統(tǒng)計(jì),通過(guò)緩存溢出進(jìn)行的攻擊占所有系統(tǒng)攻擊總數(shù)的80%以上,最近各大網(wǎng)站所遭受的所謂分布式服務(wù)拒絕(ddos)式的攻擊也是一種利用緩存溢出原理的攻擊方式。
簡(jiǎn)單地說(shuō),緩存溢出是指一種攻擊系統(tǒng)的手段,通過(guò)往程序的緩沖區(qū)中寫(xiě)入超出其長(zhǎng)度的內(nèi)容造成溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,而達(dá)到攻擊的目的。分布式拒絕服務(wù)(ddos)的入侵者采用的是輸入很長(zhǎng)的字串,將通訊欄等區(qū)域填到超過(guò)設(shè)計(jì)的容量,有些多余字串就會(huì)被電腦誤認(rèn)為是執(zhí)行密碼,使入侵者有機(jī)會(huì)進(jìn)入電腦,而同時(shí)系統(tǒng)無(wú)法察覺(jué)。有報(bào)告指出,“緩存溢出”是過(guò)去十年發(fā)生的非常普遍的電腦安全問(wèn)題,入侵者可以利用它完全控制電腦。
■ 緩存溢出黑客們的慣用伎倆
在unix系統(tǒng)中,通過(guò)緩存溢出來(lái)獲得root權(quán)限是目前使用得相當(dāng)普遍的一種黑客技術(shù)。事實(shí)上這是一個(gè)黑客在系統(tǒng)本地已經(jīng)擁有了一個(gè)基本賬號(hào)后的首選攻擊方式。它也被廣泛應(yīng)用于遠(yuǎn)程攻擊,通過(guò)對(duì)daemon進(jìn)程的堆棧溢出來(lái)實(shí)現(xiàn)遠(yuǎn)程獲得rootshell的技術(shù),已經(jīng)有很多實(shí)例。
相關(guān)文章
Windows 2003 Enterprise Edition IIS6 .ASP目錄執(zhí)行缺陷
Windows 2003 Enterprise Edition IIS6 .ASP目錄執(zhí)行缺陷...2007-02-02由mysql弱口令取得system權(quán)限的實(shí)戰(zhàn)
由mysql弱口令取得system權(quán)限的實(shí)戰(zhàn)...2007-01-01db_owner權(quán)限得到webshell我的兩點(diǎn)改進(jìn)
db_owner權(quán)限得到webshell我的兩點(diǎn)改進(jìn)...2007-01-01