国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2020-04-05 18:51:36劉佳琳譚振江朱冰
計算機(jī)時代 2020年2期
關(guān)鍵詞:控制權(quán)

劉佳琳 譚振江 朱冰

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

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

中圖分類號:TP309.2? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? 文章編號: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ī)應(yīng)用在各行各業(yè),計算機(jī)軟件的開發(fā)與計算機(jī)技術(shù)的應(yīng)用是信息時代的產(chǎn)物,有越來越多的計算機(jī)軟件應(yīng)用于人們的工作和生活中。與此同時,軟件的安全漏洞也越來越多[1]。緩沖區(qū)溢出是一種非常普遍的安全漏洞。在2018年10月、12月以及2019年1月的十大重要安全漏洞分析中都出現(xiàn)了緩沖區(qū)溢出漏洞,其中就存在由應(yīng)用軟件帶來的緩沖區(qū)溢出漏洞[2-4]。SLMail軟件是基于Windows環(huán)境的Internet郵件服務(wù)器系列產(chǎn)品,它的PASS命令存在緩沖區(qū)溢出漏洞,無需身份驗證就可以實現(xiàn)遠(yuǎn)程代碼執(zhí)行[5]。緩沖區(qū)溢出漏洞雖然只是非常普遍的安全漏洞,但卻是一種具有嚴(yán)重破壞作用的漏洞,攻擊者會利用該漏洞,對計算機(jī)軟件造成破壞,進(jìn)而破壞應(yīng)用系統(tǒng),獲取有價值的數(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é)合動態(tài)調(diào)試工具與用于定位進(jìn)程模塊的腳本,實現(xiàn)遠(yuǎn)程代碼執(zhí)行,達(dá)到控制目標(biāo)主機(jī)的效果。在此過程中講解shellcode的形成過程,分析緩沖區(qū)溢出攻擊的危害及原因。

1 理論分析

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

1.1 緩沖區(qū)

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

1.2 緩沖區(qū)溢出

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

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

緩沖區(qū)溢出攻擊是利用緩沖區(qū)溢出漏洞進(jìn)行的攻擊行為,這種攻擊行為會出現(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ī)會默認(rèn)提交的信息全部為數(shù)據(jù)。如果程序的設(shè)計規(guī)則不嚴(yán)格,在提交的信息加入代碼時,計算機(jī)并不會識別出信息中包含的代碼,仍會把這些內(nèi)容當(dāng)作數(shù)據(jù)在計算機(jī)里運(yùn)行。該現(xiàn)象可以通過一個能夠顯示輸入內(nèi)容的腳本(a.sh)進(jìn)行解釋。如圖1所示。

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

2 實際案例

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

2.1 確定溢出的范圍

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

2.2 確定溢出的精確位置并驗證

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

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

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

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

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

2.4 生成shellcode并執(zhí)行

前面的所有準(zhǔn)備工作是為了證明ESP寄存器能夠存放shellcode,接下來需要解決的問題是編寫出具有實際功能的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)為每個線程分配一個地址范圍,但每個線程地址范圍也不確定,因此,ESP寄存器的地址是變化的,不能直接使用。但是,可以利用內(nèi)存中地址固定的系統(tǒng)模塊,在這些模塊中尋找跳轉(zhuǎn)ESP寄存器的指令,將該指令的地址存放在EIP寄存器內(nèi),再由該指令間接跳轉(zhuǎn)到ESP,執(zhí)行ESP寄存器中的內(nèi)容。

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

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

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

2.6 案例總結(jié)

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

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

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

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

4 結(jié)束語

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

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

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

[1] 桑洋.淺談軟件設(shè)計中的安全漏洞動態(tài)檢測技術(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].數(shù)字通信世界,2017.13(10):249.

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

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

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

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

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

[12] 孫淑華,馬恒太,張楠,卿斯?jié)h,王曉翠.后門植入、隱藏與檢測技術(shù)研究[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ù),2018.14(33):44-45

猜你喜歡
控制權(quán)
神農(nóng)科技集團(tuán)正式接收廣譽(yù)遠(yuǎn)控制權(quán)
企業(yè)并購中CEO與股東動態(tài)控制權(quán)配置的博弈分析
財會月刊(2019年18期)2019-09-13 01:46:20
公司控制權(quán)的來源
財訊(2019年7期)2019-06-11 05:49:01
FF陷控制權(quán)爭奪漩渦
汽車觀察(2018年10期)2018-11-06 07:05:06
上市公司控制權(quán)爭奪中獨(dú)立董事的義務(wù)——以萬華之爭為例
家族企業(yè)形成方式、控制權(quán)結(jié)構(gòu)與高管來源
科技型創(chuàng)業(yè)企業(yè)的控制權(quán)配置機(jī)理及仿真
軟科學(xué)(2015年7期)2015-07-30 03:11:37
基于全流通高管薪酬變動與控制權(quán)轉(zhuǎn)讓績效研究
論公司控制權(quán)的雙層安排方式
我國家族企業(yè)控制權(quán)內(nèi)涵研究*
南郑县| 阳东县| 盈江县| 宝鸡市| 恩施市| 涡阳县| 托克逊县| 田东县| 香河县| 巫山县| 汽车| 芦溪县| 开远市| 南宫市| 鹿泉市| 台南市| 嘉荫县| 阳信县| 广水市| 金寨县| 赤峰市| 兴化市| 古交市| 蓝田县| 陆河县| 鄂伦春自治旗| 大安市| 昔阳县| 湖南省| 横山县| 卓资县| 博白县| 大田县| 玉溪市| 杭锦旗| 汶上县| 称多县| 南皮县| 遵化市| 文化| 嵩明县|