Cobalt Strike合法證書實現ssl加密通訊
STATEMENT
聲明
由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
NO.1 cs通訊介紹
在紅藍對抗中,防守方往往會有很多的設備審計流量。Cobalt Strike 服務端和客戶端是通過SSL加密通訊的(默認證書對cobaltstrike.store),默認情況下的SSL配置文件和代理配置文件導致keystore文件內容被用于防火墻識別及特征識別。并且默認配置的SSL證書對不是合法的無法使用HTTPS Beacon,實則HTTPS Beacon的流量還是明文傳輸的。
NO.2 keystore介紹
2.1 keystore文件
keystore是java的密鑰庫,用來進行通信加密,如數字簽名。keystore就是用來保存密鑰對的,公鑰和私鑰。Keystore可理解為一個數據庫,可以存放很多個組數據。
每組數據主要包含以下兩種數據:
密鑰實體 --- 密鑰(secret key)又或者私鑰和配對公鑰(采用非對稱加密)
可信任的證書實體 --- 只包含公鑰
2.2 keytool生成證書對
Keytool是一個java數據證書的管理工具,Keytool可以將密鑰和證書存放在keystore的文件中,形成后綴為.store文件的證書對。
查看cs默認證書文件:
keytool -list -v -keystore cobaltstrike.store

NO.3 生成合法證書
申請SSL證書
準備一個域名(https://sg.godaddy.com/),
添加A記錄指向自己的vps

申請ssl證書(https://freessl.cn/)
CSR選擇->瀏覽器生成,然后點擊創建

會生成一個TXT記錄,然后前往域名配置中去添加一條TXT記錄規則
注:TXT記錄,也可以稱之為SPF記錄。指為主機名或域名進行配置說明。一般常見于郵箱域名,是非常高效的垃圾郵件解決方案。接收方郵件方會首先檢查域名的SPF記錄,來確定發件人的IP地址是不是被包含在SPF記錄里面。


TXT記錄解析記錄配置成功后,可以使用nslookup命令檢測TXT配置是否成功

配置成功后,下載SSL證書文件


生成keystore文件
使用openssl將pem證書和key私鑰導出為P12格式的證書
openssl pkcs12 -export -in pem證書 -inkey key私鑰 -out p12文件 -name 域名 -passout pass:密碼
openssl pkcs12 -export -in full_chain.pem -inkey private.key -out baidu.p12 -name baidu.xyz -passout pass:123456
使用keytool生成store格式的證書對
keytool -importkeystore -deststorepass pass -destkeypass pass -destkeystore store文件 -srckeystore P12格式證書 -srcstoretype PKCS12 -srcstorepass pass -alias 域名
keytool -importkeystore -deststorepass mypass -destkeypass mypass -destkeystore baidu.store -srckeystore spoofdomain.p12 -srcstoretype PKCS12 -srcstorepass mypass -alias baidu.xyz
NO.4 cs啟用合法證書
4.1 cs證書配置
cs啟動的時候會加載一個默認的配置文件,里面配置了證書文件,證書密碼,心跳時間等。配置文件中還可以自己修改特定的請求和響應,可以分析一些百度、谷歌這種網站的請求來修改,讓cs的通信在流量中看起來更像合法的請求。要在teamserver使用另外的keystore證書文件,還需要重新寫個配置文件(profile)引用證書。
CS profile文件地址:
https://github.com/rsmudge/Malleable-C2-Profiles/
https Beacon的證書配置如下:
https-certificate { set keystore “store文件”; set password “密碼”;}

修改完成后,可以用自帶的c2lint檢查配置文件是否正確,只要不報錯就可以正常使用

最后還需要修改teamserver文件,把證書文件和密碼修改為自己生成的。也可以修改端口號,50050端口也是cs的特征

4.2 cs上線測試
全部修改完成后,使用命令啟動teamserver
./teamserver ip pass baidu.profile
啟動后創建監聽, HTTPS Hosts、HTTPS Host(Stager)、HTTPS Host Header字段都填入自己的域名,配置powershell上線,勾選Enable SSL選項
https監聽器:

利用script web模塊生成powershell payload

上線成功

直接訪問payload下載地址(web),瀏覽器標記證書有效,https協議傳輸

查看目標與cs的通訊過程,目標與服務端的通訊使用https協議傳輸。在原有的基礎上加了一層ssl安全套接字進行加密:

NO.5 參考文檔
http://blog.leanote.com/post/snowming/6a724671de78
https://mp.weixin.qq.com/s/sYfvD0XQqi6BFw70_jrv5Q
征稿通知
知識應該被分享,安全更需攜手共進
征稿持續進行中!愿意分享知識經驗的小伙伴們可以把自己的知識沉淀稿件投稿至郵箱:
yujing.gong@dbappsecurity.com.cn
稿件一經發布將有豐厚的稿費!
有任何疑問請添加微信:_WOXIANGJJ 咨詢哦~