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

基于shellcode分析緩沖區(qū)溢出攻擊

2020-04-05 18:51:36劉佳琳譚振江朱冰
計(jì)算機(jī)時(shí)代 2020年2期

劉佳琳 譚振江 朱冰

摘? 要: 緩沖區(qū)的本質(zhì)是內(nèi)存中的一個(gè)片段,它用于暫時(shí)存放輸入與輸出的數(shù)據(jù)或者代碼。緩沖區(qū)溢出是一種非常危險(xiǎn)的漏洞,在各種應(yīng)用軟件及操作系統(tǒng)中廣泛存在。如果攻擊者發(fā)現(xiàn)目標(biāo)主機(jī)存在緩沖區(qū)溢出漏洞,攻擊者會(huì)利用該漏洞,執(zhí)行惡意代碼,最終獲取被攻擊主機(jī)的控制權(quán),竊取有價(jià)值的信息。文章利用實(shí)際案例講解shellcode的形成過(guò)程,分析緩沖區(qū)溢出攻擊發(fā)生的危害及原因。

關(guān)鍵詞: shellcode; 緩沖區(qū)溢出; 緩沖區(qū)溢出攻擊; 控制權(quán)

中圖分類號(hào):TP309.2? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? 文章編號(hào):1006-8228(2020)02-43-04

Analyzing the buffer overflow attack by shellcode

Liu Jialin, Tan Zhenjiang, Zhu Bing

(College of Computer Science, Jilin Normal University, Siping, Jilin 136000, China)

Abstract: The essence of a buffer is a fragment in memory that is used to temporarily store input or output data or code. Buffer overflow is a very dangerous vulnerability that is widespread in a variety of applications and operating systems. If an attacker finds a buffer overflow vulnerability on the target host, the attacker exploits the vulnerability, executes malicious code, and finally gains control of the attacked host and steals valuable information. This paper uses the actual case to explain the formation process of shellcode, analyze the hazards and causes of buffer overflow attacks.

Key words: shellcode; buffer overflow; buffer overflow attack; control

0 引言

伴隨著信息科學(xué)技術(shù)的快速發(fā)展,計(jì)算機(jī)應(yīng)用在各行各業(yè),計(jì)算機(jī)軟件的開發(fā)與計(jì)算機(jī)技術(shù)的應(yīng)用是信息時(shí)代的產(chǎn)物,有越來(lái)越多的計(jì)算機(jī)軟件應(yīng)用于人們的工作和生活中。與此同時(shí),軟件的安全漏洞也越來(lái)越多[1]。緩沖區(qū)溢出是一種非常普遍的安全漏洞。在2018年10月、12月以及2019年1月的十大重要安全漏洞分析中都出現(xiàn)了緩沖區(qū)溢出漏洞,其中就存在由應(yīng)用軟件帶來(lái)的緩沖區(qū)溢出漏洞[2-4]。SLMail軟件是基于Windows環(huán)境的Internet郵件服務(wù)器系列產(chǎn)品,它的PASS命令存在緩沖區(qū)溢出漏洞,無(wú)需身份驗(yàn)證就可以實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行[5]。緩沖區(qū)溢出漏洞雖然只是非常普遍的安全漏洞,但卻是一種具有嚴(yán)重破壞作用的漏洞,攻擊者會(huì)利用該漏洞,對(duì)計(jì)算機(jī)軟件造成破壞,進(jìn)而破壞應(yīng)用系統(tǒng),獲取有價(jià)值的數(shù)據(jù)信息,影響正常的學(xué)習(xí)、工作和生活。

本文以Kali Linux 2.0作為攻擊機(jī),虛擬Windows XP作為目標(biāo)主機(jī),在目標(biāo)主機(jī)中以SLMail 5.5.0 Mail Server作為目標(biāo)程序,結(jié)合動(dòng)態(tài)調(diào)試工具與用于定位進(jìn)程模塊的腳本,實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行,達(dá)到控制目標(biāo)主機(jī)的效果。在此過(guò)程中講解shellcode的形成過(guò)程,分析緩沖區(qū)溢出攻擊的危害及原因。

1 理論分析

SLMail具有緩沖區(qū)溢出漏洞,通過(guò)PASS命令就可以實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行,因此,需要掌握緩沖區(qū)、緩沖區(qū)溢出、緩沖區(qū)溢出攻擊以及程序執(zhí)行的異常情況等理論知識(shí)。

1.1 緩沖區(qū)

緩沖區(qū)是內(nèi)存中的一個(gè)片段。現(xiàn)在的計(jì)算機(jī)在運(yùn)行程序時(shí),采用的是馮·諾依曼的存儲(chǔ)程序計(jì)算機(jī)思想。即程序運(yùn)行需要的指令和數(shù)據(jù)先保存在存儲(chǔ)器中,計(jì)算機(jī)根據(jù)地址讀出指令與數(shù)據(jù),實(shí)現(xiàn)連續(xù)自動(dòng)地執(zhí)行[6],執(zhí)行的結(jié)果可能會(huì)寫入到計(jì)算機(jī)的硬盤或者文件中保存,也可能會(huì)返回給用戶。緩沖區(qū)就是可以用于臨時(shí)存放這些數(shù)據(jù)的內(nèi)存區(qū)域。

1.2 緩沖區(qū)溢出

緩沖區(qū)溢出是指有大量的數(shù)據(jù)寫入緩沖區(qū),超過(guò)了緩沖區(qū)所能容納的最大范圍,超過(guò)了最初定義的內(nèi)存邊界,從而覆蓋了相鄰內(nèi)存區(qū)域的數(shù)據(jù),這種現(xiàn)象大多發(fā)生在固定分配存儲(chǔ)空間的情況下[7]。在理想狀態(tài)下,程序會(huì)檢查數(shù)據(jù)的長(zhǎng)度,并且不允許輸入的字符長(zhǎng)度超過(guò)緩沖區(qū)的大小。而且,系統(tǒng)軟件也會(huì)使用特殊的指令為每個(gè)程序劃定存儲(chǔ)區(qū)域,禁止越界訪問(wèn)[8]。實(shí)際上,并不是所有的程序都會(huì)具有上述功能,而是假設(shè)輸入的數(shù)據(jù)長(zhǎng)度不會(huì)超過(guò)緩沖區(qū)的邊界,這就為緩沖區(qū)溢出留下隱患。

1.3 緩沖區(qū)溢出攻擊

緩沖區(qū)溢出攻擊是利用緩沖區(qū)溢出漏洞進(jìn)行的攻擊行為,這種攻擊行為會(huì)出現(xiàn)內(nèi)存數(shù)據(jù)被修改、程序執(zhí)行失敗、系統(tǒng)重啟等現(xiàn)象,也可以在遠(yuǎn)程執(zhí)行惡意代碼,導(dǎo)致目標(biāo)主機(jī)被控制[9]。這是一種具有破壞性的攻擊行為。

1.4 程序執(zhí)行的異常情況

在正常情況下,在向計(jì)算機(jī)傳輸信息時(shí),計(jì)算機(jī)會(huì)默認(rèn)提交的信息全部為數(shù)據(jù)。如果程序的設(shè)計(jì)規(guī)則不嚴(yán)格,在提交的信息加入代碼時(shí),計(jì)算機(jī)并不會(huì)識(shí)別出信息中包含的代碼,仍會(huì)把這些內(nèi)容當(dāng)作數(shù)據(jù)在計(jì)算機(jī)里運(yùn)行。該現(xiàn)象可以通過(guò)一個(gè)能夠顯示輸入內(nèi)容的腳本(a.sh)進(jìn)行解釋。如圖1所示。

圖1顯示了該腳本的四次執(zhí)行結(jié)果,可以發(fā)現(xiàn)前兩次執(zhí)行的輸出結(jié)果與輸入結(jié)果一致,后面兩次執(zhí)行的輸出是把參數(shù)內(nèi)容作為命令來(lái)執(zhí)行。因?yàn)槌绦蚓帉懻邲](méi)有對(duì)該腳本內(nèi)容的書寫規(guī)則做出嚴(yán)格的規(guī)定,導(dǎo)致在執(zhí)行腳本時(shí)沒(méi)有對(duì)輸入的參數(shù)嚴(yán)格檢查,沒(méi)對(duì)普通字符和命令做嚴(yán)格地區(qū)分,輸出許多其他信息,這是一種異常情況。

2 實(shí)際案例

攻擊者會(huì)利用程序執(zhí)行的異常情況,編寫惡意程序,針對(duì)具有緩沖區(qū)溢出漏洞的目標(biāo)主機(jī)發(fā)起攻擊,使服務(wù)進(jìn)程遭到破壞。下面將在引言中提到的實(shí)驗(yàn)環(huán)境,不斷進(jìn)行模糊測(cè)試,講解shellcode的形成過(guò)程。

2.1 確定溢出的范圍

編寫可以向110端口(POP3協(xié)議默認(rèn)的端口號(hào))發(fā)送數(shù)據(jù)的腳本。腳本中包含大量的溢出字符,均為字母A(十六進(jìn)制為41),如果不斷修改字母A的發(fā)送量,當(dāng)發(fā)送2700個(gè)字母A時(shí),腳本就不再繼續(xù)執(zhí)行,此時(shí),EIP寄存器的內(nèi)容已被修改為“41414141”。當(dāng)發(fā)送2600個(gè)字母A時(shí),腳本也不再繼續(xù)執(zhí)行,但是EIP寄存器的內(nèi)容并非是“41414141”,說(shuō)明溢出字符還沒(méi)覆蓋到EIP寄存器上。因此,能夠覆蓋EIP寄存器的字符數(shù)目在2600到2700之間。

2.2 確定溢出的精確位置并驗(yàn)證

在本案例中選擇使用唯一字符串法找出精確位置。將以三個(gè)為一組不重復(fù)的2700個(gè)字符替換溢出字符中的字母A,重新發(fā)送溢出字符,根據(jù)EIP寄存器的內(nèi)容計(jì)算偏移量,確定溢出的精確位置。

利用該偏移量,將精確位置后的內(nèi)容修改為由4個(gè)字母B(十六進(jìn)制為42)和20個(gè)字母C,其余的內(nèi)容修改為字母A,重新發(fā)送溢出字符,結(jié)果如圖2所示。其中,EIP寄存器的內(nèi)容為“42424242”,證明之前測(cè)試得到的溢出位置是準(zhǔn)確的。而且,圖2中ESP寄存器的內(nèi)容恰好為溢出字符中的20個(gè)字母C,這個(gè)現(xiàn)象將為在溢出字符中添加具有特定功能的十六進(jìn)制操作碼提供了可能性。

2.3 生成shellcode的準(zhǔn)備工作

Aleph One在1996年的論文中把嵌入進(jìn)程的代碼稱為“shellcode”,后來(lái),將緩沖區(qū)溢出攻擊過(guò)程植入的代碼叫做“shellcode”。隨著計(jì)算機(jī)語(yǔ)言的不斷發(fā)展,現(xiàn)在使用的shellcode大多是由C語(yǔ)言和匯編語(yǔ)言編寫,然后再對(duì)其匯編、反匯編得到十六進(jìn)制的操作碼[10]。為了操作簡(jiǎn)便,本實(shí)例中的溢出字符直接使用十六進(jìn)制操作碼。

當(dāng)溢出字符數(shù)量為2700時(shí),溢出字符可以覆蓋ESP寄存器的內(nèi)容,這表明該內(nèi)存區(qū)域可以被用于存放shellcode。一般小型shellcode的大小為300bytes左右,因此,還需要通過(guò)增大溢出字符中字母C的數(shù)量,重新發(fā)送溢出字符,判斷ESP寄存器的存儲(chǔ)量是否可以存放小型的shellcode。

2.4 生成shellcode并執(zhí)行

前面的所有準(zhǔn)備工作是為了證明ESP寄存器能夠存放shellcode,接下來(lái)需要解決的問(wèn)題是編寫出具有實(shí)際功能的shellcode并執(zhí)行。

為了達(dá)到控制目標(biāo)主機(jī)的目的,shellcode應(yīng)該具有使目標(biāo)主機(jī)反彈回連到攻擊機(jī)指定端口的功能。EIP寄存器能夠存放下一條指令的地址,如果想要執(zhí)行ESP寄存器內(nèi)存放的shellcode,可以把EIP的內(nèi)容修改為ESP的地址。然而,SLMail是基于線程的應(yīng)用程序,操作系統(tǒng)為每個(gè)線程分配一個(gè)地址范圍,但每個(gè)線程地址范圍也不確定,因此,ESP寄存器的地址是變化的,不能直接使用。但是,可以利用內(nèi)存中地址固定的系統(tǒng)模塊,在這些模塊中尋找跳轉(zhuǎn)ESP寄存器的指令,將該指令的地址存放在EIP寄存器內(nèi),再由該指令間接跳轉(zhuǎn)到ESP,執(zhí)行ESP寄存器中的內(nèi)容。

2.5 控制目標(biāo)主機(jī)

在實(shí)施緩沖區(qū)溢出攻擊之前,先偵聽攻擊機(jī)的指定端口。再將溢出字符中字母B修改為跳轉(zhuǎn)ESP寄存器的指令地址,字母C修改為具有反彈回連到攻擊機(jī)功能的shellcode,其他的溢出字符保持不變,重新發(fā)送溢出字符。如果攻擊機(jī)的命令窗口呈現(xiàn)出圖3所示的效果,說(shuō)明已經(jīng)成功執(zhí)行ESP寄存器的內(nèi)容,目標(biāo)主機(jī)已經(jīng)反彈回連到攻擊機(jī)的指定端口,攻擊機(jī)取得目標(biāo)主機(jī)控制權(quán)。

在拿到控制權(quán)后,攻擊者還可以修改目標(biāo)主機(jī)的注冊(cè)表的相關(guān)內(nèi)容,并在攻擊機(jī)里安裝遠(yuǎn)程桌面工具,實(shí)現(xiàn)對(duì)目標(biāo)主機(jī)圖形界面的控制。

2.6 案例總結(jié)

經(jīng)過(guò)不斷的模糊測(cè)試,獲得目標(biāo)主機(jī)的控制權(quán)。在這個(gè)過(guò)程中,每一次修改的內(nèi)容都是溢出字符,并且這些溢出字符都可以在目標(biāo)主機(jī)上執(zhí)行,說(shuō)明計(jì)算機(jī)本身并不識(shí)別程序中的數(shù)據(jù)和代碼,也不會(huì)檢查數(shù)據(jù)的長(zhǎng)度。

3 緩沖區(qū)溢出攻擊的原因與危害

如果把測(cè)試中的腳本看作是發(fā)送給計(jì)算機(jī)的惡意程序,這些程序在被執(zhí)行時(shí),計(jì)算機(jī)沒(méi)有任何特定的機(jī)制去檢查程序的數(shù)據(jù)中是否存在代碼,也不會(huì)檢查數(shù)據(jù)的長(zhǎng)度是否已經(jīng)超過(guò)緩沖區(qū)的大小。這些原因使得攻擊者有機(jī)會(huì)執(zhí)行惡意程序,導(dǎo)致緩沖區(qū)溢出攻擊的發(fā)生。

后門程序是指通過(guò)某種方式安裝在目標(biāo)主機(jī)上,實(shí)現(xiàn)獲取對(duì)程序或者系統(tǒng)訪問(wèn)權(quán)的一種方法[11]。獲得目標(biāo)主機(jī)的控制權(quán)后,攻擊者如果想要再一次獲取控制權(quán),不會(huì)因管理員修補(bǔ)該漏洞而無(wú)法實(shí)現(xiàn)對(duì)目標(biāo)主機(jī)的控制,因?yàn)楣粽哂锌赡軙?huì)在第一次取得控制權(quán)后,就立即在目標(biāo)主機(jī)上安裝后門程序,為再一次控制主機(jī)做準(zhǔn)備。通過(guò)后門,攻擊者不需要通過(guò)實(shí)施攻擊控制目標(biāo)系統(tǒng),因此,緩沖區(qū)溢出對(duì)系統(tǒng)的威脅是潛在的、不確定的,會(huì)出現(xiàn)方便攻擊者再次入侵、隱藏操作痕跡、避過(guò)監(jiān)控系統(tǒng)、提供惡意代碼植入手段等嚴(yán)重后果[12]。

4 結(jié)束語(yǔ)

本文是通過(guò)講解shellcode的形成過(guò)程分析緩沖區(qū)溢出攻擊的原因與危害。在這個(gè)過(guò)程中,數(shù)據(jù)和代碼都是放在一起保存的,攻擊者之所以能實(shí)施緩沖區(qū)溢出攻擊,是因?yàn)橛?jì)算機(jī)中數(shù)據(jù)和代碼的邊界不清晰。但是,伴隨著操作系統(tǒng)的更新,不斷有新的安全防護(hù)機(jī)制添加到操作系統(tǒng)中,DEP(數(shù)據(jù)執(zhí)行保護(hù))就是一種新的安全防護(hù)機(jī)制,它可以阻止代碼從數(shù)據(jù)頁(yè)里被執(zhí)行,彌補(bǔ)了計(jì)算機(jī)中數(shù)據(jù)和代碼混淆這一缺陷[13]。此外,SafeSEH(安全結(jié)構(gòu)化的異常處理)、SEHOP(SEH覆蓋保護(hù))、堆保護(hù)以及ASLR(地址空間隨機(jī)分布)等安全防護(hù)機(jī)制,都可以對(duì)Windows下的緩沖區(qū)溢出漏洞進(jìn)行防范[14]。

因此,不僅需要管理員經(jīng)常維護(hù)操作系統(tǒng)的安全防護(hù)機(jī)制,經(jīng)常進(jìn)行安全檢查,在發(fā)現(xiàn)問(wèn)題時(shí)能夠盡早解決。而且,用戶也應(yīng)使用安全的應(yīng)用軟件,及時(shí)更新操作系統(tǒng),避免信息泄露的現(xiàn)象發(fā)生。

參考文獻(xiàn)(References):

[1] 桑洋.淺談軟件設(shè)計(jì)中的安全漏洞動(dòng)態(tài)檢測(cè)技術(shù)[J].信息化建設(shè),2016.19(5):86.

[2] 2018年10月十大重要安全漏洞分析[J].信息網(wǎng)絡(luò)安全,2018.18(12):95-96

[3] 2018年12月十大重要安全漏洞分析[J].信息網(wǎng)絡(luò)安全,2019.19(2):87-88

[4] 2019年1月十大重要安全漏洞分析[J].信息網(wǎng)絡(luò)安全,2019.19(3):89-90

[5] 馬潮.基于Windows的Intranet&Internet郵件服務(wù)器[J].微型機(jī)與應(yīng)用,1998.17(4):26-27

[6] 邵博文.馮·諾依曼的邏輯和計(jì)算機(jī)思想[J].數(shù)字通信世界,2017.13(10):249.

[7] 袁連海,李湘文,徐晶.緩沖區(qū)溢出攻擊研究[J].艦船電子工程,2019.39(4):88-93

[8] 檀磊.計(jì)算機(jī)程序運(yùn)行過(guò)程的探討[J].軟件導(dǎo)刊,2010.9(12):7-9

[9] 高珊,李愛(ài)華,趙曉雯.基于緩沖區(qū)溢出攻擊的Shellcode編碼技術(shù)研究[J].電子世界,2018.40(16):166,168.

[10] 黃惠烽.圖書館局域網(wǎng)緩沖區(qū)溢出之shellcode原理分析[J].湖北成人教育學(xué)院學(xué)報(bào),2013.19(1):107-108

[11] 安志遠(yuǎn),劉海燕.防范利用遠(yuǎn)程溢出植入后門的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2012.39(S2):208-211

[12] 孫淑華,馬恒太,張楠,卿斯?jié)h,王曉翠.后門植入、隱藏與檢測(cè)技術(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2004.21(7):78-81

[13] 郭建偉.淺析DEP安全保護(hù)技術(shù)[J].網(wǎng)絡(luò)安全和信息化, 2018.3(8):122-126

[14] 羅斌.緩沖區(qū)溢出漏洞分析及防范[J].電腦知識(shí)與技術(shù),2018.14(33):44-45

主站蜘蛛池模板: 欧美日韩国产高清一区二区三区| 国产成人AV综合久久| 久久香蕉国产线看观看亚洲片| 亚洲综合第一区| 国产亚洲欧美在线人成aaaa| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲国产欧美国产综合久久| 91人妻日韩人妻无码专区精品| 欧美视频二区| 亚洲国产精品美女| 97成人在线观看| 伊人成人在线| 精品久久777| igao国产精品| 中文字幕啪啪| 久久精品娱乐亚洲领先| 97国产一区二区精品久久呦| 国产原创演绎剧情有字幕的| 久久综合干| 国产福利影院在线观看| av大片在线无码免费| 国产欧美网站| 一级毛片网| 香蕉久人久人青草青草| 国产交换配偶在线视频| 99精品在线看| 一级毛片不卡片免费观看| 精品国产成人国产在线| 亚洲欧美成人在线视频| 国产福利观看| 国产亚洲一区二区三区在线| 欧美激情综合一区二区| 国产伦片中文免费观看| 五月天香蕉视频国产亚| 黄色网址手机国内免费在线观看| 国产精品香蕉| 国产精品美女自慰喷水| jizz在线观看| 国产在线视频二区| 中文字幕在线欧美| 小说区 亚洲 自拍 另类| 免费一级α片在线观看| 夜夜高潮夜夜爽国产伦精品| 国产成人乱无码视频| 精品自拍视频在线观看| 日韩不卡高清视频| 高潮毛片无遮挡高清视频播放| 亚洲免费毛片| 亚洲欧美色中文字幕| 国产精品jizz在线观看软件| 人妻21p大胆| 青青草原国产av福利网站| 久久国产精品夜色| 成人蜜桃网| 成人免费一级片| 永久免费av网站可以直接看的| 日韩天堂视频| 亚洲第一精品福利| 精品久久国产综合精麻豆| 国产免费人成视频网| 亚洲侵犯无码网址在线观看| 91在线国内在线播放老师| 国产一区二区在线视频观看| 少妇露出福利视频| 久久综合干| 精品福利视频导航| 国产91在线|中文| 国产男人的天堂| 人妻出轨无码中文一区二区| 久青草免费在线视频| 国产白浆一区二区三区视频在线| 免费国产小视频在线观看| 日韩精品一区二区三区免费| 亚洲欧美极品| 自慰网址在线观看| 在线观看亚洲成人| 久久久久免费精品国产| 国产激情第一页| 亚洲第一成人在线| 国产一级裸网站| 欧美亚洲日韩不卡在线在线观看| 中国一级毛片免费观看|