官术网_书友最值得收藏!

3.1 輕而易舉實現的Web攻擊——Metasploit攻擊

Metasploit是一款開源的安全漏洞檢測工具,同時又是免費的,因此安全工作人員常用Metasploit工具來檢測系統的安全性。Metasploit Framework(MSF)在2003年以開放源碼方式發布,是可以自由獲取的開發框架。它是一個強大的開源平臺,供開發、測試和使用惡意代碼,這個環境為滲透測試、shellcode編寫和漏洞研究提供了一個可靠平臺。

這種可以擴展的模型將負載控制(payload)、編碼器(encode)、無操作生成器(nops)和漏洞整合在一起,使Metasploit Framework成為一種研究高危漏洞的途徑。它集成了各平臺上常見的溢出漏洞和流行的shellcode,并且不斷更新。

Metasploit目前的版本收集了數百個實用的溢出攻擊程序及一些輔助工具,讓人們使用簡單的方法完成安全漏洞檢測,即使一個不懂安全的人也可以輕松地使用它。當然,它并不只是一個簡單的收集工具,提供了所有的類和方法,讓開發人員使用這些代碼方便快速地進行二次開發。

3.1.1 Metasploit環境的搭建與安裝

1.Windows環境下安裝

從官方網站http://www.metasploit.com/下載Windows版本的安裝版,直接安裝即可。安裝的版本是3.5.1。安裝時需要注意以下幾點。

(1)在安裝時要關閉殺毒軟件,否則會導致殺毒軟件和Metasploit沖突,導致安裝失敗。

(2)在控制面版——區域和語言選項——選擇英文(美國)——高級選項卡中選擇英文(美國)。因為在安裝時會進行檢測,如果屬于非英文地區會導致安裝失敗。

(3)如果安裝有殺毒軟件,會經常提示在Metasploit的安裝目錄下檢測到病毒或木馬。

2.Linux環境下安裝

官方網站提供了兩種Linux下的安裝方式,一種是打包好的Metasploit安裝包,如framework-3.5.1-linux-i686.run,里面包含了安裝所需要的各種包,下載后直接在電腦上安裝即可。安裝時需要具有root權限。如果裝有殺毒軟件,在安裝時需要關閉殺毒軟件。另一種是源碼包方式,下載到本機后自己安裝。需要事先安裝各種所信賴的包,安裝后需要進行一定的配置,較為麻煩。

1 登錄官方網站http://www.metasploit.com/,如圖3-1所示。

圖3-1 Metasploit官網首頁

2 單擊網站首頁的下載圖標,進入下載頁面。

3 在下載頁面中,找到標題為Metasploit Framework的選項區,單擊“For Windows: 32-Bit”選項,進行下載,如圖3-2所示。

圖3-2 下載頁面

3.安裝Metasploit軟件步驟詳解

1 單擊“Setup”對話框中的“Next”按鈕,如圖3-3所示。

圖3-3 開始安裝

2 勾選“I accept the agreement”單選按鈕,單擊“Next”按鈕,如圖3-4所示。

圖3-4 接受協議

3 單擊文件夾圖標選擇安裝軟件的位置,單擊“Next”按鈕,如圖3-5所示。

圖3-5 選擇安裝位置

4 閱讀文本框中的內容,單擊“Next”按鈕,如圖3-6所示。

圖3-6閱讀安裝信息

5 填寫“SSL Port”(SSL端口號),單擊“Next”按鈕,如圖3-7所示。

圖3-7 填寫端口號

6 填寫“Server Name”(服務名稱)、“Days of validity”(有效日期),并且勾選上“Yes, trust certifi cate”復選框,單擊“Next”按鈕,如圖3-8所示。

圖3-8 填寫信息

7 在“Ready to Install”對話框中單擊“Next”按鈕,如圖3-9所示。

圖3-9 安裝就緒

8 等待Metasploit安裝,可能要數分鐘,如圖3-10所示。

圖3-10 安裝過程

9 在彈出的安裝界面上,勾選“Access Metasploit Web UI? ”復選框,單擊“Finish”按鈕,如圖3-11所示。

圖3-11 安裝完成

10 桌面會彈出一個boot.html文件,關閉即可,如圖3-12所示。至此Metasploit安裝成功。。

圖3-12 安裝信息

3.1.2 Metasploit使用教程詳解

1.Metasploit操作指令

msf >show exploits:顯示Metasploit目前所能夠測試的所有漏洞及相關描述。

msf >use windows/smb/ms06_040_netapi:選擇ms06_040進行測試。

msf>info:顯示當前所選漏洞的描述信息。

msf>show targets:顯示當前所選漏洞能夠影響的操作系統。

msf>set target 0:設置target為0,即自動識別Windows 2000和Windows XP系統。

msf>show payloads:顯示可適合于當前所選漏洞的shellcode。

msf>set payload windows/adduser:選用adduser為shellcode。

msf>show options:顯示當前所選漏洞和shellcode需要配置的選項。

msf>set RHOST XX.XX.XX.XX:按照show options的提示設置目標主機地址。

msf>set PASS XXXXXXXXXXX:按照show options的提示設置賬戶密碼。

msf>set USER XXXXXX:按照show options的提示設置用戶名。

msf>exploit:進行攻擊測試。

Metasploit操作界面如圖3-13所示。

圖3-13 Metasploit操作界面

2.Metasploit攻擊方法分類

總的來說,exploits共分為兩類溢出攻擊方法,即主動溢出和被動溢出。主動溢出是針對目標主機的漏洞主動地進行攻擊以獲得控制權限;被動溢出是針對目標主機被動地監聽然后獲得相應的操作。在所有的exploit中,針對Windows平臺的比其他所有平臺的總和還要多。

緩沖區溢出攻擊的目的在于擾亂具有某些特權運行的程序的功能,這樣可以使得攻擊者取得程序的控制權,如果該程序具有足夠的權限,那么整個主機就被控制了。一般而言,攻擊者攻擊root程序,然后執行類似“exec(sh)”的執行代碼來獲得root權限的shell。為了達到這個目的,攻擊者必須達到以下兩個目標。

(1)在程序的地址空間里安排適當的代碼。

(2)通過適當的初始化寄存器和內存,讓程序跳轉到入侵者安排的地址空間執行。

每當一個函數調用發生時,調用者會在堆棧中留下一個活動記錄,它包含了函數結束時返回的地址。攻擊者通過溢出堆棧中的自動變量,使返回地址指向攻擊代碼。通過改變程序的返回地址,當函數調用結束時,程序就跳轉到攻擊者設定的地址,而不是原先的地址。這類緩沖區溢出被稱為堆棧溢出攻擊(Stack Smashing Attack),是目前最常用的緩沖區溢出攻擊方式。

在Metasploit中溢出模塊共分為13種,分別是ais、bsdi、dialup、freebsd、hpux、irix、linux、multi、netware、osx、solaris、unix、windows。其中windows下面的最多。

Metasploit整體架構如圖3-14所示。

圖3-14 Metasploit整體架構

3.Metasploit的攻擊流程詳解

(1)獲得EIP。IP是指令寄存器,存放當前指令的下一條指令的地址,CPU該執行哪條指令就是通過IP來指示的。EIP為32位機的指令寄存器,存放的是相對地址,也就是基于段基址的偏移值。CPU的ESP寄存器存放當前線程的棧頂指針,EBP存放當前線程的棧底指針。

(2)插入Shellcode。Shellcode實際上是一段代碼或填充數據,用來發送到服務器利用特定的漏洞的代碼,一般可以獲取權限。另外,Shellcode一般是作為數據發送給受攻擊服務器的。Shellcode是溢出程序或病毒的核心,主要對沒有打補丁的主機有作用。Shellcode一般用C語言或匯編語言編寫,C語言編寫較快,匯編語言便于控制Shellcode的生成。一個Shellcode只能為特定的平臺所使用,不能供多個溢出程序、操作系統使用。

Shellcode既可以是本地的也可以是遠程的。本地Shellcode主要是一名攻擊者為了獲取本地計算機權限,如一段緩沖區溢出程序成功執行后可以獲得一定的權限。

遠程Shellcode主要是一名攻擊者為了獲得本地網絡或互聯網上另一臺主機的控制權限,如果成功后攻擊者可以通過網絡獲得目標主機的控制權限。如果它可以連接攻擊者和被攻擊者,稱為反向連接Shellcode。如果它通過綁定一個相應的端口來進行控制,稱為bindshell。

第三種Shellcode非常特殊,它在目標機上創建一個可以讓攻擊者重復利用的連接,而這個連接是建立在目標機現有的連接之上,并不創建新的連接。這種Shellcode最難創建也最不容易被檢測。

(3)反向連接shell即將目標主機當作服務器,攻擊者機器作為客戶端。

(4)添加用戶或其他。

主站蜘蛛池模板: 梨树县| 武清区| 寿光市| 富裕县| 二连浩特市| 库车县| 嘉义县| 高雄县| 漯河市| 扎鲁特旗| 怀来县| 酒泉市| 九江市| 大竹县| 依安县| 德阳市| 晋中市| 怀集县| 林口县| 广汉市| 桑日县| 嘉定区| 昌都县| 新乐市| 偃师市| 尼玛县| 长宁县| 弥渡县| 高要市| 云龙县| 子洲县| 农安县| 婺源县| 新田县| 灵丘县| 泽州县| 河曲县| 全椒县| 普兰店市| 华安县| 全南县|