• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      張華

      摘要:緩沖區(qū)溢出是一種常見的網(wǎng)絡(luò)安全漏洞,可以對(duì)計(jì)算機(jī)操作系統(tǒng),應(yīng)用軟件造成巨大的威脅。通過緩沖區(qū)溢出攻擊,網(wǎng)絡(luò)黑客可以遠(yuǎn)程執(zhí)行惡意代碼,甚至獲得主機(jī)的控制權(quán),從而開始各種非法操作。該文分析了緩沖區(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的編寫。

      2 漏洞原因和原理

      2.1 產(chǎn)生原因

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

      這段程序中buffer數(shù)組只能存放8個(gè)字符,而strcpy()把一個(gè)長(zhǎng)度超過8的字符串復(fù)制到buffer數(shù)組中,就會(huì)造成緩沖區(qū)buffer的溢出。類似這樣的函數(shù)還有strcat(),sprintf(),gets(),scanf(),getchar()等。這些函數(shù)都沒有邊界檢查,因此為緩沖區(qū)溢出攻擊提供了基礎(chǔ)條件。如果開發(fā)人員沒有檢查參數(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)閺牡偷刂废蚋叩刂罚绻址L(zhǎng)度超過8個(gè)字符,超過部分的字符串就會(huì)覆蓋了EBP,RET返回地址,從而造成緩沖區(qū)溢出。通過構(gòu)造特殊的字符串,使其覆蓋RET返回地址,從而讓程序執(zhí)行特定程序(ShellCode),這就是堆棧溢出攻擊。

      3 構(gòu)造ShellCode

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

      本文以打開遠(yuǎn)程主機(jī)DOS窗口為例。在VC++6.0中,通過圖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)存地址問題,我們可以在VC++6.0中按F10進(jìn)入調(diào)試模式,點(diǎn)擊調(diào)試工具欄的“Disassembly”按鈕,在反編譯模式中開啟“Code Bytes”選項(xiàng)。筆者在32位windows7操作系統(tǒng)調(diào)試,得到LoadLibrary(),System()函數(shù)的地址分別為0x7689DE15,0x77B1C976。而函數(shù)參數(shù)問題,我們可以逐個(gè)字符地將參數(shù)字符串入棧,最后再通過匯編指令push esp完成參數(shù)字符串偏移地址入棧操作。調(diào)用System("command.com")函數(shù)的匯編代碼如圖4所示,LoadLibrary("msvCRT.dll")可參考此代碼編寫。

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

      4 結(jié)論

      本文詳細(xì)分析了緩沖區(qū)溢出漏洞的原因及原理,并以遠(yuǎn)程啟動(dòng)主機(jī)的DOS窗口為例,指出ShellCode構(gòu)建方法。由于緩沖區(qū)溢出漏洞與軟件開發(fā)過程中的軟件設(shè)計(jì)、編碼規(guī)范、軟件測(cè)試息息相關(guān),因此這種漏洞難以徹底解決,將一直是計(jì)算機(jī)系統(tǒng)安全的重要威脅。因此該問題的研究工作仍然具有實(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)管漏洞
      永康市| 娱乐| 西城区| 渝北区| 兴山县| 永顺县| 开化县| 岗巴县| 彰化县| 枝江市| 镇坪县| 大名县| 钦州市| 安西县| 廉江市| 苏尼特左旗| 德安县| 石首市| 麻栗坡县| 棋牌| 井研县| 磴口县| 长武县| 南京市| 天镇县| 平舆县| 江都市| 利川市| 确山县| 上蔡县| 漳平市| 商都县| 介休市| 磴口县| 沿河| 漠河县| 德化县| 兴义市| 韶关市| 彭水| 淳化县|