- 工具介紹
Covenant是一個基于.NET的開源C2服務器,可以通過HTTP/HTTPS 控制Covenant agent,從而實現對目標的遠程控制。Covenant agent在與C2通信時,使用base64/AES加密載荷的HTTP隧道構建加密通道。亦可選擇使用SSL/TLS標準加密協議,但需自行準備證書,此工具并沒有C&C服務端默認SSL證書。
- 工具原理分析
- 工作流程
利用Covenant C2工具進行一次完整建聯包含3個階段,流程如下圖所示:
- 階段1:
被控制端主動連接控制端,并使用GET方法請求默認的url:/en-us/index.html、/en-us/docs.html、/en-us/test.html其中之一來判斷控制端是否存活。
- 階段2:
控制端會將特定內容”Hello World”返回給被控制端。
- 階段3:
當建立連接成功后,被控制端會使用POST方法請求默認url:/en-us/index.html、/en-us/docs.html、/en-us/test.html其中之一,并將受控目標的GUID、Type、HMAC等數據加密發送給控制端。
相關固定配置如下圖所示:
圖1:DefaultHttpProfile.yaml配置文件
- HTTP流量分析
被控制端與控制端一次完整的上線通信相關流量分析如下:
- 階段1:
圖2:上線包
木馬運行后,第一次請求的url是配置文件中默認提供的。
- 階段2:
上線包中返回體中,控制端返回了特定內容Hello World給被控制端,特定內容Hello World也是配置文件中默認提供的。
- 階段3:
圖3:連接成功
連接成功后,被控制端主動將GUID、Type、IV、EncryptedMessage、HMAC一組固定的數據發送給控制端,并且數據經過加密后放在POST請求的data字段中,url同上線包一樣是默認提供的;服務端返回的數據,同樣加密后放到返回包body標簽中,在第二個Hello World字符串后進行傳輸。對其進行解密,看到傳輸內容如下圖所示:
圖4:解密
上述解密內容中GUID為token;Type為生成木馬時在木馬樣本中定義好的數值,當發送第一個POST請求包時Type為0,返回包Type為1,后續通信該值一直為1;Meta無特殊含義值為空;IV為AES加密的初始向量;EncryptedMessage為AES加密傳輸的消息;HMAC為消息驗證碼,對AES-key與EncryptedMessage進行消息驗證,確保完整性。
其中AES的密鑰AES-key在生成木馬時隨機產生,并硬編碼在木馬樣本中,如下圖:
圖5:AES-key
加密過程如下圖:
圖6:加密過程
心跳包使用的url也是在配置文件DefaultHttpProfile.yaml中定義,默認為/en-us/index.html、/en-us/docs.html、/en-us/test.html其中之一,心跳時間與抖動時間在創建木馬時可自定義設置,默認心跳為5秒、抖動時間為10秒,與階段一中上線包區別為:心跳包會在Cookie中傳遞由服務端確定好的GUID(token值),如下圖:
圖7:心跳包
- HTTPS流量分析
Covenant C2服務端提供了WEB服務,有前端界面,方便使用,其WEB服務界面如下:
圖8:WEB前端界面
當啟動服務端后,其WEB服務使用HTTPS協議,并且WEB服務使用固定TCP端口7443以及默認證書,如下圖:
圖9:WEB服務默認端口
圖10:WEB服務默認證書
生成木馬時,C&C通信方式也可以選擇HTTPS加密,由于Covenant C2工具不提供agent與C2服務端之間通信的默認SSL證書,所以此工具的HTTPS模式需要自行生成并配置證書。
- 工具檢測
雖然此工具的心跳是自定義的,但值是固定整數值,不能中途更改,其工具的心跳存在周期性,并且其web服務使用固定服務端口7443以及默認證書,可通過證書指紋、機器學習模型以及多流行為檢測此工具的HTTPS模式C&C通信流量。
根據分析結果,我們通過利用行為檢測引擎,實現了對Covenant C2工具的有效檢測。
圖11:Covenant C2檢出結果
- 總結
利用Covenant C2工具進行C&C通信,攻擊者可以將通信內容加密從而規避傳統明文流量設備的檢測,但是基于人工智能、流行為特征和TLS限定域指紋檢測的加密威脅智能檢測系統能夠檢測此類加密通信行為。如今,越來越多的攻擊者采用加密通信的C2工具,以提升攻擊的隱蔽性。觀成科技安全研究團隊持續追蹤這些C2工具的最新動態,積極研究和更新針對加密流量的檢測技術。