滲透利器Cobalt Strike在野利用情況專題分析

ADLab發表於2020-04-30

1、引言

Cobalt Strike是一款商業化的滲透測試利器,由著名的攻防專業團隊Strategic Cyber開發。該工具被廣泛應用於滲透測試專案中,在提高政府和企業網路設施安全性上起到了重要的作用。同時,隨著網路空間的紅藍對抗不斷髮展,該框架成為對手模擬和紅隊行動中最為流行的一款軟體。但由於該框架具備團隊協作攻擊、流量防檢測、防安全軟體查殺等優勢,因而也被大量駭客組織用於真實的高危害性的攻擊。目前已知的多個APT組織都曾經使用過Cobalt Strike攻擊框架,如FIN6、Cobalt Group組織和“海蓮花”等。但是,目前所披露出來的攻擊情報只是駭客利用Cobalt Strike進行非法攻擊的冰山一角。由於該框架整合有豐富的逃避流量監測和沙箱檢測技術,且具備優秀的反追蹤能力,再結合駭客團體積累的免殺技術和C&C隱藏技術,使得業內對Cobalt Strike框架的在野利用狀況知之甚少,也很難有一個全面的瞭解和清晰的認知。這種情況直接導致大量依賴於Cobalt Strike框架進行的網路攻擊行為被忽視或者漏掉,如目前仍然存在許多VT查殺率為0的樣本以及因利用C&C隱藏技術而存活至今的控制命令伺服器。

因此,本文透過逆向工程的手段提取出深度有效的指紋特徵,透過各種渠道和自有樣本平臺對關聯樣本進行採集分析,最後我們利用其C&C加密與存放的機制來自動化的提取這些被深度隱藏的C&C伺服器地址。透過已有資料的分析和追蹤我們將對Cobalt Strike框架的在野利用情況進行一次全面分析。最後,我們還溯源到10個已知的APT組織在使用該框架進行攻擊,並且發現了大量使用流量偽裝技術、DNS隧道技術、CDN技術、域名前置技術進行流量隱藏的未知APT攻擊。當然還收穫了大量的使用Cobalt Strike框架的仿冒域名。這些資料在我們進一步的威脅分析與情報挖掘中起到了重要的作用。

本文將揭秘Cobalt Strike的在野使用情況,對具體所使用的部分APT攻擊組織進行披露,同時對在野利用的各種技術如流量偽裝和C&C隱藏技術進行分析,並對Cobalt Strike伺服器“NanoHTTPD Servers”特徵探測的價值進行評估。木馬分析部分,我們透過以上情報發現了一起攻擊案例,透過分析最後確定該攻擊是由攻防實戰演練的一個紅隊發起的,文中我們會闡述這次攻擊案例的攻擊過程及其攻擊手法,並進一步的對駭客所採用的一些特種技術包括逃逸管道、DNS隧道、SMB隧道技術等進行深入分析。

2、分析簡述

2.1 Cobalt Strike簡介

Cobalt Strike是一款基於Java編寫的全平臺多方協同後滲透攻擊框架,也稱為CS。早期版本依賴Metasploit框架,Cobalt Strike 3.0之後則是作為單獨的平臺使用。其支援多種通訊協議,包括http、https、dns、smb等,同時整合了提權、憑據匯出、埠轉發、埠掃描、橫向移動、Socks代理、釣魚攻擊等功能,且支援豐富的擴充套件外掛,幾乎可以覆蓋APT攻擊鏈所需的各個技術環節。木馬生成方面也涵蓋了大多數的平臺和攻擊場景,包括 PE木馬、ELF木馬、網頁木馬、Office宏病毒木馬等。不過Cobalt Strike是一款商業運營的收費軟體,每位使用者一年的許可證費用為3500美元,許可證續簽費用為每年2500美元。

滲透利器Cobalt Strike在野利用情況專題分析

圖1 Cobalt Strike軟體介面

2.2 樣本採集與處理

為了對Cobalt Strike的在野使用情況進行全方位的瞭解和評估,啟明星辰ADLab安全研究人員透過長期追蹤,採集和分析了大量的關聯木馬樣本,並針對其多種型別和版本的樣本提取了指紋特徵。

Cobalt Strike的木馬生成基於其框架下的模版檔案如:beacon.dll、artifact32.dll(存放於Cobalt Strike.jar檔案內的resources目錄下)。使用者在配置C&C、埠及其他資訊時,Cobalt Strike會將這些資訊加密存放於這些模板檔案中。透過分析這些資訊加密演算法和存放規則,便可以大批次地提取Cobalt Strike樣本的C&C伺服器地址。目前我們分析了包含有Beacon、Artifact、Payload、Shellcode等類的Cobalt Strike樣本,並實現了批次樣本的C&C解密和提取。這種方法相對來說比自動化沙箱更快速有效。有了這些C&C我們可以進一步描繪出CS使用者的分佈情況,以此為線索還可以挖掘出更多情報。

透過長期的樣本收集,我們共得到了8380個Cobalt Strike樣本,樣本檔案包含有EXE、DLL、VBScript、PowerShell等。我們將逆向分析得到的C&C定位規則和C&C解密演算法指令碼化,得到了自動化處理指令碼。透過指令碼處理後,最終提取到了973個C&C。在分析過程中我們還發現這批樣本中有6410個左右使用了相似的C&C地址,透過溯源發現這些樣本的主體為一款名為XMRig的挖礦病毒。這批樣本背後的駭客不僅在該病毒中嵌入了Cobalt Strike木馬(全部為beacon.dll木馬,C&C為ns7.softline.top、ns8.softline.top、 ns9.softline.top)以獲得更為強大的遠端控制的功能,而且還在病毒中加入一些可以自動改變HASH的功能(在自我複製過程中變換複製體的資料),在一定程度上達到了自動變異的效果,這也會導致以HASH作為病毒檢測的方法失效。

接下來,我們將對這批C&C進行分析處理,並對其中一些有價值的情報進行挖掘,以進一步的掌握Cobalt Strike在野使用者的現實情況。

3、CS攻擊方情報分析

在這裡我們透過CS回連的C&C資料作為線索,以分析Cobalt Strike木馬攻擊來源的分佈情況,進一步關聯出一些已知APT組織並發現一些新的未知駭客組織。同時我們還對Cobalt Strike木馬使用者所採用的一些特種技術進行分析和評估。

3.1 分佈概況

首先,我們針對Cobalt Strike的C&C伺服器地理位置進行了統計分析,從而評估該框架在全球的分佈情況和流行程度。從結果來看,Cobalt Strike伺服器的分佈範圍非常廣泛,包括42個國家和地區,其中分佈較為密集的國家為中國、美國、荷蘭、俄羅斯和日本,上述國家同樣也是駭客組織聚集和遭受網路攻擊較多的國家。圖2是根據C&C資料繪製的Cobalt Strike C&C全球分佈圖。

滲透利器Cobalt Strike在野利用情況專題分析

圖2 C&C全球分佈圖

之後,我們對這批C&C的所屬運營商進行了細分。結果表明,大量伺服器歸屬於規模較小或無法識別的運營商(圖3中以XX表示)。此類廠商的安全管理工作通常較為鬆散、混亂,相應的租金也較為低廉,攻擊者往往傾向於選擇此類廠商架設伺服器以降低攻擊成本和躲避監管。除此之外,內網IP、阿里雲、電信、亞馬遜、臉書以及谷歌的C&C伺服器數量較多。相關佔比分佈如圖3所示。

滲透利器Cobalt Strike在野利用情況專題分析

圖3 C&C所屬運營商佔比分佈圖

考慮到Cobalt Strike支援多種通訊協議,我們進一步提取了樣本中的埠特徵,從而評估在實際攻擊中其埠和通訊協議的使用情況。結果顯示,443(https)、80(http)和8080埠的使用頻率較高,這三種常見埠均具有較強的穿透性和隱蔽性,可以有效避開一些防禦方案的網路出站規則限制。雖然Cobalt Strike也支援攻擊者自定義配置埠,但在實際攻擊中結合通訊協議設定埠顯然更具迷惑性。其中,443埠結合https協議加密傳輸的隱蔽性較高;80埠結合http協議,再配合流量偽裝技術也具有不錯的隱蔽效果。相關通訊埠占比分佈如圖4所示。

滲透利器Cobalt Strike在野利用情況專題分析

圖4 通訊埠占比分佈圖

由於樣本中存在大量C&C指向內網IP和域名,我們繼續對C&C的型別進行了分類整理。973個C&C共涵蓋了公網IP、內網IP和域名三類,數量分別為548個、227個和198個,其中公網IP佔比超過56%,內網IP和域名數量接近,分別佔比23.33%和20.35%。C&C型別佔比如圖5所示。

滲透利器Cobalt Strike在野利用情況專題分析

圖5 C&C型別佔比圖

針對C&C資料中出現的大量內網IP和域名,我們推測連線內網IP的樣本可能存在如下情況:

(1)攻擊者/滲透測試人員在攻陷某內網主機後,透過橫向滲透獲取了更多內網機器許可權,並進一步藉助可連線公網的內網主機作為跳板C&C進行流量轉發,從而達到其它主機上線的目的。

(2)攻擊者/滲透測試人員在內網環境部署Cobalt Strike伺服器並進行免殺功能測試。

對於連線C&C域名的樣本,我們在深入分析後發現了更多有價值的線索,也將在下個小節進行詳細的介紹。

3.2 隱匿技術

隨著網路安全審查制度的不斷完善,隱匿技術正越來越受到攻擊者的重視。在對C&C為域名的樣本進行整理分析時,我們發現了大量特殊的域名,例如仿冒的知名網站域名、CDN域名、DNS伺服器NS記錄地址、甚至是合法網站的白域名等等,這也引起了我們的疑問,是否攻擊者在利用白域名進行免殺測試,或是採用了一些更高階的隱匿技術?

經過篩選發現,C&C為域名的樣本中16%的樣本存在C&C冗餘機制(包含多個備用C&C域名),這種機制也給攻擊者提供了更加多樣和可靠的連線選擇,我們將這些備用C&C也列入了統計,去重整理後共計247個域名。經過VirusTotal掃描分析,超過61%的域名並未報毒。在進一步分析後,我們發現攻擊者運用了多種C&C隱藏技術和通訊隱匿技術來對抗監管審查和流量分析,從而確保更穩定的許可權維持,相關技術說明如表1所示​。

滲透利器Cobalt Strike在野利用情況專題分析

表1 隱匿技術說明

我們進一步統計了這批域名樣本中各類隱匿技術的使用佔比情況,其中,部分樣本融合了多項技術,例如同時運用域名仿造和DNS隧道技術(歸類至DNS隧道)、同時使用域名仿造和流量偽裝技術(歸類至流量偽裝)等,由於此類樣本數量較少,對分析結果的影響有限,故進行了調整處理,得到隱匿技術佔比圖。

滲透利器Cobalt Strike在野利用情況專題分析

圖6 隱匿技術佔比圖

由圖6可知,超過72%的攻擊者嘗試透過隱匿技術來增強自身隱蔽性。其中,約37%的攻擊者採用通訊隱匿技術(流量偽裝、DNS隧道)來躲避流量檢測,且往往會結合域名仿造進一步增強偽裝性。約15%的攻擊者採用C&C隱藏技術(CDN技術、域前置+CDN技術)來逃避審查和溯源分析,相關技術將結合樣本中的示例進行介紹。

3.2.1 域名仿造技術

透過仿造合法域名干擾普通使用者或日誌分析人員。攻擊者通常採用插入“-”連字元、替換形近字元、顛倒詞語順序、更改頂級域名等方式仿冒合法域名,從而將域名偽裝成知名公司、軟體、更新服務等網站域名進一步開展惡意活動,包括Baidu、Chrome、Windows、Office等都是常常被選擇的偽造目標。由於此類偽裝方式具有很強的迷惑性和隱蔽性,會對普通使用者或日誌分析人員產生較大干擾,且技術門檻和成本較低,儼然成為許多攻擊組織的標準配置。一些仿造示例如表2所示。

滲透利器Cobalt Strike在野利用情況專題分析

表2 域名仿造示例

3.2.2 CDN技術

CDN(Content Delivery Network 內容分發網路是高效地向使用者分發 Web 內容的分散式伺服器網路,其在網路訪問加速、防禦DDoS攻擊等方面有著重要的作用。例如網站藉助CDN進行DDoS防禦時,如果將域名指向CDN,網站流量就會經過CDN中轉後再進一步轉發至真實IP地址,從而隱藏真實的伺服器IP,防止伺服器直接遭到攻擊。同理,這種防護思路也被駭客所利用,攻擊者透過CDN中轉流量可以將真實C&C隱藏在CDN之後,將攻擊溯源複雜化。C&C中常見的雲服務提供商包括亞馬遜(cloudfront.net)、谷歌(appspot.com) 、微軟(azureedge.net)等。一些示例見表3。

滲透利器Cobalt Strike在野利用情況專題分析

表3 CDN技術示例

3.2.3 域前置+CDN技術

域前置(Domain Fronting)的核心思想是在不同通訊層使用不同的域名,在基於Domain Fronting的HTTP(S)請求中,DNS查詢以及SNI攜帶一個合法域名(前域),而在HTTP Host頭中攜帶另一個域名(隱蔽或被禁止訪問的域名C&C),當請求被髮送給合法域名後會由相應雲服務解析並轉發至隱蔽域名,使其不以明文暴露給網路審查者,從而隱藏攻擊者的真實C&C。技術說明如圖7所示。

滲透利器Cobalt Strike在野利用情況專題分析

圖7 Domain Fronting技術

起初我們並未能發現這類技術的運用,但是樣本C&C中出現的大量合法白域名非常可疑。在進一步逆向分析後,我們發現這些樣本請求包的Host欄位指向了一些與C&C不同的域名,即使用了域前置技術。域前置技術在CDN等重要的基礎設施和各類雲服務中尤其適用,雖然部分廠商已停止支援域前置功能,但技術思路可以引伸觸類。從統計結果來看,約有10%的域名樣本採用了域前置技術,其中隱蔽域名使用較多的雲服務廠商包括微軟(Microsoft Azure)、亞馬遜(Amazon CloudFront)和谷歌(Google App Engine)等,合法域名則通常可以從相關CDN子域進行尋找,攻擊者常採用一些知名網站或網路安全公司相關的域名來逃避檢測,部分示例如表4所示。

滲透利器Cobalt Strike在野利用情況專題分析

表4 Domain Fronting技術示例

3.2.4 DNS隧道技術

DNS隧道是隱蔽通道的一種,透過將其他協議封裝在DNS協議中,然後利用DNS查詢過程進行資料傳輸。由於大多數防火牆和入侵檢測裝置會放行DNS流量,故可以利用放行特點和協議解析流程進行隧道攻擊,將惡意流量隱藏在DNS協議中逃避流量檢測。

在整理冗餘C&C樣本(包含多個備用C&C域名)的過程中,我們發現了一些疑似DNS伺服器NS(Name Server)記錄地址的域名,例如ns1.microsoftonlines.net、ns1.fackbook.gq、ns5.thepatestid.online等等。透過更深入的逆向分析和特徵提取,確認這些樣本使用了DNS隧道技術。從統計結果來看,約有15%的域名樣本採用了DNS隧道技術進行通訊,且大多數攻擊者會設定多個域名伺服器NS記錄來提高連線的可靠性,同時結合域名仿造技術進行偽裝,即使使用者檢視流量也難以察覺。相關樣例如表5所示(更加詳細的DNS隧道分析可參考技術分析章節內容)。

滲透利器Cobalt Strike在野利用情況專題分析

表5 DNS隧道技術示例

3.2.5 流量偽裝技術

流量偽裝技術是指藉助Cobalt Strike的Malleable-C2-Profiles配置檔案自定義通訊流量規則對抗流量檢測的技術。攻擊者透過載入定製的配置檔案(如amazon.profile、jquery.profile等模板)來改變目標主機與Server端的流量特徵,將HTTP通訊流量偽裝成正常Web流量或加密混淆流量,從而達到通訊隱匿的效果。

在提取域名樣本連線請求的Host欄位特徵時,我們除了挖掘到使用Domain Fronting技術的樣本,還發現了大量使用此類流量偽裝技術的樣本。其在域名樣本中的使用佔比超過21%,也是攻擊者運用最多的偽裝技術。該類樣本的Host欄位通常會由配置檔案設定為指定的Web域名以模擬相關請求,常見的請求包括Amazon、Jquery、Bing等,更多的樣例如表6所示。

滲透利器Cobalt Strike在野利用情況專題分析

表6 Malleable-C2-Profiles流量偽裝技術示例

通常來說,如果是針對特定目標的攻擊,攻擊者還會根據目標機器存在的網路環境、通訊軟體、常用網站等來偽造流量特徵,Host設定的內容則可能與相應域名有關。從Host統計來看,部分域名指向了fidelity(富達投資-金融服務公司)、ESPN(娛樂與體育節目電視網)、Firedog(小型發動機動力裝置製造商)、Hulu(流媒體服務商)在內的多家商業服務公司,駭客的攻擊目標也很可能會與相關公司或服務的使用群體有關。此外,駭客還可以藉助Malleable-C2-Profiles配置檔案模仿其它惡意軟體的通訊協議,從而達到掩蓋、偽裝自身的行動目的,欺騙流量檢測系統。

顯然,這些隱匿技術給審查機構和溯源分析者帶來了極大的困難,隨著攻擊者越來越多的使用類似技術,從情報端(威脅情報分析平臺)到防禦端(IDS、IPS等終端防禦系統)都將面臨更加嚴峻的挑戰,也迫切需要更加強大的特徵指紋、流量分析及關聯分析能力。

3.3 版本和特徵探測

目前,對於防禦方來說,除了透過威脅情報平臺的IOC特徵進行關聯分析,還可以藉助一種特徵探測的手段對Cobalt Strike伺服器進行識別和追蹤。該規則由安全公司Fox-IT提出,由於Cobalt Strike的 "Team Server" 基於開源Web伺服器NanoHTTPD,可透過NanoHTTPD Servers在其HTTP響應中返回的多餘“空白符”特徵識別Cobalt Strike伺服器,此特徵可影響Cobalt Strike伺服器3.13版本之前的所有舊版本。因此,如果能夠獲取近期大量樣本的對應版本,就能夠在一定程度上反映出各版本的使用率,同時推測當前該特徵識別對於Cobalt Strike伺服器的影響程度。進一步收集和分析後,我們發現Cobalt Strike的版本眾多,其中部分版本的母體樣本存在編譯時間重疊,而其payload的編譯時間則相對獨立準確,且不會隨母體樣本生成而改變,故可解密提取樣本的payload編譯時間來歸類其所屬版本,編譯時間軸如圖8所示。

滲透利器Cobalt Strike在野利用情況專題分析

圖8 payload編譯時間軸-樣本數

我們針對目前傳播較廣的幾類Cobalt Strike版本進行了收集,並提取了對應木馬的payload編譯時間,相關資料與圖8展示的實際編譯時間分佈基本相符。值得注意的是,這幾類版本均存在破解版,也間接表明Cobalt Strike的大量使用者可能是非商業付費人群。

滲透利器Cobalt Strike在野利用情況專題分析

表7 Cobalt Strike版本及對應資訊

為了更好的反映各版本的流行程度,我們將相關版本的捕獲數量與時間進行了關聯統計(以此批樣本為例,僅體現變化趨勢),如圖9。

 滲透利器Cobalt Strike在野利用情況專題分析

圖9 Cobalt Strike各版本樣本捕獲時間折線圖-樣本數

從各版本的流行趨勢來看,雖然歷次的版本更新都會造成前期版本一定程度的使用者流失,但舊版本始終保有相對穩定的使用者量。參考2020年3月的資料情況,已有大量攻擊者開始採用Cobalt Strike 4.0實施攻擊,但3.13之前的舊版本使用量佔比仍然有23%。可見,部分使用者不會及時更新或傾向於使用已有的破解版本,因此未來透過舊版本伺服器發動攻擊的現象可能長期存在,該特徵檢測規則對於打擊惡意活動方面仍具有一定的價值。

3.4 框架使用者

那麼,究竟是哪些人員或組織在使用Cobalt Strike框架呢?我們針對這批Cobalt Strike樣本的IOC進行了更加深入的溯源,結合關聯樣本的出現時間、技術運用、攻擊鏈條以及公開的研究報告等資料,發現了多個著名的攻擊團伙和APT組織,關聯資訊如表8所示。

滲透利器Cobalt Strike在野利用情況專題分析

表8 攻擊組織IOC資訊

這些組織善於藉助域名仿造、多級跳板、DNS隧道、流量偽裝等技術手段隱蔽自身。其中,很多組織都熱衷於使用DNS隧道攻擊,以繞過防火牆或IDS的流量檢測,且其域名往往會精心偽裝設計,即使使用者檢視流量也難以辨別。使用Cobalt Strike頻率較高的組織則是Cobalt Group和APT32(海蓮花),在它們的多次攻擊行動中都能發現相關證據。此外,透過溯源關聯和廠商披露,還發現FIN6、BITTER(蔓靈花)、Ordinaff等組織也曾使用過Cobalt Strike。

不僅是以上披露的攻擊組織,我們在樣本溯源過程中同樣發現了不少紅隊攻擊的案例,後文也將舉例進行詳細分析。顯而易見的是,當前攻防雙方都非常熱衷於運用該框架進行安全對抗。目前我們發現與Cobalt Strike有關聯的攻擊組織已經達到13個,而基於逐漸成熟的C&C隱藏技術和溯源的困難性,這些可能只是未知網路的冰山一角,還有大量隱藏的攻擊組織和未知的APT攻擊並未得到披露,這也給網路安全秩序的維護提出了更大挑戰。

綜合以上分析結果,彙總Cobalt Strike框架的在野使用情況如下:

  • 分佈情況:這批樣本的973個C&C伺服器共分佈在42個國家和地區,Cobalt Strike使用群體廣,分佈範圍大。
  • 埠使用情況:443(https)、80(http)和8080埠的使用率較高。
  • 使用人員:駭客組織、紅隊人員、安全研究人員等。
  • 關聯攻擊組織:Darkhydrus、CopyKittens、Leviathan、Cobalt Group、FIN7、Bokbot、APT10、APT19、APT29、APT32、FIN6、BITTER、Ordinaff等。
  • C&C域名查殺率:約61%的C&C域名VirusTotal未報毒或無關聯記錄。
  • 隱匿技術:包括域名仿造技術、CDN技術、域前置+CDN技術、DNS隧道技術、流量偽裝技術等。
  • 版本使用情況:Cobalt Strike自2012年釋出起共經歷70餘次版本更新,最新版本為Cobalt Strike 4.0,目前其3.6至3.12間的版本使用者量依舊不少,相關伺服器受NanoHTTPD Servers影響可被特徵探測。

4、攻擊案例分析

在基於以上資料的情報分析過程中,我們發現了一起以某金融類公司為幌子的攻擊案例,該案例最終確認為攻防實戰演練的一個紅隊的攻擊活動。本文選擇這樣一個案例來闡述CS木馬的利用手法,並以此為背景,我們來分析和探討Cobalt Strike木馬所採用的一些特殊技術如管道逃避檢測技術、DNS隧道、SMB隧道技術等。

在本攻擊案例中,國內一個紅隊在Github故意投放一些與某金融類公司相關的資訊如公司VPN登入網址、賬號和密碼等敏感資訊,以此引誘對該目標感興趣的對手團隊。登入網站為仿冒該金融類公司的釣魚網站,仿冒網站登入後會誘導對手團隊下載頁面提供的VPN客戶端,一旦對手下載並執行該客戶端,便會感染CS木馬,成為受控主機。仿冒網站見圖10。

滲透利器Cobalt Strike在野利用情況專題分析

圖10 木馬下載頁面

下載得到的VPN客戶端名稱為“vpnclient.rar”,其中包含有兩個檔案分別為“vpnclient.exe”和“wwlib.dll”,其中檔案“vpnclient.exe”為帶有微軟簽名的word2007官方程式,“wwlib.dll”檔案為word程式必載入元件,這裡被嵌入了CS木馬。這是一種利用合法白檔案+DLL劫持的手段進行攻擊的技術,此前多個組織如海蓮花等都採用過此種技術進行攻擊。

滲透利器Cobalt Strike在野利用情況專題分析

圖11 木馬傳播和執行圖

當vpnclient.exe執行後,表面上會開啟一個名為“vpnclient..docx”的word文件,而背地裡則會解密執行shellcode來下載CS的遠控模組以執行從C&C傳來的惡意指令(整個木馬的發現和執行見圖11)。經進一步深入分析,該遠控模組由beacon模板生成,其包含有豐富功能,如服務掃描、埠轉發、多模式埠監聽等功能。Cobalt Strike框架的精髓之處是攻擊者可以利用不同的通訊方式和C&C伺服器通訊,我們這裡主要介紹其比較有特色的幾個功能,分別是基於DNS協議的DNS隧道攻擊、基於SMB協議的命名管道內網攻擊和基於socks流量代理的內網攻擊。同時,Cobalt Strike框架還可以和Metasploit框架相互配合,來進行聯合的網路滲透和內網攻擊。

4.1借殼啟動

該CS木馬借用微軟官方程式來載入自己核心元件執行,透過利用白檔案和DLL劫持的方法來繞過安全檢測,以達到落地攻擊目標的目的。其中壓縮包檔案中的檔案“vpnclient.exe”可以正常繞過任意安全軟體的檢查得以執行,但是其執行後會載入同目錄下偽裝為微軟元件“wwlib.dll”的CS木馬載入器。當目標執行“vpnclient.exe”後,表面上會開啟一個名為“vpnclient..docx”的word文件(該文件是一款名為“VPN Client”程式的安裝和配置操作說明檔案,見圖12),目的是迷惑受害使用者。而背地裡,惡意程式碼則會執行“wwlib.dll”並下載執行CS遠控模組,以達到控制對手主機的目的。

滲透利器Cobalt Strike在野利用情況專題分析

圖12 用於迷惑受害使用者的文件

“wwlib.dll”惡意檔案的資原始檔包含兩部分資料,分別為名為“CODE”的shellcode和名為“WORD”的word文件(見圖13)。CS木馬執行時,一方面提取“WORD”資源並使用word軟體開啟來迷惑受害使用者,另一方面提取“CODE”資源來解密執行,下載CS遠控模組,對受害使用者實施網路攻擊。

滲透利器Cobalt Strike在野利用情況專題分析

圖13 wwlib.dll惡意檔案的資源資料

4.2 上線分析

遠控模組執行後,首先收集感染裝置資訊,準備上線。遠控模組將感染裝置的IP地址、管理員賬戶、計算機名和本程式id等資訊(見圖14)加密後作為上線包傳送到C&C伺服器。

滲透利器Cobalt Strike在野利用情況專題分析

圖14 收集裝置資訊

圖15是我們模擬C&C伺服器,使用Wireshark抓到的上線包,從該上線包中,我們可以看到加密後的資訊被偽裝成Cookie欄位,隱藏在了http協議裡面。

滲透利器Cobalt Strike在野利用情況專題分析

圖15 抓取到的上線包

命令加密後使用tcp協議傳送,部分執行結果則使用http協議進行回傳。如下是我們模擬木馬命令,使用shell dir 列出感染裝置當前目錄所抓取到的資料包。從圖16中可以看到,命令執行後的結果回傳使用了http協議。

滲透利器Cobalt Strike在野利用情況專題分析

圖16 控制命令執行後,返回的資料包

4.3 遠端控制

從CS木馬遠控模組的控制命令和相關程式碼的反彙編結果來看(見圖17),遠控模組包含多種惡意功能。主要包括螢幕截圖、鍵盤記錄、socks代理、網路和主機列舉、埠掃描、檔案上傳和下載、執行powershell命令、提權、注入會話到特定程式以及DNS隧道攻擊等(詳細的的命令和功能介紹見附錄部分)。由以上的分析可知,當對手下載並執行該偽造的“vpn客戶端”,開啟“vpn安裝配置指南”文件研究的同時,紅隊方的木馬已悄悄上線。紅隊方攻破對手內網後,能夠利用該木馬竊取對手的作戰計劃、掌握的工具和利用的漏洞等資訊,紅隊方根據掌握的這些資訊,可以有效調整自己的作戰策略和應對計劃。

滲透利器Cobalt Strike在野利用情況專題分析

圖17 控制命令和程式碼執行

5、對抗技術分析

以上攻擊案例中我們僅僅對CS木馬從落地到遠端控制的過程做了簡要分析,在更多的案例中,CS木馬還具備更加強大而豐富的安全對抗手段,如逃逸管道技術、DNS隧道、SMB隧道、Socks代理技術以及可定製的程式碼注入技術等等,這些技術手段的使用在很大程度上不但斷提高自身的成活率,增強駭客攻擊活動隱秘性,極好的保護駭客自身。本節將對CS使用到的此類技術的實現原理和機制進行詳細的分析和討論。

5.1 管道逃逸技術

CS木馬使用了管道逃逸技術來躲避安全軟體的查殺。該技術利用管道作為惡意程式碼的暫存通道,在很大程度上避免了安全軟體的查殺,透過測試驗證,該技術可以繞過很多主流防毒軟體(如360、ESET Nod32)的安全檢查。經我們的安全研究人員多次驗證,該技術截至本文撰寫時依然有效。CS木馬利用管道逃逸技術執行遠控模組的實現過程如下。

首先新起一個執行緒建立名為"\\.\pipe\MSSE-594-server"的命名管道(其中594為隨機值)如圖18,接著木馬將長度為0x34200的加密資料寫入到該命名管道中,等待後續讀取和進一步的解密,寫入的加密資料見圖19。

滲透利器Cobalt Strike在野利用情況專題分析

圖18 建立命名管道,寫入加密資料

滲透利器Cobalt Strike在野利用情況專題分析

圖19 加密資料

睡眠1024毫秒後,木馬從前面建立的命名管道中讀取加密資料,見圖20。

滲透利器Cobalt Strike在野利用情況專題分析

圖20 從命名管道讀取資料

在解密資料之前,木馬首先申請一段記憶體空間,用於存放解密後的payload,見圖21。

滲透利器Cobalt Strike在野利用情況專題分析

圖21 申請記憶體空間

木馬將讀取到的加密資料,每4個位元組為一組,依次和整形資料0x1aa64991(不同的樣本該數值會有不同)異或,異或運算後的值即為解密資料,最終解密出CS遠控模組檔案。

滲透利器Cobalt Strike在野利用情況專題分析

圖22 解密資料

透過解密後的資料可以看出,該CS遠控模組檔案為Windows平臺的PE檔案,如圖23。

滲透利器Cobalt Strike在野利用情況專題分析

圖23 CS遠控模組檔案

CS木馬在解密完遠控模組後,將遠控模組所在的記憶體屬性修改為rx,並使用函式CreateThread執行遠控模組程式碼,實現對感染機器的攻擊和遠端控制,如圖24:

滲透利器Cobalt Strike在野利用情況專題分析

圖24 啟動執行緒執行CS遠控模組

5.2 DNS隧道

DNS隧道是將其他的協議內容封裝在DNS協議中,然後利用DNS查詢過程來進行資料傳輸的技術。CS支援使用DNS隧道技術來和C&C伺服器通訊以應對複雜的網路環境。如圖25,封裝後的流量透過DNS遞迴查詢,最終到達C&C伺服器解密。同樣,來自C&C伺服器的指令也可以透過這種方式順利下發到受控端。使用DNS隧道技術可以有效躲避防火牆、IDS、IPS等傳統網路安全裝置的檢測(因為這些裝置很難做到對DNS流量的友好規則控制),大大提高了滲透測試或攻擊的隱蔽性。

滲透利器Cobalt Strike在野利用情況專題分析

圖25 DNS隧道攻擊

圖26是一個使用DNS隧道模式進行通訊的資料包,從圖中我們可以看到,控制端傳送的命令和受控端返回的流量都被隱藏在了DNS隧道中加密傳輸。

滲透利器Cobalt Strike在野利用情況專題分析

圖26 DNS隧道模式通訊的資料包

如圖27,命令執行完後,受控端將回顯資訊封裝成DNS字串,透過DNS隧道回傳給C&C伺服器。

滲透利器Cobalt Strike在野利用情況專題分析

圖27 回顯資訊加密傳輸

5.3 SMB隧道

CS支援內網主機之間使用基於SMB協議的 Beacon 來進行資料交換。這允許讓一臺受感染的計算機與 C&C 伺服器進行正常的 beacon 連線,並使內部網路上的所有其他的伺服器透過 SMB 協議與最初受感染的主機進行通訊。如圖28,在攻擊者成功攻破內網主機目標1後再進行內網橫向移動,將基於SMB的Beacon木馬植入目標2主機。這樣目標2上線後,就會透過SMB協議的命名管道和目標1通訊,目標1再透過DNS或者HTTP協議將惡意流量轉發出去。透過這樣,攻擊者可以操縱 Beacon 通訊,實現讓所有來自受感染主機的流量看起來和普通流量無異。採用這種連線方式,當安全管理人員檢測到一個二級系統有問題並進行取證分析時,他們可能會無法識別與實際攻擊相關的 C&C 伺服器域名。

滲透利器Cobalt Strike在野利用情況專題分析圖28 SMB內網滲透

圖29是內網中目標2和目標1的通訊資料包,從圖中可以看到,在完成SMB協議協商和會話後,目標2連線到了目標1的IPC$共享,然後利用該命名管道進行基於SMB協議的資料通訊。

滲透利器Cobalt Strike在野利用情況專題分析

圖29 SMB通訊資料包

5.4 Socks代理

Cobalt Strike自帶socks代理功能,在攻破組織內網後,beacon socks代理功能可以被用來對目標網路做進一步的內網滲透。如圖30,web server是一個位於內網的web伺服器,其僅為組織內部服務。目標1為內網中一臺可以訪問外網的裝置,攻擊者在拿到目標1的控制許可權後,可以在控制端開啟beacon的socks功能,然後利用proxychains等本地代理工具訪問webserver內網伺服器,對目標組織進行更加深入的滲透攻擊。

滲透利器Cobalt Strike在野利用情況專題分析

圖30 Socks代理功能

如圖31,是目標1透過beacon的socks代理轉發給攻擊者的內網伺服器流量,從圖中可以看到,攻擊者成功訪問了位於組織內部的Web Server服務。

滲透利器Cobalt Strike在野利用情況專題分析

圖31 Beacon轉發的流量

5.5 程式碼注入技術分析

在分析CS遠控模組的過程中,我們發現根據不同的上下文條件,遠控模組使用了不同的程式碼注入技術來實現遠端程式碼的注入(圖32為使用了遠端執行緒及APC注入技術)。

滲透利器Cobalt Strike在野利用情況專題分析

圖32 惡意程式碼的注入和執行

CS木馬的注入方式是非常靈活的,其可以透過配置檔案來進行靈活的配置,從官方部落格中我們就可以看到beacon模組的程式碼注入配置樣例。自從Cobalt Strike更新至3.6版本後,官方給出了一個Malleable-C2,也就是在啟動團隊伺服器的時候載入一些配置檔案,Malleable-C2配置檔案中的程式注入塊(process-inject block)決定了程式注入行為的內容並且控制程式注入行為。

滲透利器Cobalt Strike在野利用情況專題分析

圖33 process-inject block

程式注入塊是圍繞程式注入流程的生命週期組織的,分為以下4步:

滲透利器Cobalt Strike在野利用情況專題分析

圖34 程式注入流程

第一步是隱式的,如果生成一個臨時程式,例如後開發工作(post-exploitation job),實際上已經有了對遠端程式進行操作的控制程式碼。如果要對現有的遠端程式注入程式碼,惡意payload會使用OpenProcess函式。

對於第二步和第三步,惡意payload有兩個選擇來分配遠端程式中的記憶體並將資料複製到其中。第一個選擇是經典的VirtualAllocEx->WriteProcessMemory模式,另一個選擇是CreateFileMapping->MapViewOfFile->NtMapViewOfSection模式。

第四步,這一步之前,要注入的內容已經複製到了遠端程式當中,這一步需要做的就是執行這些內容,這就是process-inject->execute塊的作用。執行塊控制著惡意payload注入程式碼到程式的方法,惡意payload檢查執行塊中的每個選項,以確定該選項是否可用於當前上下文,在方法可用時嘗試該方法,如果沒有執行程式碼,則繼續執行下一個選項。可以看到,執行塊中的執行選項包括“CreateThread”、CreateRemoteThread、NtQueueApcThread、NtQueueApcThread‑s、RtlCreateUserThread等函式。

CreateThread和CreateRemoteThread函式有一些變體,這些變體使用另一個函式的地址生成一個掛起的執行緒,更新掛起的執行緒以執行注入的程式碼,並恢復該執行緒。使用[function]”module!function+0x##”指定要欺騙的起始地址。對於遠端程式,多使用ntdll和kernel32模組。可選的0x##部分是新增到起始地址的偏移量。這些變體只適用於x86到x86和x64到x64注入。

SetThreadContext和NtQueueApcThread-s函式特定於為惡意payload的後開發作業(Post Exploitation Jobs)啟動臨時程式。這些函式會掛起程式的主執行緒,並使用它執行被注入的後開發惡意功能。

NtQueueApcThread、RtlCreateUserThread和CreateRemoteThread是向遠端程式注入程式碼的常用函式。RtlCreateUserThread函式有一個用於x86到x64注入的實現變體。CreateRemoteThread和RtlCreateUserThread都處理x64到x86注入。所有其他函式包括x86到x86和x64到x64的注入。

Post Exploitation Jobs-很多Cobalt Strike的後開發(post-exploitation)特性(比如螢幕截圖、鍵盤記錄、雜湊儲存等)被實現為Windows的dll。為了執行這些特性,Cobalt Strike生成一個臨時程式,並將這些功能注入其中,程式控制塊(process-inject block)控制這一程式注入步驟。後開發控制塊(post-ex block)(見圖35)則控制Cobalt Strike後開發特性的特定內容和行為。

滲透利器Cobalt Strike在野利用情況專題分析

圖35 post-ex block

下圖是我們的研究人員在搭建的Cobalt Strike攻擊環境後,執行惡意命令,受害機器程式的監控情況,從圖中可以看到,每當執行一個截圖命令或者“spawn”等“後滲透”相關命令,在受害機器上都會新起一個rundll32程式和攻擊伺服器通訊。

滲透利器Cobalt Strike在野利用情況專題分析

圖36 後滲透相關功能

6、總結

本文揭秘了Cobalt Strike框架的在野使用情況並深入介紹了相關木馬的核心技術。Cobalt Strike使用者遍佈全球,不論是APT組織還是紅隊人員,都被該框架出色的易用性、可擴充套件性以及隱匿性所吸引。我們也觀察到幾類現象,一是越來越多的攻擊者開始選擇商業軟體作為攻擊武器,一方面能夠降低程式碼被溯源的可能性,另一方面也可以有效降低攻擊成本;二是攻擊者越發重視自身的隱蔽性,大量採用了域名仿造、CDN、域前置、DNS隧道、流量偽裝等技術對抗檢測,而Cobalt Strike框架本身在通訊隱匿方面具有很大的優勢,其不僅提供了http、https、dns、smb等多種主流上線協議,還支援自定義通訊流量特徵,這也促成了其在全世界的廣泛流行;三是目前主流的威脅情報平臺和檢測防禦系統面臨越來越大的壓力,在面對Cobalt Strike這類隱匿方式多樣、對抗手段豐富的攻擊武器時,大量未知的APT攻擊難以被發現和披露,這也需要持續加強深度有效的特徵指紋、流量分析和關聯分析等能力,以應對越來越複雜的網路攻擊活動。

    無論怎樣,惡意攻擊的關鍵步驟是傳播和落地,防重於治,在惡意攻擊造成嚴重損失後再去修補漏洞顯然只是無奈的選擇,安全管理最重要的還是對人的管理,需要從源頭把好關、“治病於未病”。因此,不管是對於企業還是個人,都應該加強安全意識,不要輕易開啟未知來源的郵件和附件,不輕易點選未知連結,不開啟不可靠的文件,不執行未知的程式,及時更新系統補丁和應用程式,守住我們的系統和資料安全。

7、附錄

beacon命令列表

滲透利器Cobalt Strike在野利用情況專題分析

8、參考

https://blog.fox-it.com/2019/02/26/identifying-cobalt-strike-team-servers-in-the-wild/

https://blog.cobaltstrike.com/category/cobalt-strike-2/



滲透利器Cobalt Strike在野利用情況專題分析

相關文章