天天看點

緩沖區溢出基礎與實踐

實驗簡介

實驗所屬系列:資訊安全基礎

實驗對象: 大學/專科資訊安全專業

相關課程及專業:資訊網絡安全概論、網絡攻擊與防禦技術、滲透測試技術

實驗時數(學分):4學時

實驗類别:實踐實驗類

實驗目的

1)了解緩沖區溢出的原理與危害;

2)了解防範緩沖區溢出的基本方法;

3)了解常見的緩沖區溢出攻擊。

預備知識

緩沖區溢出

    緩沖區溢出是指當計算機向緩沖區内填充資料時超過了緩沖區本身的容量,溢出的資料覆寫在合法資料上。理想的情況是:程式檢查資料長度并不允許輸入超過緩沖區長度的字元,但是絕大多數程式都會假設資料長度總是與所配置設定的儲存空間相比對,這就為緩沖區溢出埋下了隐患。

    作業系統所使用的緩沖區,又被稱為"堆棧"。在各個操作程序之間,指令會被臨時儲存在“堆棧”中,“堆棧”也會出現緩沖區溢出。

    緩沖區溢出的危害:在目前網絡與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數傳回時改變傳回程式的位址,讓其跳轉到任意位址,帶來的危害是:一種情況是程式崩潰導緻拒絕服務,另外一種就是跳轉并且執行一段惡意代碼,比如得到shell,然後為所欲為。

ms12-020漏洞

    微軟于2012年3月12日釋出安全公告,公布了ms12-020漏洞,漏洞級别為嚴重,這個級别是微軟所有漏洞級别的最進階别,意即會對服務和企業營運造成巨大損失。

    這個漏洞的定義是指作業系統的遠端桌面協定存在重大漏洞,入侵者(黑客)可以通過向遠端桌面預設端口(3389)發一系列特定rdp包,進而擷取超級管理者權限,進而入侵系統。

    若該主機同時提供80端口服務,那麼疑似有相對更大的隐患。

    根據微軟的安全公告,windows全系列作業系統(winxp/vista/win7/win2000/ win2003/win2008)均存在受控威脅。但因為遠端桌面管理的特殊性,幾乎所發現的主機都是伺服器,pc機暫未發生。

緩沖區溢出基礎與實踐

    防護過程中最重要的就是開啟自動更新,接受microsoft的更新。

    如果沒有開啟自動更新,或是不能确定該更新檔包有否更新,請登入:  http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=b69b4b9b-c0a1-4c1e-b081-8529eaf1536a

    下載下傳更新檔更新,頁面為2003sp2的更新檔,頁面下方的清單有支援其他作業系統的更新檔。

    防護過程的第二步是修改遠端桌面端口或是設定遠端桌面允許的白名單ip。

metasploit工具

    metasploit是一款開源的安全漏洞檢測工具,可以幫助安全和it專業人士識别安全性問題,驗證漏洞的緩解措施,并對安全性進行評估,提供真正的安全風險情報。這些功能包括智能開發,密碼審計,web應用程式掃描,社會工程等。

    metasploit是一個攻擊工具開發平台,可以擴充的模型将負載控制,編碼器,無操作生成器和漏洞整合在一起,使 metasploit framework 成為一種研究高危漏洞的途徑。它內建了各平台上常見的溢出漏洞和流行的 shellcode ,并且不斷更新。最新版本的 msf 包含了750多種流行的作業系統及應用軟體的漏洞,以及224個 shellcode 。作為安全工具,它在安全檢測中用着不容忽視的作用,并為漏洞自動化探測和及時檢測系統漏洞提供了有力保障。

實驗環境

實驗環境為兩台互相連網windows主機。拓撲圖如下:

緩沖區溢出基礎與實踐

說明:

1. 網絡環境中有兩台主機,有一台主機在實驗環境可見并可登入,我們稱為實驗機(客戶機);另一台主機不可見,但從實驗機可以通路,這台主機即為本次實驗任務的攻擊目标,我們稱為目标機。

2. 實驗機ip為:10.1.1.35;目标機ip為:10.1.1.2。

實驗步驟一

任務一:使用給定的程式測試緩沖區溢出

1、登入到實驗機上。

2、檢視可引起緩沖區溢出的代碼。

閱讀一段c語言代碼,思考下這些代碼是否存在問題,代碼如下:

 (若輸入name>8則溢出)

3、切換到指令行。

點選開始->運作,輸入cmd後進入指令行

4、測試緩沖區溢出。

在系統指令行下,切換到c盤的根目錄下,使用dir指令檢視,其中buffer.exe為本任務的實驗程式:

緩沖區溢出基礎與實踐

 在提示符下輸入buffer運作程式,輸入bjhit,發現程式正常運作!

緩沖區溢出基礎與實踐

 繼續進行測試,輸入my name is bjhit,這時候程式出現異常!

緩沖區溢出基礎與實踐

5、反複測試與思考。

再次運作buffer.exe,更換輸入内容(每次大于10個),檢視每次傳回結果。

緩沖區溢出基礎與實踐

并思考:為什麼會出現異常?為什麼每次傳回内容不同?如何修改程式防止緩沖區溢出。

字元大于8,溢出

(注:在測試過程中,如果實驗機不再響應鍵盤滑鼠操作,可能是在測試緩沖區溢出時破壞了實驗的系統環境,此時需重新開機實驗機。)

實驗步驟二

任務二:利用溢出工具溢出目标系統,擷取目标系統shell

在cmd下切換到c:\目錄下,檢視該目錄下的檔案,可以看到有個檔案dns.exe,這個檔案即是我們本次實驗的溢出工具。如下圖所示:

緩沖區溢出基礎與實踐

運作dns.exe工具,仔細檢視使用說明:

緩沖區溢出基礎與實踐

按照使用說明掃描目标主機。

緩沖區溢出基礎與實踐

仔細觀察傳回結果與說明。

按照說明對目标主機進行溢出

緩沖區溢出基礎與實踐

仔細觀察傳回結果說明。

使用telnet與遠端主機建立連接配接。

緩沖區溢出基礎與實踐

觀察建立連接配接後結果。

緩沖區溢出基礎與實踐

 輸入ipconfig /all 指令檢視目标主機資訊,看是否拿到目标主機shell。

緩沖區溢出基礎與實踐

實驗步驟三

任務三:利用ms12-020緩衝區溢位目标系統,使目标系統癱瘓

1、運作metasploit console。

緩沖區溢出基礎與實踐

 啟動後界面如下圖所示:

緩沖區溢出基礎與實踐

2、對目标主機進行資訊收集。

在msf>提示符下輸入指令:db_nmap -st -p3389  10.1.1.2, 收集目标主機資訊,并對傳回的資訊進行分析。

緩沖區溢出基礎與實踐

可以看到目标主機的相關資訊,如作業系統為windows2003,開放了3389遠端桌面等等。

搜尋一下這個漏洞的利用子產品:search ms12_020

緩沖區溢出基礎與實踐

3、利用ms12_020漏洞,對目标機進行攻擊。

在msf指令提示符下,

輸入use auxiliary/dos/windows/rdp/ms12_020_maxchannelids指令,并設定相關的參數,如下圖:

緩沖區溢出基礎與實踐

 使用exploit指令進行利用,檢視攻擊結果

緩沖區溢出基礎與實踐

ping 目标主機,檢視主機是否癱瘓。

ping 10.1.1.2

緩沖區溢出基礎與實踐