

關鍵詞:Metasploit;漏洞利用;SMB;wireshark
中圖分類號:TP309.7 文獻標識碼:A
文章編號:1009-3044(2024)25-0084-03
0 引言
Metasploit(MSF) 是一款功能非常強大的開源漏洞檢測和利用工具,具有7個功能模塊,以幫助用戶實現漏洞檢測、漏洞利用、躲避安全工具、后滲透測試等功能[1]。
MS17-010 漏洞,也被稱為“永恒之藍”漏洞,是Windows操作系統中的一種安全漏洞。攻擊者成功利用MS17-010漏洞后,可以獲得對目標系統的完全控制權[2]。
本文基于Metasploit框架,實現MS17-010漏洞的利用,基于wireshark進行抓包,結合SMB連接建立的3個階段,分析漏洞利用的詳細過程。
1 Metasploit
Metasploit 最初由HD Moore 于2003 年創建,Metasploit的第一個版本是一個ruby腳本集合,后來經歷了許多版本更新,對計算機安全領域產生了深遠影響,目前已經成為一款功能非常強大的開源漏洞檢測和利用工具。Metasploit 可以從官網https://www.metasploit. com/獲取最新的版本。Metasploit在kali系統中默認安裝。在Kali Linux 終端輸入“msfconsole”啟動Metasploit,使用的版本是“6.0.30-dev”[3-4]。
Metasploit 在kali 中的路徑位于/usr/share/metasploit-framework/modules/,在這個路徑下可以看到Metasploit的主要模塊。
Exploit(利用)模塊:包含針對特定漏洞的利用代碼,允許滲透測試人員利用系統中的安全漏洞來獲取對目標系統的控制。每一個Exploit模塊對應一個具體漏洞的攻擊方法。
Payload(有效載荷)模塊:用于在目標系統上執行特定操作的代碼片段,如建立反向shell、執行特定命令等。Metasploit提供了多種類型的Payload,包括Me?terpreter和Shellcode。
Auxiliary(輔助)模塊:提供各種輔助功能,如信息收集、掃描和驗證漏洞等任務。
Encoder(編碼器)模塊:用于對Payload進行編碼,以避免被防火墻、入侵檢測系統等檢測到。
NOP(空指令)模塊:生成一系列的無操作指令,用于填充利用代碼中的空隙,以確保代碼的正確性和穩定性。
Post(后期滲透)模塊:在取得目標系統遠程控制權后,進行一系列的后滲透攻擊動作,如獲取敏感信息、跳板攻擊等操作。
Evasion(逃避檢測)模塊:用于創建和部署逃避現代安全檢測和防御措施(如反病毒軟件、防火墻等)的模塊。
這些模塊共同構成了Metasploit的強大功能集,使用戶能夠針對各種環境和系統執行復雜的滲透測試和安全評估。Metasploit需要在合法和合規的環境中使用,并且需要有相關的授權和許可[5]。
2 漏洞利用(MS17-010)
MS17-010是一種針對Windows系統的SMBv1服務的緩沖區溢出漏洞。攻擊者可以通過發送特制的SMBv1請求來觸發該漏洞。攻擊者利用MS17-010漏洞的過程可以分為以下幾個步驟:
1)信息收集:攻擊者首先會使用網絡掃描工具(如nmap) 來探測目標系統的開放端口和服務。MS17-010 漏洞通常與SMBv1 服務相關,并監聽在TCP的445端口上。
在漏洞利用的實施過程中,采用虛擬化技術,搭建了漏洞利用模擬環境,模擬環境中的虛擬機鏡像、模擬主機類型、操作系統和IP地址如表1所示[6]。
2) 漏洞探測:一旦確認目標系統開放了SMBv1服務并可能存在MS17-010漏洞,攻擊者會使用專門的漏洞探測工具或Metasploit等滲透測試框架來進一步驗證漏洞的存在。
在Metasploit中,攻擊者可以利用MS17-010的掃描模塊auxiliary/scanner/ smb/smb_ms17_010,配置目標主機的IP地址等信息,然后運行掃描來確認漏洞是否存在,并探測操作系統版本,如圖1所示。
3) 漏洞利用:如果探測到目標系統確實存在MS17-010漏洞,攻擊者會利用這個漏洞來執行惡意代碼。這通常是通過發送一個精心構造的SMBv1請求來完成的,該請求包含了能夠觸發緩沖區溢出的代碼。
當目標系統接收到這個惡意請求并嘗試處理時,由于存在MS17-010漏洞,它會導致緩沖區溢出,從而使攻擊者能夠在目標系統的內存中寫入并執行任意代碼。
下面使用metasploit框架中的模塊exploit/windows/smb/ms17_010_eternalblue來進行漏洞利用和分析。
設置目標IP地址,命令為set RHOSTS 目標IP地址。設置攻擊載荷,如set payload windows/x64/meter?preter/reverse_tcp用于64位系統。使用exploit或者run 命令實施攻擊,攻擊效果如圖所示。Meterpreter ses?sion 1 opened (10.10.244.206: 4444 -> 10.10.244.172:49178) at 2024-06-05 10:29:09 +0800,說明會話已經建立成功,拿到靶機的shell,如圖2所示。
4) 后滲透階段:攻擊者成功利用MS17-010漏洞后,可以獲得對目標系統的完全控制權。他們可以執行各種惡意操作,如:捕獲屏幕圖像、上傳/下載文件、創建新的管理員賬戶、啟用遠程桌面服務、清除系統日志以掩蓋攻擊痕跡等。
攻擊者還可以利用這個漏洞來傳播惡意軟件,如WannaCry勒索軟件,它利用MS17-010漏洞進行快速傳播,并對受感染的系統進行加密勒索。
3 漏洞利用分析
SMB全稱為服務消息塊(Server Message Block),它可以實現文件共享、打印機共享、串口共享等功能。SMB是一個C/S request-response請求響應協議。建立SMB會話需要3個階段:1為協商階段,客戶端先使用SMB的協商協議(0X72) ,發送客戶端支持的認證協議給服務器,服務器選擇其中的一個返回給客戶端;2為認證階段,客戶端使用SMB會話設置請求數據包(0X73) 進行認證和登錄;3為連接階段,客戶端發送一個樹連接請求數據包(0X75) 并列出它想訪問網絡資源的名稱。一旦建立起連接,用戶可以進行真正的對于目標文件的操作,如打開文件、讀寫文件等文件操作。連接的過程如圖3所示。
在實施漏洞利用的同時,使用wireshark 進行抓包,結合wireshark抓包結果、SMB連接過程和漏洞利用原理分析攻擊過程:
1) 首先攻擊機向靶機發送一個SMB協商協議請求Negotiate Protocol Request(0x72) 數據包,并在方言dia?lects字符串列表中列出攻擊機所支持的SMB協議版本。
SMB 定義特定協議版本的消息包集稱作方言Dialect,為了適應 Microsoft SMB 協議日益增長的功能,Microsoft SMB 協議消息數據包的列表不斷增長,現在數以百計。每種方言由標準字符串標識,例如圖中的“LANMAN 1.0”“LM1.2X002”“NT LANMAN 1.0”“NT LM 0.12”等,如圖4所示。
2) 靶機響應一個SMB的協商協議響應NegotiateProtocol Response(0x72) 數據包,給出選擇的SMB協議版本,圖中Slected Index 3:NT LM0.12表明本次實驗中協商選擇的是索引為3的協議NTLM0.12,如圖5所示。
3) 協商成功之后,攻擊機向靶機發送一個會話設置請求Session Setup AndX Request(0x73) 數據包,會話的用戶身份為:anonymous匿名用戶,如圖6所示。
4) 靶機確認身份后回復會話設置響應SessionSetup AndX Response(0X73) 數據包同意本次連接,并返回靶機的系統信息windows 7 professional 7600等,如圖7所示。
5) 攻擊機向靶機發送一個樹連接請求Tree Con?nect AndX Request(0x75) 數據包,并給出訪問網絡資源的具體路徑\\10.10.244.172\IPC$,如圖8所示。
6) 靶機回復一個樹連接響應Tree Connect AndXResponse(0x75) 數據包,同意訪問資源,并且列出操作的權限,如READ access,WRITE access,APPEND ac?cess等,如圖9所示。
連接到相應資源后,攻擊機即可進行正常的網絡共享訪問,如通過open SMB、read SMB、write SMB、close SMB實現打開、讀取、寫入、關閉共享文件。如可以查看靶機的文件、上傳文件、下載文件、創建用戶等操作。
在漏洞分析過程中,通過wireshark抓包結果,與SMB協議連接過程逐一對應,深刻理解了MS17-010 漏洞利用的詳細過程。
4 總結與展望
本文利用虛擬化平臺搭建了漏洞利用環境,對實際漏洞利用環境進行了模擬?;贛etasploit框架,利用Metasploit的攻擊exploit模塊,實現了MS17-010漏洞的利用,并基于抓包工具wireshark進行抓包,通過抓到的SMB協議數據包,結合SMB連接建立的3個階段,分析MS17-010漏洞利用的具體過程,該分析方法同樣適用于其他漏洞利用的分析。