Fortra 經常回答有關規避的問題。Cobalt Strike 會繞過反病毒産品嗎?它繞過了哪些反病毒産品?多久檢查一次?
Cobalt Strike 預設Artifact可能會被大多數端點安全解決方案攔截。盡管規避不是Cobalt Strike産品預設的目标,但Cobalt Strike确實提供了一些靈活性。
作為操作員,你可以更改 Cobalt Strike 在其工作流程中使用的可執行檔案、DLL、applet和腳本模闆。你還可以以多種格式導出 Cobalt Strike 的Beacon payload,可以與用于規避的第三方工具配合使用。
本章将重點介紹提供這種靈活性的 Cobalt Strike 功能。
#6.1、Artifact 工件集
Cobalt Strike 使用 Artifact Kit 生成其可執行檔案和 DLL。Artifact Kit是 Arsenal Kit 的一部分,Arsenal Kit 包含一系列工具包 ,它是一個源碼架構,用于建構可規避某些防病毒産品的可執行檔案和 DLL。
#6.1.1、Artifact 工件集理論
傳統的反病毒産品使用簽名來識别已知的惡意代碼。如果我們将已知的惡意 shellcode 嵌入可執行檔案,反病毒産品就會識别出 shellcode 并将可執行檔案标記為惡意。
為了繞過這種檢測,攻擊者通常會以某種方式混淆 shellcode 并将其放入二進制檔案中。這種混淆過程可以繞過使用簡單字元串搜尋來識别惡意代碼的防病毒産品。
現在許多反病毒産品會進行更嚴格的檢測。通過模拟虛拟沙箱運作可執行檔案。在執行每個模拟步驟時,防病毒産品都會檢查模拟程序空間中是否存在惡意行為。如果出現已知的不良行為,反病毒産品會将這個可執行檔案或 DLL 标記為惡意檔案。這項技術擊敗了許多試圖從基于簽名的防病毒産品中隐藏惡意代碼的編碼器和加殼器。
Cobalt Strike 的應對措施很簡單。防病毒沙箱有其局限性。它不是一個完整的虛拟機。有些系統行為是防病毒沙箱無法模拟的。 Artifact Kit 是可執行檔案和 DLL 模闆的集合,這些可執行檔案和 DLL 模闆依賴于一些反病毒産品不會模拟來還原二進制中的 shellcode 的行為。
其中一項技術[參見:Artifact Kit 中的 src-common/bypass-pipe.c] 生成可執行檔案和 DLL,通過命名管道為自身提供 shellcode。如果防病毒沙箱不能模拟命名管道,它将無法發現這個惡意的shellode。
#6.1.2、Artifact Kit 無效的地方
當然,反病毒産品可能擊敗 Artifact Kit 的特定實作。如果反病毒廠商為你使用的 Artifact Kit 技術編寫了簽名,那麼它建立的可執行檔案和 DLL 将被捕獲。從Cobalt Strike 2.5 甚至更低版本就已經被反病毒軟體盯上了。随着時間的推移,Cobalt Strike 中預設的繞過技術會逐漸失效。你可以使用這些 Artifact 工件集中的某項技術作為基礎來建構你自己的Artifact 工件集實作。
但這遠遠不夠。一些反病毒産品會調用反病毒廠商的伺服器進行雲清除和檢測,來決定該可執行檔案或DLL 是否是非惡意的或者是之前從未見過的未知可執行檔案或 DLL。其中一些産品會自動向廠商發送未知的可執行檔案和 DLL,以供進一步分析并警告使用者。有些産品會把未知的可執行檔案或DLL 視為惡意的。這取決于反病毒産品及其設定。
要點:在這種情況下,再多的“混淆”也無濟于事。你面臨着一種不同類型的防禦,需要相應地解決它。處理這些情況的方式與處理應用程式白名單的方式相同。嘗試找到一個已知的好程式(例如,powershell),利用它把你的payload stager注入到記憶體中。
#6.1.3、如何使用Artifact Kit
點選 Cobalt Strike 菜單Help -> Arsenal 以下載下傳 Arsenal 套件(需要Cobalt Strike注冊碼)。還可以直接通路Arsenal網址:https://www.cobaltstrike.com/scripts
Fortra 将 Arsenal Kit 作為 .tgz 檔案分發。使用 tar 指令将其解壓。 Arsenal Kit包括 Artifact Kit,它可以與其他套件一起建構或作為獨立套件建構。有關建構套件的資訊,請參閱 Arsenal Kit README.md 檔案。
我們鼓勵你修改 Artifact Kit 及其技術,使其滿足你的需求。雖然說熟練的 C 程式員可以使用 Artifact Kit 做更多事情,但對于富有冒險精神的非程式員來說,使用 Artifact Kit 也是非常可行的。
#6.2、Veil 規避架構
Veil 是一個流行的架構,用于生成可以繞過某些防病毒産品的可執行檔案。可以使用 Veil 為Cobalt Strike的payload生成可執行檔案。
安裝說明:https://github.com/Veil-Framework/Veil
步驟:
1、點選Payloads -> Stager Payload Generator
2、選擇監聽器
3、選擇輸出類型為Veil
4、點選Generate生成payload并儲存檔案
5、啟動 Veil Evasion Framework 并選擇你要使用的技術。
6、Vei 會詢問關于 shellcode 的生成選項,選擇Custom(自定義)
7、粘貼 Cobalt Strike 剛生成的payload的檔案内容。
8、按 Enter 鍵,你将獲得一個新的 Veil 制作的可執行檔案
$ ./Veil.py
Veil>: use Evasion //使用Evasion
Veil/Evasion>: use python/shellcode_inject/flat.py //設定payload技術
.....
[python/shellcode_inject/flat>>]: generate //開始生成
[?] Generate or supply custom shellcode?
1 - Ordnance (default)
2 - MSFVenom
3 - Custom shellcode string
4 - File with shellcode (\x41\x42..)
5 - Binary file with shellcode
[>] Please enter the number of your choice: 3 //選擇自定義
[>] Please enter custom shellcode (one line, no quotes, \x00.. format): //在此處粘貼payload txt内容
[>] Please enter the base name for output files (default is payload): //按回車
[?] How would you like to create your payload executable?
1 - PyInstaller (default)
2 - Py2Exe
[>] Please enter the number of your choice: 1 //選擇建立payload執行程式的方法
==============================================================================
[Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
===============================================================================
[*] Language: python
[*] Payload Module: python/shellcode_inject/flat
[*] Executable written to: /var/lib/veil/output/compiled/payload.exe
[*] Source code written to: /var/lib/veil/output/source/payload.py
#6.3、Java Applet攻擊
Fortra 将源代碼作為 Applet Kit 分發給 Cobalt Strike 的 Applet Attacks。 Cobalt Strike 武器庫中也提供了此功能。通過Help -> Arsenal下載下傳 Applet 工具包。
使用附帶的 build.sh 腳本在 Kali Linux 上建構Applet工具包。許多 Cobalt Strike 客戶利用這種靈活性,使用他們購買的代碼簽名證書來簽署Cobalt Strike的 Java Applet 攻擊。強烈推薦這種做法。
要使 Cobalt Strike 使用你的 Applet 工具包而不是内置工具包,請加載 Applet 工具包中包含的 applet.cna 腳本。
在 Cobalt Strike Arsenal頁面上你會注意到Power Applet(Powershell 小程式)。這是 Cobalt Strike的 Java Applet攻擊使用 PowerShell 的替代實作,用于将 payload 注入記憶體。Power Applet展示了你有使用完全不同的方法重建 Cobalt Strike 的标準攻擊并把它門用于 Cobalt Strike 的工作流中的靈活性。通過加載小程式集中包含的 applet.cna 腳本,可以使 Cobalt Strike 使用你的小程式集而不是内置的工具包。
#6.4、Resource Kit資源集
資源集是 Cobalt Strike 改變其在工作流中使用的 HTA,Powershell,Python,VBA 和 VBA 腳本模闆的方法。Resource Kit是 Cobalt Strike arsenal的一部分,通過Help -> Arsenal下載下傳。
資源集的 README.md 記錄了所包含的腳本以及使用它們的功能。要規避反病毒産品,請考慮更改這些腳本中的字元串或行為。
要使 Cobalt Strike 使用你的腳本模闆而不是内置腳本模闆,請加載 dist/arsenal_kit.cna 或dist/resource/resources.cna腳本。有關更多資訊,請參閱 Arsenal Kit README.md 檔案。
#6.5、Sleep Mask套件(睡眠掩碼套件)
Sleep Mask Kit 是睡眠掩碼函數的源代碼,執行該函數來在Beacon進入休眠之前,它會對自身和相關記憶體(例如堆記憶體)進行掩碼操作。用于規避針對.text/.data節的檢測,通過Help -> Arsenal下載下傳。其中包括sleep mask套件。
有關sleep mask套件的更多資訊,請參閱 arsenal-kit/README.md 和 arsenal-kit/kits/sleepmask/README.md 檔案。
#說明
本文由筆者在Cobalt Strike官方使用者指南原文(https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm)基礎上編譯,如需轉載請注明來源。