第三十一課:msf的前生今世
專注APT攻擊與防御
https://micropoor.blogspot.com/

The world’s most used penetration testing framework.

Metasploit

從本季開始將會連載Metasploit教學,非常榮幸,本部門在我的“慫恿”下,基本以Metasploit為常用框架做滲透。為了更好的把這個“壞習慣”延續(xù)下去,遂打算寫一套完整的系列教程。以供同學們在使用中,或者新來的同學形成遞歸學習或者查詢相關資料。在寫的同時,查閱了大量的資料以及借鑒了許多思路。感謝為此貢獻的老師們。Metasploit項目是一個旨在提供安全漏洞信息計算機安全項目,可以協(xié)助安全工程師進
行滲透測試(penetration testing)及入侵檢測系統(tǒng)簽名開發(fā)。
Github開源地址:
https://github.com/rapid7/metasploit-framework

msf(未來Metasploit的簡稱)基本遵循PTES滲透測試標準。它將滲透分解如下:

1. 創(chuàng)建項目
2. 發(fā)現(xiàn)設備
3. 獲取對主機的訪問權限
4. 控制會話
5. 從目標主機收集證據(jù)
6. 會話清除
7. 生成報告(需pro版本)

而PTEST滲透測試標準如下:
1:前期交互階段
在前期交互(Pre-Engagement Interaction)階段,滲透測試團隊與客戶組織進行交互討論,最重要的是確定滲透測試的范圍、目標、限制條件以及服務合同細節(jié)。該階段通常涉及收集客戶需求、準備測試計劃、定義測試范圍與邊界、定義業(yè)務目標、項目管理與規(guī)劃等活動。

2:情報收集階段
在目標范圍確定之后,將進入情報搜集(Information Gathering)階段,滲透測試團隊可以利用各種信息來源與搜集技術方法,嘗試獲取更多關于目標組織網(wǎng)絡拓撲、系統(tǒng)配置與安全防御措施的信息。
滲透測試者可以使用的情報搜集方法包括公開來源信息查詢、Google Hacking、社會工程學、網(wǎng)絡踩點、掃描探測、被動監(jiān)聽、服務查點等。而對目標系統(tǒng)的情報探查能力是滲透測試者一項非常重要的技能,情報搜集是否充分在很大程度上決定了滲透測試的成敗,因為如果你遺漏關鍵的情報信息,你將可能在后面的階段里一無所獲。
3:威脅建模階段
在搜集到充分的情報信息之后,滲透測試團隊的成員們停下敲擊鍵盤,大家聚到一起針對獲取的信息進行威脅建模(Threat Modeling)與攻擊規(guī)劃。這是滲透測試過程中非常重要,但很容易被忽視的一個關鍵點。
通過團隊共同的縝密情報分析與攻擊思路頭腦風暴,可以從大量的信息情報中理清頭緒,確定出最可行的攻擊通道。
4:漏洞分析階段
在確定出最可行的攻擊通道之后,接下來需要考慮該如何取得目標系統(tǒng)的訪問控制權,即漏洞分析(Vulnerability Analysis)階段。在該階段,滲透測試者需要綜合分析前幾個階段獲取并匯總的情報信息,特別是安全漏洞掃描結果、服務查點信息等,通過搜索可獲取的滲透代碼資源,找出可以實施滲透攻擊的攻擊點,并在實驗環(huán)境中進行驗證。在該階段,高水平的滲透測試團隊還會針對攻擊通道上的一些關鍵系統(tǒng)與服務進行安全漏洞探測與挖掘,期望找出可被利用的未知安全漏洞,并開發(fā)出滲透代碼,從而打開攻擊通道上的關鍵路徑。
5:滲透攻擊階段
滲透攻擊(Exploitation)是滲透測試過程中最具有魅力的環(huán)節(jié)。在此環(huán)節(jié)中,滲透測試團隊需要利用他們所找出的目標系統(tǒng)安全漏洞,來真正入侵系統(tǒng)當中,獲得訪問控制權。
滲透攻擊可以利用公開渠道可獲取的滲透代碼,但一般在實際應用場景中,滲透測試者還需要充分地考慮目標系統(tǒng)特性來定制滲透攻擊,并需要挫敗目標網(wǎng)絡與系統(tǒng)中實施的安全防御措施,才能成功達成滲透目的。在黑盒測試中,滲透測試者還需要考慮對目標系統(tǒng)檢測機制的逃逸,從而避免造成目標組織安全響應團隊的警覺和發(fā)現(xiàn)。
6:后滲透攻擊階段
后滲透攻擊(Post Exploitation)是整個滲透測試過程中最能夠體現(xiàn)滲透測試團隊創(chuàng)造力與技術能力的環(huán)節(jié)。前面的環(huán)節(jié)可以說都是在按部就班地完成非常普遍的目標,而在這個環(huán)節(jié)中,需要滲透測試團隊根據(jù)目標組織的業(yè)務經(jīng)營模式、保護資產(chǎn)形式與安全防御計劃的不同特點,自主設計出攻擊目標,識別關鍵基礎設施,并尋找客戶組織最具價值和嘗試安全保護的信息和資產(chǎn),最終達成能夠對客戶組織造成最重要業(yè)務影響的攻擊途徑。在不同的滲透測試場景中,這些攻擊目標與途徑可能是千變?nèi)f化的,而設置是否準確并且可行,也取決于團隊自身的創(chuàng)新意識、知識范疇、實際經(jīng)驗和技術能力。
7:報告階段

滲透測試過程最終向客戶組織提交,取得認可并成功獲得合同付款的就是一份滲透測試報告(Reporting)。這份報告凝聚了之前所有階段之中滲透測試團隊所獲取的關鍵情報信息、探測和發(fā)掘出的系統(tǒng)安全漏洞、成功滲透攻擊的過程,以及造成業(yè)務影響后果的攻擊途徑,同時還要站在防御者的角度上,幫助他們分析安全防御體系中的薄弱環(huán)節(jié)、存在的問題,以及修補與升級技術方案。
本系列教程以msf 4.15.45為基礎,后期可能會以msf5為基礎。
msf核心代碼為Ruby開發(fā)。這里需要解釋,為什么作者以Ruby為核心語言開發(fā)?而不是python,perl等大眾語言開發(fā)?
這里轉載原作者的話:
以下是在2005年左右寫的。
在框架的開發(fā)過程中,Metasploit開發(fā)人員不斷被問到的一個反復出現(xiàn)的問題是為什么選擇Ruby作為編程語言。為避免單獨回答此問題,作者選擇在本文檔中解釋其原因。由于很多原因,選擇了Ruby編程語言而不是其他選擇,例如python,perl和C++。選擇Ruby的第一個(也是主要的)原因是因為它是Metasploit員工喜歡寫的一種語言。在花時間分析其他語言并考慮過去的經(jīng)驗后,發(fā)現(xiàn)Ruby編程語言既簡單又強大解釋語言的方法。Ruby提供的內(nèi)省程度和面向對象的方面非常適合框架的一些要求??蚣軐Υa重用的自動化類構造的需求是決策制定過程中的關鍵因素,而且它是perl不太適合提供的東西之一。除此之外,選擇Ruby的第二個原因是因為它支持平臺獨立于線程。雖然在該模型下開發(fā)框架期間遇到了許多限制,但Metasploit工作人員觀察到了2.x分支的顯著性能和可用性改進。未來版本的Ruby(1.9系列)將使用本機線程支持現(xiàn)有的線程API,操作系統(tǒng)將編譯解釋器,這將解決當前實現(xiàn)的許多現(xiàn)有問題(例如允許使用阻塞操作)。與此同時,與傳統(tǒng)的分叉模型相比,現(xiàn)有的線程模型被發(fā)現(xiàn)要優(yōu)越得多,特別是在缺少像Windows這樣的原生分支實現(xiàn)的平臺上。
選擇Ruby的另一個原因是因為Windows平臺支持存在本機解釋器。雖然perl有cygwin版本和ActiveState版本,但兩者都受到可用性問題的困擾。可以在Windows上本地編譯和執(zhí)行Ruby解釋器的事實大大提高了性能。此外,解釋器也非常小,并且可以在出現(xiàn)錯誤時輕松修改。
Python編程語言也是候選語言。Metasploit員工選擇Ruby而不是python的原因有幾個原因。主要原因是對python強制的一些語法煩惱的普遍厭惡,例如block-indention。雖然許多人認為這種方法的好處,但Metasploit工作人員的一些成員認為這是一個不必要的限制。Python的其他問題圍繞父類方法調用的限制和解釋器的向后兼容性。
C / C ++編程語言也得到了非常認真的考慮,但最終很明顯,嘗試以非解釋性語言部署可移植和可用的框架是不可行的。此外,這種語言選擇的開發(fā)時間線很可能會更長。盡管框架的2.x分支已經(jīng)相當成功,但Metasploit開發(fā)人員遇到了許多限制和煩惱與perl的面向對象編程模型或缺乏。事實上
perl解釋器是許多發(fā)行版上默認安裝的一部分,這并不是Metasploit員工認為值得繞開語言選擇的東西。
最后,所有這些都歸結為選擇一種對框架貢獻最大的人所享有的語言,而這種語言最終成為Ruby。

Micropoor
?