滲透攻擊是許多安全專家職業(yè)生涯中都曾攀登過的“山峰”,獲取目標主機完全控制權的感覺就像你登臨險峰之上,會有一種極佳的自我滿足感,但有時還會有點令人恐懼。雖然近些年來滲透攻擊技術得到了長足發(fā)展,但是多樣化的系統(tǒng)與網(wǎng)絡防護技術的實施應用導致使用簡單的滲透攻擊手段越來越難以成功。本篇文章中,我們將從Metasploit框架最基本的命令接口開始講起,逐步介紹一些更深入的滲透攻擊方法。
本篇中討論的大多數(shù)攻擊和自定義操作需要用到MSF終端(msfconsole)、MSF 編碼器(msfencode),以及MSF攻擊載荷生成器(msfpayload)。后兩者已經(jīng)集成為msfvenom。
滲透攻擊基礎
1. msf>show exploits
這個命令會顯示Metasploit框架中所有可用的滲透攻擊模塊。在MSF終端中,你可以針對滲透測試中發(fā)現(xiàn)的安全漏洞來實施相應的滲透攻擊。Metasploit團隊總是不斷地開發(fā)出新的滲透攻擊模塊,因此這個列表會越來越長。

2. msf> show auxiliary
這個命令會顯示所有的輔助模塊以及它們的用途。在Metasploit中,輔助模塊的用途非常廣泛,它們可以是掃描器、拒絕服務攻擊工具、Fuzz測試器,以及其他類型的工具。
3. msf>show options
參數(shù)(Options)是保證Metasploit 框架中各個模塊正確運行所需的各種設置。當你選擇了一個模塊,并輸入msf>show options后,會列出這個模塊所需的各種參數(shù)。如果當前你沒有選擇任何模塊,那么輸入這個命令會顯示所有的全局參數(shù),舉例來說,你可以修改全局參數(shù)中的LogLevel,使?jié)B透攻擊時記錄系統(tǒng)日志更為詳細。

你還可以輸入back命令,以返回到Metasploit的上一個狀態(tài)。

當你想要查找某個特定的滲透攻擊、輔助或是攻擊載荷模塊時,搜索(search)命令非常有用。例如,如果你想發(fā)起一次針對SQL數(shù)據(jù)庫的攻擊,輸入下面的命令可以搜索出與SQL有關的模塊。

4. msf> show payloads
和show options命令一樣,當你在當前模塊的命令提示符下輸入show payloads命令時,Metasploit 只會將與當前模塊兼容的攻擊載荷顯示出來。在針對基于Windows操作系統(tǒng)的攻擊中,簡單的攻擊載荷可能只會返回目標主機的一個命令行界面,復雜的能夠返回一個完整的圖形操作界面。輸入下面的命令可以查看到所有活動狀態(tài)的攻擊載荷:
msf>show payloads
上面的命令將顯示Metasploit中所有的可用攻擊載荷,然而如果你正在進行一次實際的滲透攻擊,你可能只會看到適用于本次滲透攻擊的攻擊載荷列表。舉例來說,在msf exploit
(ms08_067_netapi)提示符下,執(zhí)行show payloads命令僅會顯示下一段中的輸出結果。

5. msf> show targets
Metasploit的滲透攻擊模塊通??梢粤谐?strong>受到漏洞影響目標系統(tǒng)的類型。舉例來說,由于針對MS08-067漏洞的攻擊依賴于硬編碼的內(nèi)存地址,所以這個攻擊僅針對特定的操作系統(tǒng)版本,且只適用于特定的補丁級別、語言版本以及安全機制實現(xiàn)(在第14章和第15章中會有詳細的解釋)。在MSF終端MS08-067的提示符狀態(tài)下,會顯示60個受影響的系統(tǒng)(下面例子中只截取了其中一部分)。攻擊是否成功取決于目標Windows系統(tǒng)的版本,有時候自動選擇目標這一功能可能無法正常工作,容易觸發(fā)錯誤攻擊行為,通常會導致遠程服務崩潰。

在這個例子中,你看到“自動選擇目標”(Automatic Targeting)是攻擊目標列表中的一個選項。通常,攻擊模塊會通過目標操作系統(tǒng)的指紋信息,自動選擇操作系統(tǒng)版本進行攻擊。不過,最好還是通過人工更加準確地識別出目標操作系統(tǒng)的相關信息,這樣才能避免觸發(fā)錯誤的、破壞性的攻擊。的一個選項。通常,攻擊模塊會通過目標操作系統(tǒng)的指紋信息,自動選擇操作系統(tǒng)版本進行攻擊。不過,最好還是通過人工更加準確地識別出目標操作系統(tǒng)的相關信息,這樣才能避免觸發(fā)錯誤的、破壞性的攻擊。
6. info
當你覺得show和search命令所提供的信息過于簡短,可以使用info命令加上模塊的名字來顯示此模塊的詳細信息、參數(shù)說明以及所有可用的目標操作系統(tǒng)(如果已選擇了某個模塊,直接在該模塊的提示符下輸入info即可):

7. set 和unset
Metasploit 模塊中的所有參數(shù)只有兩個狀態(tài):已設置(set)和未設置(unset)。有些參數(shù)會被標記為必填項(required),這樣的參數(shù)必須經(jīng)過手工設置并處于啟用狀態(tài)。輸入show options命令可以查看哪些參數(shù)是必填的;使用set命令可以對某個參數(shù)進行設置(同時啟用該參數(shù));使用unset命令可以禁用相關參數(shù)。后面的列表展示了set和unset命令的使用方法:

在上面我們設置目標IP地址(RHOST)為192.168.91.22(我們的攻擊對象)。我們設置目標操作系統(tǒng)類型為4,即使用msf> show targets命令所列出的“Windows XP SP2 English
(AlwaysOn NX)”。我們運行了show options以確認所有的參數(shù)已設置完成。
8. setg和unsetg
setg命令和unsetg命令能夠對全局參數(shù)進行設置或清除。使用這組命令讓你不必每次遇到某個參數(shù)時都要重新設置,特別是那些經(jīng)常用到又很少會變的參數(shù),如LHOST。
9. save
在使用setg命令對全局參數(shù)進行設置后,可以使用save命令將當前的設置值保存下來,這樣在下次啟動MSF終端時還可使用這些設置值。在Metasploit中可以在任何時候輸入save命令以保存當前狀態(tài)。

在命令執(zhí)行結果中包含設置值保存在磁盤上的位置(/root/.msf4/config),如果由于一些原因你需要恢復到原始設置,可以將這個文件刪除或移動到其他位置。
攻擊Metasploitable主機
讓我們對Metasploitable主機進行一次不同的攻擊。



通過nmap掃描,我們共發(fā)現(xiàn)21、22、23、25、53、80等共計22個開放的端口。
我們還可以看到這臺主機操作系統(tǒng)為Debian,它正運行著vsftpd2.3.4版本。
讓我們搜索一個vsftpd滲透攻擊模塊,并嘗試用它來攻擊這臺主機。攻擊流程如下:

選擇該模塊并設置payload

設置options的參數(shù)

發(fā)動攻擊

這種類型的攻擊稱為命令執(zhí)行漏洞攻擊,攻擊代碼的可靠性通常接近100%,因此被標注為
“excellent”的Rank。注意在這個例子中我們使用了一個綁定(bind)的交互式shell,在目標主機上打開了一個監(jiān)聽端口6200,Metasploit為我們創(chuàng)建了一個直接到目標系統(tǒng)的連接(記住如果攻擊防火墻或NAT網(wǎng)關后的主機,應當使用反彈式連接攻擊載荷)。
資源文件
資源文件(resourcefiles)是MSF終端內(nèi)包含一系列自動化命令的腳本文件。這些文件實際上是一個可以在MSF終端中執(zhí)行的命令列表,列表中的命令將按順序執(zhí)行。資源文件可以大大減少測試和開發(fā)所需的時間,將包括滲透攻擊在內(nèi)的許多重復性任務進行自動化。
- 可以在MSF終端中使用resource命令載入資源文件
- 可以在操作系統(tǒng)的命令行環(huán)境中使用
-r標志將資源文件作為MSF終端的一個參數(shù)傳遞進來運行。
下面這個簡單的例子展示了如何創(chuàng)建一個能夠顯示Metasploit版本,并載入聲音插件的資源文件:
如你所見,version命令和load sounds命令被寫入一個名為resource.rc的文件中。

這個文件隨后跟在-r參數(shù)后輸入到msfconsole中,最后這個資源文件被載入,其中包含的兩個命令被執(zhí)行,其執(zhí)行結果如圖所示。

也可以在MSF終端直接導入

在實驗環(huán)境中你可以嘗試使用一個更為復雜的資源文件,自動地對某臺主機發(fā)起攻擊。