關于CobaltStrike的若干檢測特征分析
CobaltStrike被廣泛利用于滲透攻擊中,可以與其他攻擊工具(如Mimikatz、Metasploit和PowerShell Empire)聯合使用,支持在網絡中橫向移動。
一、關于C2的闡述
CobaltStrike是實現C2的具體平臺框架。C2全稱為Command and Control,即命令與控制。這里分別從KILL CHAIN和MITRE ATT&CK對C2進行簡單介紹。
在KILL CHAIN中,一次完整的滲透攻擊過程被規范為以下七個階段:

如上圖所示,C2位于攻擊流程的末端,是攻擊者通過一系列手段成功進入受害者系統后,為實現受害機器(被植入惡意軟件)與攻擊者控制端通過網絡進行交互的一個階段,關鍵是拉取二段 exploit 進行駐留。
而MITRE ATT&CK從實現方式上對C2這一階段進行了詳細地介紹,它包括19種常用技術手段,主要為編碼混淆、應用層協議利用、網絡層協議利用、隧道技術、代理、單雙向通信等。這些技術手段均可承載于某一攻擊框架。這里C2的釋義更接近于某種“基礎設施”。
由此,C2架構也就可以理解為,惡意軟件通過什么樣的方式獲取資源和命令,以及通過什么樣的方式將數據回傳給攻擊者,以達到潛藏監控、命令控制的目的。
二、C2 Matrix介紹
一個合適的C2工具,往往可以更好地推進“行動”進展。C2 Matrix包含了用于測試各種C2 的實驗室環境、有關每個C2的詳細信息(包括如何安裝和使用它們等)以及如何為紅隊交戰和紫隊演習建設攻擊基礎設施。

C2 Matrix收錄頗豐,但所收錄的工具版本普遍落后于當下。目前,業內應用最多者,當屬KALI集成的Metasploit以及CobaltStrike。本文的實驗研究主要圍繞CobaltStrike進行。
三、CobaltStrike介紹
CobaltSrtike早期版本依賴Metasploit框架,而現在的CobaltStrike已經不再使用MSF,而是作為單獨的平臺使用。它分為客戶端(Client)與服務端(Teamserver),服務端只有一個,客戶端可以有多個,團隊可進行分布式團隊協作。

CobaltSrtike擁有多種協議主機上線方式,集成了提權、憑據導出、端口轉發、Socket代理、Office攻擊、文件捆綁、釣魚等功能。同時,CobaltStrike還可以調用Mimikatz等其他常用工具,因此廣受黑客青睞。

CobaltSrtik
四、特征討論(網絡維度與端點維度)
環境準備:
本次實驗主要利用了CobaltSrtike Attacks中的MS Office Macro和Windows Executable兩種攻擊方式。
環境介紹:
· CobaltStrike Sever:kali
· CobaltStrike客戶端:kali、MAC

靶機:win10
主要工具:
cobaltstrike4.2、office2016、wireshark、processhacker、火絨劍
1、CobaltStrike HTTP隧道通信與流量分析
CobaltSrtike4.0之前的版本支持http傳輸,木馬基于TCP協議會產生明顯的通訊特征,如獨有的端口、協議數據格式等。

beacon與C2的通信邏輯
a)stager的beacon會先下載完整的payload并執行,stage則省略這一步。
b) beacon進入睡眠狀態。結束睡眠狀態后,它會用http-get方式發送一個metadata(具體發送細節可以在malleable_profile文件里的http-get模塊進行自定義),metadata的內容包括目標系統的版本、當前用戶等信息。
c)如果存在待執行的任務,C2會響應這個metadata并發布命令,beacon將會收到具體任務內容與一個任務id。
d)執行完畢后,beacon會將回顯數據與任務id用post方式發送回C2(細節可以在malleable_profile文件中的http-post部分進行自定義),然后又會回到睡眠狀態。
PCAP包:

PCAP分析:
· GET /cx 請求輪詢指令
· HTTP 200 OK響應附帶指令
· POST 提交指令響應數據
檢測CobaltStrike網絡指標
CobaltStrike默認配置文件通過偽造HTTPS流量規避安全監測,所以需要使用TLS檢查,然后隔離bot通信流,完成后再通過檢查HTTPS請求中的數據來識別可疑的通信流。

控制端發起desktop監控,該操作指令攜帶在TCP握手響應包里,靶機POST攜帶輸出結果。
針對get、post輪詢請求建立模型,檢查與目標的通信頻率,人工產生的流量不斷變化,機器人產生的流量趨于一致且均勻。此外,在默認設置中,Sleeptime=60000ms,可根據這一設定嘗試建立模型,檢測出來自未修改默認設置的可疑CobaltSrtike攻擊。
2、進程分析

釋放進程rundll32.exe

Word關閉后進程依然在運行,控制端發起desktop監控,rundll32.exe又發起一個rundll32.exe。


火絨劍顯示其遠程地址是127.0.0.1,判斷應該是做了混淆處理,此處可作為特征。
3、來自默認設置的一些信息證書
SSL/TLS證書
證書是teamserver主控端使用的加密證書,網上一些文章提到CobaltStrike默認的SSL/TLS證書是固定的,所以一般都使用這個證書作為特征值來發現CobaltStrike服務器。

CobaltSrtike證書查看
默認的證書具有很明顯的特征。Eg:
O=cobaltstrike,;OU=AdvancedPenTesting;
CN=Major Cobalt Strike
https上線使用的證書
https上線使用的證書,并不是前文中修改的那一個!

Self-signed Certificates with SSL Beacon和Valid SSL Certificates with SSL Beacon是用來修改https上線使用的證書的。
默認證書特征
Fofa搜索:
cert="73:6B:5E:DB:CF:C9:19:1D:5B:D0:1F:8C:E3:AB:56:38:18:9F:02:4F"&&after="2020-01-01"
Censys.io搜索:
443.https.tls.certificate.parsed.fingerprint_sha256:87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c
結合搜索引擎,情報社區來判斷。
全局選項
官方文檔顯示:“可將Malleable C2配置文件配置為具有許多全局選項,以調整流量和Beacon的行為。完整列表可在官方文檔中找到。至少應設置sleeptime、jitter和useragent選項。”這一提示非常重要。
Eg:


3.1 sleeptime用于配置頻率,以毫秒為單位;jitter用于按指定的百分比更改檢查間隔,它接受0到99的值。
3.2 useragent配置將用于HTTP通信的useragent字符串。如果可以收集目標組織中主機正在使用的實際用戶代理(向目標機構成員發送一封帶有Web漏洞的電子郵件并監視后續GET請求中發送的user-agent值),使用該代理為好。先進的組織經常監視其環境中是否存在不規則的用戶代理字符串,大多數公司僅使用了少數合法字符串。

Eg:set useragent "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08";
查看bot通信流的來源,檢查生成TLS通信流的用戶代理。乍一看用戶代理貌似是合法的,“Mozilla/5.0 (Windows NT 6.1)”,這是Internet Explorer (IE)的值。然而,用戶代理完全可以被偽造,一些機器學習算法可以推導出數據包流的真正用戶代理。由此,我們得出一種檢測惡意流量的方法。
如果使用的是明文HTTP流量或者是目標環境中存在SSL攔截,那么與環境不匹配的User-Agent值就會被發現。

3.3 dns_idle選項用于發送信號給DNS的信標沒有任務在排隊等候。我們可以設置任何IP,但是主機廣泛使用Google DNS服務器作為DNS主機,因此我們將使用它(8.8.4.4)。同樣,這是自定義目標DNS服務器的理想選擇。
3.4 DNS隱蔽信道:使用Wireshark觀察到,主機訪問了nexus.office.live.com這種不規則域名,即可粗略猜測這是一個C&C服務器。

特征:

這里我們可以通過根據AV引擎或其他IOC給出的情報做二次判斷。
4. 檢測加密流量
JA3方法用于收集Client Hello數據包中以下字段的十進制字節值。

原理:這里相當于把支持的TLS擴展信息,都收集起來當作一個特征值來用(除了客戶端發起的,還有關于服務器的JA3S)。
“這其實算一種降維打擊,并且我們發現主流在線沙箱、主流IDS大都支持了JA3/JA3S指紋檢測。”
其他
從一位使用者的角度來看,50050端口是否開啟,也可成為確定CobaltSrtike server的一個佐證。CobaltSrtike能得到大量黑白帽子的使用,必然是隱蔽性極高,高度的定制化是其重要原因,我們很難通過某一特征判定是否為惡意流量,但眾多模糊特征的聚合一定可以讓我們看到不一樣的東西。
五、檢測規則以及分析思路
利用日志易SIEM安全大數據分析平臺,根據相關特征制定C2檢測規則。
1、進程特征利用——父子進程關聯
分析平臺根據四種進程分析部分,可以將分析結果歸納為五種可疑進程。實際使用時,分析平臺會對進程進行檢索,并將出現可疑進程的檢索結果的機器ip寫入觀察列表。
2、U-A頭利用
檢索可疑useragent字符串,這些U-A頭可以來自情報或機器學習算法推導,將這些可疑結果IP寫入觀察列表或作為搜索條件。
3、IOC利用

不同情報源的CobaltSrtike server IP將被寫入觀察列表。
4、特征聯合利用
將步驟1和步驟2作為檢索主體,聯合步驟3進行檢測,進一步提高檢測精度。

5、聯合設備告警
告警設備之間聯合,設備與情報、本地規則聯合,提高了告警精度,聚焦了入侵階段與機器安全狀態。

告警可在威脅處置展示,也可進行定制化推送。