cobalt strick 4.0 系列教程(6)Payload Artifact 和反病毒規避

0x01 哲學

Strategic Cyber 責任有限公司會定期回答有關規避的問題。Cobalt Strike 是否能夠繞過 AV 產品?它能繞過哪些 AV 產品?它多久檢查一次?

Cobalt Strike 默認的 Artifact 可能會被大多數終端安全解決方案攔截。規避不是 Cobalt Strike 默認產品的目的。但是 Cobalt Strike 確實提供了靈活性。

你作爲操作員可以改變 Cobalt Strike 在它的工作流中使用的可執行文件、DLL、applet 和腳本模板。你也可以以多種不同的格式導出 Cobalt Strike 的 Beacon payload,這樣可以與用於幫助規避的第三方工具一起工作。

本章將重點介紹 Cobalt Strike 提供靈活性的的功能。

0x02 Artifact 工件集

Cobalt Strike 使用 Artifact 工件集來生成它的可執行文件和 DLL。這個 Artifact 工件集是一個源碼框架、用於建立(build)可以規避一些反病毒產品的可執行文件和 DLL。

Artifact 工件集理論

傳統的反病毒產品使用簽名來識別已知的惡意程序。如果我們把一些被標記的惡意 shellcode 注入一個可執行文件,那麼反病毒產品會識別 shellcode 並把此可執行文件標爲惡意。

爲了打敗這種檢測,攻擊者通常會以某種方式混淆 shellcode 並將其放入二進制文件中。這種混淆過程會打敗使用簡單的字符串搜索來識別惡意代碼的反病毒產品。

很多反病毒產品會進行更嚴苛的檢測。這些反病毒產品模擬一個可執行程序在一個虛擬沙盒中的執行。在執行的每個模擬步驟中,這個反病毒產品會檢測在模擬的進程空間中的已知的惡意部分。如果已知的惡意部分出現,反病毒產品會把這個可執行文件或 DLL 標記爲惡意的。這項技術打敗了許多編碼器和程序包,它們試圖去從基於簽名的反 AV 產品中隱藏已知的惡意部分。

Cobalt Strike 對此的應對策略是很簡單的。這個反病毒沙盒有一些限制。這不是完整的虛擬機。有一些反病毒沙盒不會模擬的系統行爲。這個 Artifact 工件集是一些可執行文件和 DLL 模板的合,這些可執行文件和 DLL 模板依賴於一些反病毒產品不會模擬來還原二進制中的 shellcode 的行爲。

一些技術[請參閱:Artifact 工件集中的 src-common/bypass-pipe.c ]生成可執行文件和 DLL,這些可執行文件和 DLL 通過命名管道爲 shellcode 服務,通過命名管道傳輸 shellcode。如果反病毒沙箱不模擬命名管道,就發現不了那些已知的惡意 shellcode。

Artifact 工件集失效的地方

當然,反病毒產品可能擊敗 Artifact 工件集中的特定的實現。如果一個反病毒的供應商爲你使用的Artifact 工件集技術編寫了簽名,那麼它創建的可執行文件和 DLL 將被捕獲。殺軟的追蹤始於 CobaltStrike 2.5 甚至更低的版本。隨着時間的推移,Cobalt Strike 中默認的繞過技術會逐漸失效。如果你想最大化利用 Artifact 工件集,你可以使用這些 Artifact 工件集中的某項技術作爲基礎來構建你自己的Artifact 工件集實現。

但是哪怕是這樣也還遠遠不夠。一些反病毒產品會回連廠商的服務器。這些廠商來決定該可執行文件或DLL 是否是非惡意的或者是之前從未見過的未知可執行文件或 DLL。一些這些產品會自動的把未知的可執行文件或 DLL 發送到廠商用於進一步的研究和提醒用戶。其他的一些產品會把未知的可執行文件或DLL 視爲惡意的。這取決於反病毒產品及其設置。

關鍵是,在這種情況下,再怎麼樣“混淆”也幫不了你。你要面對的是不同的防禦方式,需要針對性的解決方案。你應該像處理應用白名單一樣處理這些情況。嘗試找到一個已知的好的程序(比如powershell),利用它來把你的 payload stager 注入進內存中。

如何使用 Artifact 工件集

通過 Help → Arsenal (武器庫),填入 Cobalt Strike 的註冊碼來下載 Artifact 工件集。你也可以通過這個地址來直接訪問武器庫網頁:https://www.cobaltstrike.com/scripts
在這裏插入圖片描述
Strategic Cyber 有限責任公司將 Artifact 工件集以 .tgz 的格式分發。使用 tar 命令對其進行解壓。此 Artifact 工件集包含一個 build.sh 腳本。在 Kali Linux 系統上運行此腳本,無需任何參數,使用最小化 GNU 來爲 Windows 交叉編譯器構建默認的 Artifact 工件集。
在這裏插入圖片描述
Artifact 工件集構建腳本會爲每一項 Artifact 工件集中的技術創建一個包含模板 Artifact 的文件夾。要通過 Cobalt Strike 來使用某項技術,通過 Cobalt Strike → Script Manager (腳本管理器),並從該技術的文件夾加載 artifact.cna 腳本。

建議你定製化修改 Artifact 工件集及其技術,使其滿足你的需求。儘管熟練的 C 程序員可以使用Artifact 工件集做更多事情,那些不是程序員但是樂於探索的人也可以使用 Artifact 工件集。比如,每當新版本發佈時,主流的反病毒產品喜歡爲 Cobalt Strike 的試用版中的可執行文件編寫簽名。直到Cobalt Strike 2.5版本,Cobalt Strike 的試用版和授權版都在其可執行文件和 DLL 中使用了命名管道技術。反病毒廠商就需要爲可執行文件使用的命名管道字符串編寫簽名。擊敗它們的簽名,一次又一次的發佈,就像在管道技術的源代碼中更改管道名稱一樣簡單。

0x03 Veil 規避框架

Veil 是一個流行的框架,用於生成可以通過某些防病毒產品的可執行文件。你可以使用 Veil 來爲Cobalt Strike 的 payload 生成可執行文件。通過 Attacks → Packages → Payload Generator 。選擇你想要爲其生成可執行文件的監聽器。選擇 Veil 作爲輸出類型,按 Generate 按鈕來保存輸出文件。

啓動 Veil 規避框架並選擇你想要使用的技術。Veil 最終會詢問關於 shellcode 的生成選項。選擇 Veil的“使用自定義 shellcode”的選項,把 shellcode 粘貼在 Cobalt Strike 的 payload 生成器使用的文件內容中。按 Enter 鍵然後你就會獲得一個新鮮出爐的 Veil 製作的可執行文件。

在這裏插入圖片描述

0x04 Java 小程序攻擊

Strategic Cyber 有限責任公司以小程序集的形式爲 Cobalt Strike 的小程序攻擊發布源碼。這部分也可以在 Cobalt Strike 的武器庫中。通過 Help → Arsenal (武器庫)並下載小程序集。

使用包含的 build.sh 腳本來在 Kali Linux 上構建小程序集。很多 Cobalt Strike 的客戶使用這種靈活性來使用一個他們購買的代碼簽名的證書爲 Cobalt Strike 的 Java 小程序攻擊簽名。我們也強烈推薦這種做法。

要使 Cobalt Strike 使用你的小程序集而不是內置的那個,加載包含在小程序集裏面的 applet.cna 腳本。

在 Cobalt Strike 武器庫頁面上你會注意到 Power Applet (Powershell 小程序)。這是 Cobalt Strike的 Java 小程序攻擊使用 PowerShell 的替代實現,用於將 payload 注入內存。Power Applet 展示了你有使用完全不同的方法重建 Cobalt Strike 的標準攻擊並把它門用於 Cobalt Strike 的工作流中的靈活性。

通過加載小程序集中包含的 applet.cna 腳本,可以使 Cobalt Strike 使用你的小程序集而不是內置的那個。

0x05 資源集

資源集是 Cobalt Strike 改變其在工作流中使用的 HTA,Powershell,Python,VBA 和 VBA 腳本模板的方法。同樣,資源集在 Cobalt Strike 的武器庫中,可以被有註冊碼的用戶獲取。通過 Help →Arsenal 來下載資源集。

資源集的 README.txt 文檔記錄了包含的腳本和哪些功能使用它們。要規避一個產品,考慮這些腳本中的改變字符串或行爲。

要使 Cobalt Strike 使用你的腳本模板而不是內置的腳本模板,加載資源集中的 resources.cna 腳本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章