您好,登錄后才能下訂單哦!
如何識別惡意Cobalt Strike服務(wù)器,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
Cobalt Strike是一個(gè)滲透平臺,供安全專業(yè)人員用于模擬高級黑客的定向攻擊和后滲透行動(dòng)。該工具由總部位于華盛頓的Strategic Cyber LLC公司開發(fā)并授權(quán),該公司對該工具的非法使用受到監(jiān)管,并受到出口管制。盡管如此,Cobalt Strike框架已經(jīng)成為該類軟件中的最熱門的選擇,其中包括Metasploit Pro、Core Impact等其他付費(fèi)套件。在這類平臺中,雖然Cobalt Strike并不是唯一一個(gè)被盜版用戶和網(wǎng)絡(luò)罪犯使用的平臺,但其已經(jīng)被各種包括APT32在內(nèi)的威脅集團(tuán)使用,他們使用該工具進(jìn)行初步滲透,而以同名命名的Cobalt集團(tuán)也嚴(yán)重依賴該框架。
考慮到安全測試人員,更重要的是惡意攻擊者,大量使用Cobalt Strike平臺,識別Cobalt Strike服務(wù)器連接到企業(yè)網(wǎng)絡(luò)資產(chǎn)的必要性是顯而易見的。
盡管檢測方法已經(jīng)公開,但仍由大量的Cobalt Strike服務(wù)器并沒有打補(bǔ)丁,允許指紋識別和后續(xù)其他方式的探測。通過對在野的Cobalt Strike服務(wù)器取樣,并比較指紋識別的方法以幫助防御者更好地跟蹤和監(jiān)控該框架。追蹤C(jī)obalt Strike服務(wù)器可以幫助紅隊(duì)探測沒有修改Cobalt Strike默認(rèn)配置藍(lán)隊(duì)的活動(dòng)。
盡管補(bǔ)丁使得特定的指紋識別方法更加困難,Cobalt Strike服務(wù)器仍然相當(dāng)暴露,相對容易被發(fā)現(xiàn)。許多Cobalt Strike服務(wù)器在補(bǔ)丁發(fā)布之前沒有更新他們的系統(tǒng),而新部署的使用了升級后的軟件。
最近和部署的Cobalt Strike服務(wù)器更有可能部署更新的Cobalt Stike版本(超過3.12),同時(shí)繼續(xù)使用默認(rèn)的TLS證書,因此這仍然是一個(gè)可靠的檢測機(jī)制。
當(dāng)前Cobalt Strike服務(wù)器與歷史威脅活動(dòng)相比,大部分惡意和中立用戶似乎都是用了默認(rèn)的、未補(bǔ)丁的Cobalt Stike配置,也許是為了兼容其他Cobalt Stike服務(wù)器,或者僅僅因?yàn)槟J(rèn)設(shè)置運(yùn)行良好因此使用者懶得改動(dòng)什么東西。
對Cobalt Strike服務(wù)器的探測可以幫助防御者在其企業(yè)網(wǎng)絡(luò)中建立預(yù)警機(jī)制,先于藍(lán)隊(duì)先發(fā)制人。
2019年2月19日,Strategic Cyber LLC發(fā)布了Cobalt Strike Team Server Population Study。該研究的部分目的是調(diào)查Cobalt Strike軟件的許可狀態(tài),并識別和分析對當(dāng)前使用的軟件版本所做的重大更改。
該研究確認(rèn)了多種方法用于識別在野的Cobalt Stike服務(wù)器:
Cobalt Strike服務(wù)器附帶默認(rèn)的安全證書,除非管理員修改了默認(rèn)證書,否則可以使用該默認(rèn)證書進(jìn)行指紋識別:
SHA256: 87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c
Serial Number: 146473198
當(dāng)啟用時(shí),Cobalt Strike DNS服務(wù)器會響應(yīng)任何DNS請求與bogon(假)IP:0.0.0.0 (這并不是CS服務(wù)器獨(dú)有的特征)
Cobalt Strike服務(wù)器的默認(rèn)控制端口是50050/TCP,這個(gè)端口在其他服務(wù)器上大部分不會打開。
Cobalt Strike服務(wù)器的”404 Not Found“ HTTP響應(yīng)與NanoHTTPDweb服務(wù)器不同,并且能被探測到。
總的來說,上面列表中最可靠的方法是使用默認(rèn)安全證書對Cobalt Strike服務(wù)器進(jìn)行指紋識別。其余的檢測方法不太確定,所有方法與其他方法相互印證后都具有較高的置信度。例如,任何使用50050端口、同時(shí)提供NanoHTTP web服務(wù)器特有的HTTP響應(yīng)的服務(wù)器都更像是Cobalt Strike服務(wù)器,而不是僅顯示HTTP響應(yīng)簽名的服務(wù)器。
Cobalt Strike服務(wù)器基于NanoHTTPD,于2012年首次發(fā)布。NanoHTTPD是一個(gè)基于java的開源web服務(wù)器框架。NanoHTTPD服務(wù)器響應(yīng)中包含一個(gè)額外的空字節(jié):"HTTP/1.1"后面是一個(gè)空字節(jié)(0x20),而在其他web服務(wù)器響應(yīng)中不存在這個(gè)空字節(jié)。
2019年1月2日, Cobalt Strike 3.13版發(fā)布。Cobalt Strike發(fā)布的聲明指出,與以前的版本相比,其中一個(gè)變化是“從HTTP狀態(tài)響應(yīng)中刪除了無關(guān)的空字節(jié)”。
任何來自3.13之前的Cobalt Strike服務(wù)器的HTTP響應(yīng)都包含這個(gè)空字節(jié),可以使用掃描器檢索HTTP響應(yīng)來搜索它們。也可以手動(dòng)對Cobalt Strike服務(wù)器的連接抓包,可以很容易看到這個(gè)額外的空位。由于運(yùn)行破解版本的Cobalt Strike實(shí)例沒有更新或打補(bǔ)丁,這種方法增加了發(fā)現(xiàn)惡意Cobalt Strike服務(wù)器的可能性。
安全公司Fox-IT于2019年2月26日發(fā)布了關(guān)于Cobalt Strike服務(wù)器的研究,該研究不僅提供了細(xì)節(jié)和如何識別3.13版本之前的服務(wù)器(對應(yīng)HTTP響應(yīng)中額外的空字符),還包括從Rapid7公開數(shù)據(jù)中從2015到2019年使用該檢測方法發(fā)現(xiàn)的超過7000 Cobalt Strike 主機(jī)IP列表。
類似的,2019年2月27日,知道創(chuàng)宇安全研究團(tuán)隊(duì)發(fā)表了一篇博客,詳細(xì)介紹了他們使用Strategic Cyber LLC報(bào)告的NanoHTTPD 404 Not Found響應(yīng)異常以及空字節(jié)異常來識別Cobalt Strike服務(wù)器。他們在ZoomEye的數(shù)據(jù)中發(fā)現(xiàn)的服務(wù)器更少,但仍然超過了3000臺。知道創(chuàng)宇報(bào)告稱,構(gòu)建Cobalt Strike的開源NanoHTTPD代碼響應(yīng)方式如下:
HTTP/1.1 404 Not Found Content-Type: text/plain Date: Day, DD Mmm YYYY HH:MM:SS GMT Content-Length: 0
知道創(chuàng)宇的檢測邏輯就是基于這一發(fā)現(xiàn)。然而他們隨后還觀察到HTTP響應(yīng)中的順序?qū)嶋H上可能不同,在一些Cobalt Strike系統(tǒng)的響應(yīng)中"Content-Type"在"Date"之后顯示。
對于由詳細(xì)網(wǎng)絡(luò)流量數(shù)據(jù)的用戶,JA3是一種更可靠的發(fā)現(xiàn)Cobalt Strike服務(wù)器的方法。由三位Salesforce研究員開發(fā)的開源JA3項(xiàng)目,可以通過對服務(wù)器和客戶端之間的TLS協(xié)商進(jìn)行指紋識別來檢測可疑的HTTPS瀏覽。TLS/SSL版本、可接受的加密套件和elliptic curve細(xì)節(jié)(如elliptic curve point格式)可以被做成指紋,就像瀏覽器可以被其他版本、附加組件和特定于該瀏覽器的其他特性指紋一樣。
JA3簽名用于客戶端,而JA3S簽名用于服務(wù)器。在Cobalt Strike的案例中,Client beacon(使用Windows套接字來發(fā)起通信)和運(yùn)行在Kali Linux上的Cobalt Strike服務(wù)器的TLS協(xié)商已經(jīng)有了指紋。這些指紋需要一起使用才能可靠地發(fā)現(xiàn)Cobalt Strike服務(wù)器。盡管Cobalt Strike使用者可以通過重定向來部分避開這種檢測,但許多Cobalt Strike服務(wù)器并不使用這種代理。
JA3和JA3S簽名可以與Zeek/Bro和Suricata等工具一起使用。來自這些網(wǎng)絡(luò)檢測工具的數(shù)據(jù)可以隨后輸入到諸如Splunk這樣的SIEM中。JA3和JA3S的簽名可以從Salesforce’s Github account和其他sources獲得。
Cobalt Strike默認(rèn)的SSL/TLS證書是固定的,所以一般都是使用這個(gè)證書作為特征值來發(fā)現(xiàn)Cobalt Strike服務(wù)器,服務(wù)端傳給客戶端的SSL默認(rèn)證書有很明顯的特征:
C=Earth,ST=Cyberspace,L=Somewhere,O=CobaltStrike,OU=AdvancedPenTesting,CN=Major CobaltStrike
JA3方法用于收集Client Hello數(shù)據(jù)包中以下字段的十進(jìn)制字節(jié)值:版本、可接受的密碼、擴(kuò)展列表、橢圓曲線密碼和橢圓曲線密碼格式。然后將這些值串聯(lián)到一起,在使用“,”分割開各個(gè)字段,同時(shí)用“-”來分隔各個(gè)字段中的各個(gè)值。
這些字段的順序如下:TLS版本信息、可接受的密碼、擴(kuò)展列表、橢圓曲線密碼和橢圓曲線密碼格式。
用CobaltStrike4.1的連接流量舉例。
771,49188-49192-61-49190-49194-107-106-49162-49172-53-49157-49167-57-56-49187-49191-60-49189-49193-103-64-49161-49171-47-49156-49166-51-50-49196-49195-49200-157-49198-49202-159-163-49199-156-49197-49201-158-162,67,,11-2-256(如果無上述字段,則這些字段的值為空)
然后會計(jì)算這些字符串的MD5哈希值,以生成易于使用和共享的長度為32字符的指紋,他們就是JA3 TLS客戶端的指紋。比如上述CobaltStrike4.1客戶端指紋:fa704723a210632b2ff9ad03be418651
創(chuàng)建JA3后,就可以使用同樣的方式對TLS的服務(wù)端進(jìn)行指紋識別,即對TLS Server Hello信息進(jìn)行指紋識別。JA3S會收集Server Hello數(shù)據(jù)包中以下各個(gè)字段的十進(jìn)制字節(jié)值:版本、可接受的加密算法和擴(kuò)展列表,然后將這些值串聯(lián)起來,使用“,”來分隔各個(gè)字段,使用“-”分隔每個(gè)字段中的各個(gè)值。
這些字段的順序如下:TLS版本信息、可接受的密碼、擴(kuò)展列表
CobaltStrike4.1的服務(wù)端:771,49192,9-------->5513ab2983a0db88fadd353de0341e7c
同一臺服務(wù)器會根據(jù)Client Hello信息機(jī)器內(nèi)容以不同的方式創(chuàng)建Server Hello消息,因此這里不能跟JA3那樣,僅僅根據(jù)服務(wù)器的Hello消息來對其進(jìn)行指紋識別。盡管服務(wù)器對不同客戶端的響應(yīng)不同,但是他們對同一客戶端的響應(yīng)總是一致的。
比如:客戶端正在發(fā)送TLS Client Hello數(shù)據(jù)包,其中數(shù)據(jù)都是A。因此,服務(wù)器會的響應(yīng)的內(nèi)容也是由A構(gòu)成,并將始終用A來提供同樣的響應(yīng)。與此同時(shí),另一個(gè)客戶端也在發(fā)送數(shù)據(jù)包,并且內(nèi)容都是B。類似的,服務(wù)器現(xiàn)在會用B進(jìn)行響應(yīng),并且總是用B組成的B串進(jìn)行響應(yīng)。可以看到,對于不同的客戶端,服務(wù)器會給予不同的響應(yīng),但是對于每個(gè)客戶端來說,總是以相同的方式進(jìn)行相應(yīng)。
在這個(gè)日志輸出中,JA3位于左側(cè),JA3S位于右側(cè),使用同一客戶端與同一服務(wù)器交互了4次。然后,再次使用不同的客戶端進(jìn)行了4次以上的交互。不難發(fā)現(xiàn),服務(wù)器的響應(yīng)方式對于同一客戶端總是相同的,但對于不同的客戶端卻是不同的。
例如,MetaSploit 的 Meterpreter 和 CobaltStrike(并非4.1版本) 的 Beacon 都使用 Windows 套接字來啟動(dòng) TLS 通信。在 Windows 10 上,JA3=72a589da586844d7f0818ce684948eea(指定 IP 地址),JA3=a0e9f5d64349fb13191bc781f81f42e1(指定域名)。由于 Windows 上的其他普普通通的應(yīng)用程序也使用相同的套接字,因此,我們很難識別其中的惡意通信。但是,Kali Linux 上的 C2 服務(wù)器對該客戶端應(yīng)用程序的響應(yīng)方式與 Internet 上的普通服務(wù)器對該套接字的響應(yīng)方式相比來說是獨(dú)一無二的。盡管服務(wù)器對不同客戶端的響應(yīng)不同,但它們對同一客戶端的響應(yīng)總是一致的。因此,如果結(jié)合 ja3+ja3s,就能夠識別這種惡意通信,而不用考慮目的地 IP、域名或證書等細(xì)節(jié)信息。
近期,Salesforce研究人員發(fā)布了一篇名為Easily Identify Malicious Servers on the Internet with JARM的文章,并在github上發(fā)布了一個(gè)JARM掃描工具,相關(guān)內(nèi)容引起了國外部分研究人員的討論。
JARM是一個(gè)主動(dòng)TLS服務(wù)端指紋工具,主要用途如下:
快速驗(yàn)證一組TLS服務(wù)器是否使用相同的TLS配置;
通過TLS配置劃分TLS服務(wù)器,并識別可能歸屬的公司;
識別網(wǎng)站默認(rèn)的應(yīng)用或基礎(chǔ)架構(gòu);
識別惡意軟件C&C控制節(jié)點(diǎn),以及其他惡意服務(wù)器。
JARM的核心在于:TLS Server根據(jù)TLS Client Hello中參數(shù)的不同,返回不同的Server Hello數(shù)據(jù)包。而Client Hello的參數(shù)可以人為指定修改,因此通過發(fā)送多個(gè)精心構(gòu)造的Client Hello獲取其對應(yīng)的特殊Server Hello,最終形成TLS Server的指紋。具體能夠產(chǎn)生影響的參數(shù)包括但不限于:
操作系統(tǒng)及其版本
OpenSSL等第三方庫及其版本
第三方庫的調(diào)用順序
用戶自定義配置
……
而前文提到,TLS服務(wù)器對不同客戶端的響應(yīng)不同,但是他們對同一客戶端的響應(yīng)總是一致的。因此不能跟JA3那樣,僅僅根據(jù)JA3S對服務(wù)器進(jìn)行指紋識別。
而JARM采取了一種類似fuzz的方式,主動(dòng)向TLS服務(wù)器發(fā)送10個(gè)TLS Hello數(shù)據(jù)包并對Server Hello中的特定字段進(jìn)行分析,以特定方式對10個(gè)TLS服務(wù)器響應(yīng)進(jìn)行哈希處理,最終生成JARM指紋。
JARM中的10個(gè)TLS客戶端Hello數(shù)據(jù)包經(jīng)過特殊設(shè)計(jì),目的就是提取TLS服務(wù)器中的唯一響應(yīng)。例如:
JARM以不同的順序發(fā)送不同的TLS版本,密碼和擴(kuò)展;
TLS Clint將密碼從最弱到最強(qiáng)排序,TLS Server將選擇哪種密碼?
……
總之JARM與我們在進(jìn)行流量分析威脅時(shí)常用的JA3、JA3/S不同:
JA3、JA3/S主要基于流量,服務(wù)器面對不同客戶端產(chǎn)生不同的JA3S指紋。
JARM則是完全主動(dòng)的掃描并生成指紋,服務(wù)器可以生產(chǎn)唯一的JARM指紋。
在Easily Identify Malicious Servers on the Internet with JARM原文中,作者給出了一份C2和JARM對應(yīng)的清單:
Malicious Server C2 | JARM Fingerprint | Overlap with Alexa Top 1M |
---|---|---|
Trickbot | 22b22b09b22b22b22b22b22b22b22b352842cd5d6b0278445702035e06875c | 0 |
AsyncRAT | 1dd40d40d00040d1dc1dd40d1dd40d3df2d6a0c2caaa0dc59908f0d3602943 | 0 |
Metasploit | 07d14d16d21d21d00042d43d000000aa99ce74e2c6d013c745aa52b5cc042d | 0 |
Cobalt Strike | 07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1 | 0 |
Merlin C2 | 29d21b20d29d29d21c41d21b21b41d494e0df9532e75299f15ba73156cee38 | 303 |
在理想情況下如果JARM與C2唯一對應(yīng),那么我們就多了一種主動(dòng)發(fā)現(xiàn)C2節(jié)點(diǎn)的特征。
然而,360Quake團(tuán)隊(duì)在驗(yàn)證時(shí),搜索Cobalt Strike對應(yīng)的JARM發(fā)現(xiàn)了2338個(gè)獨(dú)立IP,但TOP5的應(yīng)用為:
應(yīng)用 | 數(shù)量 |
---|---|
Cobalt Strike團(tuán)隊(duì)服務(wù)器 | 1,137 |
CobaltStrike-Beacon服務(wù)端 | 373 |
Tomcat-Web服務(wù)器 | 40 |
Weblogic應(yīng)用服務(wù)器 | 21 |
WordPressCMS博客系統(tǒng) | 14 |
可以看到和上面CobaltStrike相同JARM的還有 Tomcat、Weblogic和WordPress等開啟TLS的Web應(yīng)用,也就是說CobaltStrike這個(gè)應(yīng)用只是該JARM對應(yīng)TLS服務(wù)器其中的一個(gè)子集。
而在之后的驗(yàn)證中發(fā)現(xiàn),JARM指紋與上層應(yīng)用無強(qiáng)關(guān)聯(lián)性,使用相同JDK的Tomcat和Cobalt Strike擁有相同的JARM指紋,這也解釋了為什么會有那么多的Weblogic和Tomcat應(yīng)用被識別出來了。
因此不能直接通過JARM去判定CobaltStrike;同樣,對于CobaltStrike而言JARM也并不唯一,其JARM與不同JDK環(huán)境下TLS服務(wù)有關(guān)。JARM僅僅是一種TLS服務(wù)端特征的標(biāo)識方式,只能作為一個(gè)輔助手段,不能完全被用作Web上層應(yīng)用的唯一指紋。
看完上述內(nèi)容,你們掌握如何識別惡意Cobalt Strike服務(wù)器的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。