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

        ?

        緩沖區(qū)溢出攻擊原理及ShellCode的構(gòu)造

        2017-04-26 23:59:11張華
        電腦知識(shí)與技術(shù) 2017年6期
        關(guān)鍵詞:漏洞網(wǎng)絡(luò)安全

        張華

        摘要:緩沖區(qū)溢出是一種常見(jiàn)的網(wǎng)絡(luò)安全漏洞,可以對(duì)計(jì)算機(jī)操作系統(tǒng),應(yīng)用軟件造成巨大的威脅。通過(guò)緩沖區(qū)溢出攻擊,網(wǎng)絡(luò)黑客可以遠(yuǎn)程執(zhí)行惡意代碼,甚至獲得主機(jī)的控制權(quán),從而開(kāi)始各種非法操作。該文分析了緩沖區(qū)溢出漏洞的產(chǎn)生原因及其原理,結(jié)合具體代碼介紹了ShellCode的構(gòu)造方法。

        關(guān)鍵詞:緩沖區(qū)溢出;網(wǎng)絡(luò)安全;漏洞;ShellCode

        中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)06-0085-02

        Abstract: Buffer overflow is a common network security vulnerability, which can pose a great threat to computer operating system and application software. Through buffer overflow attacks, network hackers can execute malicious code remotely , or even get the control of the host to carry out a variety of illegal operations. This paper analyzes the causes and principles of buffer overflow vulnerability, introduces the construction method of ShellCode with the specific code.

        Key words: buffer overflow; network security; vulnerability; ShellCode

        1 概述

        緩沖區(qū)溢出攻擊并非一種新的攻擊手段。早在1989年,Spafford就做了一個(gè)關(guān)于緩沖區(qū)溢出程序的分析報(bào)告。2003年的“沖擊波”病毒,2004年的“震蕩波”病毒就是利用了緩沖區(qū)溢出的漏洞。然而時(shí)至今日,我們?nèi)匀粫r(shí)時(shí)刻刻感受著來(lái)自緩沖區(qū)溢出漏洞的威脅。圖1所示的是中國(guó)國(guó)家信息安全漏洞庫(kù)在2017年2月份下旬收錄的緩沖區(qū)溢出漏洞。不到十天時(shí)間,現(xiàn)有的計(jì)算機(jī)系統(tǒng)就出現(xiàn)如此多的緩沖區(qū)溢出漏洞。依據(jù)CNVD(中國(guó)信息安全漏洞共享平臺(tái))的統(tǒng)計(jì)數(shù)據(jù),緩沖區(qū)溢出類型的漏洞在各種類型的漏洞比例中,仍然名列前茅。因此深入學(xué)習(xí)探討緩沖區(qū)溢出漏洞是很有必要的。

        緩沖區(qū)溢出漏洞原因可以分為棧溢出、堆溢出、文件流溢出、格式化字符串溢出。本文主要介紹棧溢出漏洞的原因、原理,實(shí)施該攻擊手段的一個(gè)核心步驟-ShellCode的編寫(xiě)。

        2 漏洞原因和原理

        2.1 產(chǎn)生原因

        堆棧溢出漏洞是通過(guò)在程序的堆棧里寫(xiě)入超過(guò)其長(zhǎng)度的內(nèi)容,造成堆棧溢出,從而使得程序的堆棧遭到破壞。例如下列程序:

        這段程序中buffer數(shù)組只能存放8個(gè)字符,而strcpy()把一個(gè)長(zhǎng)度超過(guò)8的字符串復(fù)制到buffer數(shù)組中,就會(huì)造成緩沖區(qū)buffer的溢出。類似這樣的函數(shù)還有strcat(),sprintf(),gets(),scanf(),getchar()等。這些函數(shù)都沒(méi)有邊界檢查,因此為緩沖區(qū)溢出攻擊提供了基礎(chǔ)條件。如果開(kāi)發(fā)人員沒(méi)有檢查參數(shù)的長(zhǎng)度就直接復(fù)制到緩沖區(qū)中去,這個(gè)軟件產(chǎn)品就存在著緩沖區(qū)溢出的漏洞,為別有用心的攻擊者創(chuàng)造了有利的條件。

        2.2 原理

        要深入理解緩沖區(qū)溢出的原理,我們得先從Windows函數(shù)執(zhí)行原理說(shuō)起。調(diào)用一個(gè)函數(shù)時(shí),計(jì)算機(jī)需要執(zhí)行如下步驟:

        1)函數(shù)的各個(gè)參數(shù)(假設(shè)有3個(gè)參數(shù),分別是param1,param2,param3)從右到左依次入棧;

        2)指令寄存器(EIP)的內(nèi)容作為返回地址入棧;

        3)基址寄存器(EBP)的內(nèi)容入棧;

        4)把當(dāng)前的ESP的內(nèi)容賦值給EBP,作為新的基地址;

        5)為函數(shù)的局部變量分配空間,假設(shè)先后有兩個(gè)int類型的變量var1,var2,則var1,var2變量的地址分別為[EBP-4],[EBP-8];

        函數(shù)執(zhí)行完畢時(shí),根據(jù)堆棧原理,出棧順序?yàn)椋壕植孔兞縱ar2,var1,基址寄存器(EBP)的內(nèi)容,指令寄存器(EIP)的內(nèi)容,param1,param2,param3。

        根據(jù)本文2.1的程序,局部變量buffer數(shù)組8個(gè)元素的從低到高地址分別為[EBP-32],[EBP-28],…,[EBP-4]。函數(shù)strcpy()把字符串復(fù)制到buffer數(shù)組時(shí),數(shù)組元素操作順序?yàn)閺牡偷刂废蚋叩刂?,如果字符串長(zhǎng)度超過(guò)8個(gè)字符,超過(guò)部分的字符串就會(huì)覆蓋了EBP,RET返回地址,從而造成緩沖區(qū)溢出。通過(guò)構(gòu)造特殊的字符串,使其覆蓋RET返回地址,從而讓程序執(zhí)行特定程序(ShellCode),這就是堆棧溢出攻擊。

        3 構(gòu)造ShellCode

        ShellCode實(shí)際上是用機(jī)器語(yǔ)言編寫(xiě)的一段程序,當(dāng)計(jì)算機(jī)出現(xiàn)緩沖區(qū)溢出時(shí)轉(zhuǎn)而去執(zhí)行的代碼。攻擊者可以通過(guò)ShellCode獲得主機(jī)的系統(tǒng)特權(quán),從而進(jìn)行非法操作。ShellCode的編寫(xiě)是緩沖區(qū)溢出攻擊最關(guān)鍵的步驟。

        本文以打開(kāi)遠(yuǎn)程主機(jī)DOS窗口為例。在VC++6.0中,通過(guò)圖3所示這段程序就可以完成此功能。

        從匯編(機(jī)器)語(yǔ)言的角度來(lái)說(shuō),上述代碼最關(guān)鍵的是LoadLibrary("msvCRT.dll"),以及System("command.com")這兩個(gè)函數(shù)調(diào)用。要調(diào)用一個(gè)函數(shù),需要知道這個(gè)函數(shù)的內(nèi)存地址,并獲得函數(shù)參數(shù)。對(duì)于函數(shù)內(nèi)存地址問(wèn)題,我們可以在VC++6.0中按F10進(jìn)入調(diào)試模式,點(diǎn)擊調(diào)試工具欄的“Disassembly”按鈕,在反編譯模式中開(kāi)啟“Code Bytes”選項(xiàng)。筆者在32位windows7操作系統(tǒng)調(diào)試,得到LoadLibrary(),System()函數(shù)的地址分別為0x7689DE15,0x77B1C976。而函數(shù)參數(shù)問(wèn)題,我們可以逐個(gè)字符地將參數(shù)字符串入棧,最后再通過(guò)匯編指令push esp完成參數(shù)字符串偏移地址入棧操作。調(diào)用System("command.com")函數(shù)的匯編代碼如圖4所示,LoadLibrary("msvCRT.dll")可參考此代碼編寫(xiě)。

        將上述匯編語(yǔ)言程序在VC++6.0中轉(zhuǎn)成機(jī)器語(yǔ)言形式,即為通過(guò)緩沖區(qū)溢出漏洞遠(yuǎn)程啟動(dòng)主機(jī)DOS窗口的ShellCode,如圖5所示。

        4 結(jié)論

        本文詳細(xì)分析了緩沖區(qū)溢出漏洞的原因及原理,并以遠(yuǎn)程啟動(dòng)主機(jī)的DOS窗口為例,指出ShellCode構(gòu)建方法。由于緩沖區(qū)溢出漏洞與軟件開(kāi)發(fā)過(guò)程中的軟件設(shè)計(jì)、編碼規(guī)范、軟件測(cè)試息息相關(guān),因此這種漏洞難以徹底解決,將一直是計(jì)算機(jī)系統(tǒng)安全的重要威脅。因此該問(wèn)題的研究工作仍然具有實(shí)際意義。

        參考文獻(xiàn):

        [1] 中國(guó)信息安全漏洞共享平臺(tái).漏洞信息月度通報(bào)2016(12)[EB/OL].http://www.cnvd.org.cn/webinfo/show/4026.

        [2] 劉紹翰,許建真,張福炎.基于緩沖溢出漏洞的攻擊及其預(yù)防研究綜述[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(1):83-86.

        [3] 閎劉鑫,張永濤,李鷗.Windows系統(tǒng)下緩存區(qū)溢出攻擊實(shí)現(xiàn)與防范[J].微計(jì)算機(jī)信息,2005(26): 3-12.

        [4] 石志國(guó),薛為民,江俐.計(jì)算機(jī)網(wǎng)絡(luò)安全教程[M].北京:清華大學(xué)出版社,北京交通大學(xué)出版社,2004.

        [5] 沈美明,溫冬嬋.IBM—PC匯編語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1998.

        [6] 魯珂,趙繼東.計(jì)算機(jī)信息系統(tǒng)安全實(shí)驗(yàn)教程[M].成都:電子科技大學(xué)出版社,2007

        猜你喜歡
        漏洞網(wǎng)絡(luò)安全
        網(wǎng)絡(luò)安全知多少?
        漏洞
        網(wǎng)絡(luò)安全
        網(wǎng)絡(luò)安全人才培養(yǎng)應(yīng)“實(shí)戰(zhàn)化”
        上網(wǎng)時(shí)如何注意網(wǎng)絡(luò)安全?
        偵探推理游戲(二)
        三明:“兩票制”堵住加價(jià)漏洞
        漏洞在哪兒
        高鐵急救應(yīng)補(bǔ)齊三漏洞
        細(xì)數(shù)監(jiān)管漏洞
        91日本在线精品高清观看| 亚洲中文字幕一区精品自拍| 中文字幕人妻被公上司喝醉| 久久99国产亚洲高清观看韩国| 亚洲国产精品综合福利专区| 91乱码亚洲精品中文字幕| 午夜精品久久久久久久| 青青草原精品99久久精品66| 乱中年女人伦av三区| 玩弄少妇高潮ⅹxxxyw| 国产精品爆乳在线播放 | 国产日韩一区二区精品| 久久亚洲中文字幕伊人久久大| 女人色熟女乱| 欧美黑人又粗又大久久久| 日本精品一区二区在线看| 国产tv不卡免费在线观看| 亚洲av永久无码精品网站在线观看 | av免费在线播放观看| 少妇裸体性生交| 97久久超碰国产精品2021| av在线免费观看你懂的| 精品人妻久久一日二个| 香港三级日本三级a视频| 青草福利在线| 亚洲一区二区三区在线| 精品亚洲国产成人av色哟哟| 国产亚洲精品久久777777| 亚洲精品成AV无在线观看| 亚洲综合新区一区二区| 射精区-区区三区| 无码人妻精品一区二区三区免费| 亚洲人成网站www| 日本一区二区三区视频免费在线 | 国产成人喷潮在线观看| 欧美色精品91av| 日本道免费精品一区二区| 一区二区三区中文字幕在线观看| 中文字幕人妻熟女人妻| 无限看片在线版免费视频大全| 少妇爽到爆视频网站免费|