999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種緩沖區溢出攻擊描述語言的研究與設計

2008-12-31 00:00:00鐘達夫唐懿芳
電腦知識與技術 2008年36期

摘要:分析目前緩沖區溢出攻擊的弱點,提出一種新的攻擊方法。通過抽象緩沖區溢出攻擊的規律,分析植入代碼的結構特征,給出緩沖區溢出攻擊描述語言的文法。對于不同的緩沖區溢出漏洞,攻擊描述語言能夠動態地構造植入代碼,實現攻擊的自動化。

關鍵詞:緩沖區溢出;植入代碼;攻擊描述語言

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)36-3052-03

A Study and Design of Buffer Overflow Attack Description Language

ZHONG Da-fu,TANG Yi-fang

(School of Computer Science and Engineering,Guangdong Institute of Science and Technology,Zhuhai 519090,China)

Abstract: Analysis buffer overflow attack vulnerability and present a new attack method. Given buffer overflow attack description language through analysising embedded code's structure and abstracting the rule of buffer overflow attack. For different buffer overflow vulnerability, attack description language can correspondingly construct suitable embedded code and launch attack automatically.

Key words: buffer overflow;embedded code;attack description language

1 引言

緩沖區溢出攻擊是目前最主要最具威脅的網絡攻擊,自“Morris Worm”[1]事件以來,諸如Code Red worm[2]、SQL slammer worm[3]、Blaster worm[4]等都是典型的緩沖區溢出攻擊事件。據CERT統計,利用緩沖區溢出漏洞進行的攻擊已經占到了整個網絡攻擊次數的一半以上。

緩沖區溢出攻擊主要是利用C/C++缺少邊界檢查機制的弱點。由于現實的一些原因,緩沖區溢出漏洞在今后較長的一段時期內,仍然會大量而廣泛地存在。再加上緩沖區溢出攻擊技術比較簡單,并具有一定的規律性,而最重要的是利用緩沖區溢出攻擊能夠輕易地獲得非授權訪問權限,甚至取得目標系統的控制權限。因此,緩沖區溢出攻擊仍然是目前研究的熱點。

但是,目前利用C、C++等編寫的緩沖區溢出攻擊程序存在這樣一個問題:植入代碼的生成效率低和移植性差,而諸如ADELE[5]、NASL[6]等攻擊描述語言又不適合用來進行緩沖區溢出攻擊。針對該問題,本文從攻擊者的角度研究緩沖區溢出利用程序,抽象攻擊過程,提出一種新的解決方法,即設計一種專門的緩沖區溢出攻擊描述語言,對不同的緩沖區溢出漏洞,自動地構造植入代碼,實現攻擊的自動化。

2 緩沖區溢出利用程序分析

這里所謂的利用程序,是指針對有緩沖區溢出漏洞的程序而編寫的攻擊程序。一個完整的緩沖區溢出利用程序,按照功能結構來分,包括兩個部分:植入代碼和控制邏輯。

2.1 植入代碼

俗稱“蛋”。“蛋”是攻擊者精心設計的并要塞到目標機器讓其執行的字符串,其實質是一串機器指令。“蛋”一般由shellcode、返回地址、填充數據三種元素構成。Shellcode是根據某個系統調用匯編而得的機器指令,由于最初的shellcode只是獲取一個簡單的shell權限,其稱呼由此得來。返回地址指shellcode的入口地址,其實質是表示某個內存地址;填充數據實質上是指單字節指令,典型的單字節指令如空操作指令NOP。

如圖1是利用植入代碼進行緩沖區溢出攻擊的示意圖。

圖1中,R代表返回地址,其作用是改寫函數返回地址,并迫使程序執行流程轉向R處執行shellcode。N代表NOP,其作用有兩點:一是數據填充,在溢出緩沖區較大的情況下,通過增加NOP的數量,確保R能夠覆蓋到函數返回地址;二是提高shellcode的命中率。由于shellcode的地址R是猜測的,那么只要R值位于NOP地址之間,就可以確保shellcode能夠順利執行。

“蛋”的構造類型一般有前端同步型(NSR)、中端同步型(RNS)、后端同步型(RSN)和環境變量型(AR)[7]。其中前端同步型適合于較大的緩沖區使用,其余三種比較適合于較小的緩沖區使用。

2.2 控制邏輯

控制邏輯需要完成兩個功能:構造植入代碼和發送植入代碼。

構造植入代碼功能塊首先根據溢出緩沖區的大小選擇“蛋”的構造類型。對于大的溢出緩沖區,選擇NSR構造類型,而較小的溢出緩沖區則可以選擇RNS、RSN、AR之一;其次,根據目標操作系統和CPU類型確定shellcode和填充數據的類型。必須注意的是,對于不同的操作系統和CPU類型,相同功能的shellcode和填充數據其指令碼和所占用的字節數是不一樣的[8]。比如同樣是空操作NOP,對于intel的CPU來說是“\\x90”,而對于SPARC的CPU來說則是“\\xac\\x15\\xa1\\x6e”。同樣是獲取一個sh權限,對于i386/linux的shellcode是:\"\\xeb\\x1f\\x5e\\x89\\x76\\x08\\x31\\xc0\\x88\\x46\\x07\\x89\\x46\\x0c\\xb0\\x0b\\x89\\xf3\\x8d\\x4e\\x08\\x8d\\x56\\x0c\\xcd\\x80\\x31\\xdb\\ x89\\xd8\\x40\\xcd\\x80\\xe8\\xdc\\xff\\xff\\xff/bin/sh\",而對于SPARC/sunOS的shellcode則是:\"\\x2d\\x0b\\xd8\\x9a\\xac\\x15\\xa1\\x6e\\x2f\\x0b\\xdc\\ xda\\x90\\x0b\\x80\\x0e\\x92\\x03\\xa0\\x08\\x94\\x1a\\x80\\x0a\\x9c\\x03\\xa0\\x10\\xec\\x3b\\xbf\\xf0\\xdc\\x23\\xbf\\xf8\\xc0\\x23\\xbf\\xfc\\x82\\x10\\x20\\x3b\\xaa\\x10\\x3f\\xff\\x91\\xd5\\x60\\x01\\x90\\x1b\\xc0\\x0f\\x82\\x10\\x20\\x01\\x91\\xd5\\x60\\x01\";

最后確定返回地址的值、返回地址數量以及填充數據的數量。返回地址是shellcode的入口地址,其實質上是由八位十六進制數組成的內存地址。合適的返回地址數量可以有效地提高返回地址的覆蓋成功率。對于填充數據的數量,從理論角度來說,填充數據的數量越多,則shellcode的命中率越高,但在實際中,必須根據具體情況來確定填充數據的數量。

發送植入代碼功能塊是指根據目標系統的IP地址、端口號等信息,與目標建立一個遠程連接,并將“蛋”發送出去的過程。

3 攻擊描述語言設計

緩沖區溢出攻擊,最關鍵的在于“蛋”的構造,因此,緩沖區溢出攻擊描述語言的設計目標就是如何動態地構造出一個合適的“蛋”。

3.1 設計思路

圖2是利用攻擊描述語言進行攻擊的示意圖。“蛋”元素庫里存放著不同類型的填充數據和shellcode,漏洞特征庫里則存放著不同服務類型的漏洞特征。在攻擊時,攻擊描述語言首先通過掃描工具得到攻擊目標的OS/CPU類型等信息;然后根據獲取的目標信息,從“蛋”元素庫和漏洞特征庫里提取構造“蛋”的基本素材,如“蛋”的組成元素、構造類型等;再由攻擊描述語言根據提取的“蛋”的基本素材進行描述;最后由攻擊描述語言解釋器解釋執行,生成相應的“蛋”進行攻擊。

3.2 攻擊所需信息

對一個遠程目標發起緩沖區溢出攻擊,必須具備如下幾個信息:

1) 目標的IP地址和端口號。

2) 目標操作系統和目標CPU類型。

3) 目標的服務類型。

確定目標IP地址和端口號是為了與目標建立一個遠程連接,將“蛋”發送過去;確定目標操作系統和目標CPU類型,是為了確定相對應的“蛋”元素——shellcode和填充數據的類型;確定目標的服務類型,用于反映目標的漏洞特征,確定選用何種“蛋”類型、返回地址、返回地址數量、填充數據數量等。

3.3 “蛋”的形式化分析

“蛋”的四種構造類型NSR、RNS、RSN和AR里, AR是環境變量型,要求事先將shellcode植入環境變量里,這種構造類型只能本地溢出攻擊,無法實現遠程緩沖區溢出攻擊。而RSN型等同于RS型,命中率低,在實際中幾乎不使用。攻擊描述語言最終采用NSR和RNS兩種結構類型。

在“蛋”的組成元素里,shellcode不管是在i386/linux還是其他體系結構下的,也不管是實現何種高級功能 [9],其實質是一串機器碼;填充數據由單字節指令組成,單字節指令也是機器碼,因此, shellcode和填充數據可以按照如下的格式進行形式描述:

shellcode—><機器碼串>

機器碼串—>{<機器碼>}+

填充數據—><單字節指令串>

單字節指令串—〉{<機器碼>}+

機器碼—〉(\\x[0-9a-fA-F]{2})

而對于返回地址,由于其實質上是某個內存地址,因此可以按照如下格式進行形式描述:

返回地址—〉<內存地址>

內存地址—〉([0-9a-fA-F]{8})

3.4 攻擊描述語言的文法

綜上分析,可以給出攻擊描述語言的文法,文法的中文描述如下:

攻擊描述—〉{<“蛋”的構造語句>;<“蛋”的發送語句>}

“蛋”的構造語句—〉構造“蛋”(<“蛋”的構造類型>;<“蛋”的構成元素>;<返回地址數量>;<同步字符數量>)

“蛋”的構造類型—〉“蛋”的類型(<類型標識符>)

類型標識符—〉<前端同步型>|<中端同步型>

前端同步型—〉NSR

中端同步型—〉RNS

“蛋”的構成元素—〉“蛋”的成分(<N>;<S>;<R>)

N—〉<機器代碼串>

S—〉<機器代碼串>

機器代碼串—〉{<機器碼>}+

機器碼—〉(\\x[0-9a-f]{2})

R—〉<內存地址>

內存地址—〉([0-9a-fA-F]{8})

返回地址數量—〉<整數>

同步字符數量—〉<整數>

“蛋”的發送語句—〉發送“蛋”(<目標地址>;<端口號>)

目標地址—〉IPv4地址

IPv4地址—〉IP點分十進制數. IP點分十進制數. IP點分十進制數. IP點分十進制數

IP點分十進制數—〉([0-9]

|[1-9][0-9]

|1[0-9][0-9]

|2[0-4][0-9]|25[0-5])

端口號—〉<整數>

整數—〉{<數字>}+

數字—〉[0-9]

4 思路驗證及應用

根據攻擊描述語言給出的解釋器,應該能夠根據漏洞的相關特征動態地構造出相應的“蛋”。為了驗證思路的正確性,本研究建立了一個x86/Solaris8實驗平臺,然后根據目前的緩沖區溢出攻擊方式,如攻擊函數返回地址、函數指針等,構造攻擊想定,給出有漏洞程序。之后在“蛋”元素庫里填入設計好的“蛋”的各種元素,在漏洞特征庫里根據攻擊想定填入相應的漏洞特征,最后用給出的解釋器,根據攻擊想定對漏洞程序進行攻擊。實驗結果表明,攻擊描述語言針對不同的緩沖區溢出漏洞所描述的“蛋”,通過攻擊描述語言解釋器解釋,能夠完成對目標的攻擊任務,達到預定目的。如圖3是根據攻擊描述語言描述的“蛋”的攻擊測試截圖(該“蛋”只是獲取一個基本的sh權限)。

利用緩沖區溢出攻擊描述語言,可以對設計的緩沖區溢出防御系統進行模擬攻擊,以測試、評估該系統的防御性能。如本研究項目組研究設計了一種新的緩沖區溢出防御技術——緩沖區溢出防御虛擬機——以抵抗緩沖區溢出攻擊,為了檢測該系統的防御性能,本研究將該虛擬機安裝于相應平臺上,然后根據攻擊想定在該虛擬機上運行有漏洞程序,再利用攻擊描述語言對其進行攻擊,以此可以檢測出緩沖區溢出防御虛擬機能否保護運行其上的程序。也可以利用該描述語言,對一些檢測到的惡意目標進行有效的溢出攻擊,從被動防御變為主動地反擊。

4 結論

緩沖區溢出漏洞是目前最主要的安全漏洞之一,并且在相當長的一段時間里,這種漏洞將會大量而廣泛地存在。利用該漏洞對網絡和系統進行攻擊,也必然成為一種非常重要的攻擊手段。本文通過對緩沖區溢出攻擊及其植入代碼的深入分析和抽象,設計出一種專門的緩沖區溢出攻擊描述語言,該攻擊描述語言能夠針對不同的緩沖區溢出漏洞,動態地構造出相應的“蛋”,實現攻擊的自動化。實驗表明,用攻擊描述語言生成的“蛋”完全可以完成攻擊任務,達到預定目的。

參考文獻:

[1] Spafford E H. The Internet Worm rogram: An Analysis. Purdue Technical Report[R]. CSD-TR-823.

[2] CERT.CERT?誖 Advisory CA-2001-19 \"Code Red\" Worm Exploiting Buffer Overflow In IIS Indexing Service DLL[EB/OL]. http://www.cert.org/advisories/CA-2001-19.html.

[3] CERT.CERT?誖 Advisory CA-2003-04 MS-SQL Server Worm[EB/OL]. http://www.cert.org/advisories/CA-2003-04.html.

[4] CERT.CERT?誖 Advisory CA-2003-20 W32/Blaster worm[EB/OL]. http://www.cert.org/advisories/CA-2003-20.html.

[5] Michel C, Me Adele L: An Attack Description Language for Knowledge-based Intrusion Detection[EB/OL]. http://www.rennes. supelec.fr/ren/perso/cmichel/MM01.

[6] Deraison R. The Nessus Attack Scripting Language Reference Guide[EB/OL]. http://www.nessus.org/doc/nasl.html.

[7] aXis. http://www.ph4nt0m.net[EB/OL].

[8] Alpha One.Smashing the Stack for Fun and Profit.Phrack[EB/OL].

[9] Taeho Oh. Advanced buffer overflow exploit[EB/OL]. (2000-04-08)http://postech.edu/group/poslug.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 99在线观看免费视频| 欧美日韩一区二区在线免费观看 | 欧美无专区| 欧美 国产 人人视频| 久久精品女人天堂aaa| 黄色三级网站免费| 国产成人久久综合一区| 日本人妻一区二区三区不卡影院| 久久精品人妻中文视频| 狂欢视频在线观看不卡| 青青青视频91在线 | 国产青青草视频| 亚洲美女一区二区三区| 成人福利在线视频| 97精品国产高清久久久久蜜芽| 久久婷婷人人澡人人爱91| 国产精品白浆在线播放| 精品超清无码视频在线观看| 国产一二视频| 精品91自产拍在线| 色悠久久久久久久综合网伊人| 国产精品久久久久鬼色| 一本无码在线观看| 国产欧美日韩在线一区| AV网站中文| 中文纯内无码H| 久久精品亚洲中文字幕乱码| 九色在线视频导航91| 免费毛片视频| 中国一级特黄视频| 久久精品亚洲热综合一区二区| 青青国产视频| 97视频免费在线观看| 午夜精品福利影院| 国产一级特黄aa级特黄裸毛片| 色屁屁一区二区三区视频国产| 亚洲不卡av中文在线| www亚洲天堂| 小说区 亚洲 自拍 另类| 亚洲小视频网站| 92精品国产自产在线观看| 91啪在线| 国产一级妓女av网站| 久久网欧美| 欧美综合在线观看| 国产午夜精品一区二区三| 国产午夜不卡| 婷婷开心中文字幕| 中字无码精油按摩中出视频| 国产精品2| 亚洲—日韩aV在线| 欧美啪啪一区| 久久96热在精品国产高清 | 成人蜜桃网| 久久一级电影| 99视频在线观看免费| 午夜爽爽视频| 国产福利一区在线| 欧美性色综合网| 99热这里只有精品2| 国产欧美日韩视频怡春院| 91无码人妻精品一区| 国产簧片免费在线播放| 极品国产在线| 99re视频在线| 日韩欧美中文字幕在线精品| 欧美在线伊人| 婷婷亚洲最大| 国产精品妖精视频| 欧美.成人.综合在线 | 久久婷婷色综合老司机| 国产精品极品美女自在线网站| 成人午夜福利视频| 91麻豆精品国产91久久久久| 欧美激情视频一区二区三区免费| 国产免费观看av大片的网站| 性视频久久| 国产成人精品无码一区二| 日本成人在线不卡视频| 欧美日韩精品一区二区视频| 久久综合丝袜日本网| 欧美中出一区二区|