緩衝區溢位實驗與基礎
實驗所屬系列:資訊保安基礎
實驗物件: 本科/專科資訊保安專業
相關課程及專業:資訊網路安全概論、網路攻擊與防禦技術、滲透測試技術
實驗時數(學分):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語言程式碼,思考下這些程式碼是否存在問題,程式碼如下:
/*
*buffer.c
*/
#include <stdio.h>
int main()
{
char name[8];
printf(“Please input your name: ”);
gets(name);
printf(“your name is : %s!”, name);
return 0;
}
實驗步驟二:
任務二:利用溢位工具溢位目標系統,獲取目標系統shell
實驗步驟三:
任務三:利用MS12-020漏洞溢位目標系統,使目標系統癱瘓
實驗報告要求
對實驗結果進行分析,完成思考題目,總結實驗的心得體會,並提出實驗的改進意見