Cobalt Strike特徵性資訊修改玩轉防火牆裝置
0x00 前言
Cobalt Strike 服務端和客戶端是通過 SSL 加密通訊的,由於SSL配置檔案和代理配置檔案由於預設配置導致keystore檔案內容通常被用於防火牆識別。
後滲透中經常使用到CS,從兩方面講:一方面是內網裝置對流量的管控十分嚴格,如果不對CS特徵進行修改,很容易就被內網裝置抓到,進行溯源或者直接封掉IP,間接涼西皮;另外一方面主要還是為了保證攻擊隊隊員計算機的安全,防止被攻擊隊反制,前段時間看到大佬寫的反制CS低版本尤為吊,所以呢,為了防止涼犢子,改了最好。不然的話,你有你的魚,同時你是我的漁。
0x01 針對特徵性資訊修改
- 埠號修改
- 指紋修改
- SSL證書修改
0x02 埠號和SSL證書指紋資訊修改
首先看一下預設的配置情況:
因為今天看了好多文章,也來總結下,印象比較深的就是根據墨森寫的,獲取權威性證書,仿造資訊進行修改,當然我覺得這裡土豪隨意,完全可以去買一個證書進行繫結。先將原來的store檔案刪除掉,然後修改teamserver檔案。(先備份好),以為通過teamserver進行掛載伺服器端的時候,會生成store檔案。
埠號和SSL證書指紋資訊修改:
print_info "Generating X509 certificate and keystore (for SSL)" keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias Microsec.com -dname "CN=Microsec e-Szigno Root CA, OU=e-Szigno CA, O=Microsec Ltd., L=Budapest, S=HU, C=HU" java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50314 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=123456 -server -XX:+AggressiveHeap -XX:+UseParallelGC -classpath ./cobaltstrike.jar
通過生成的證書資訊前後進行對比,能發現明顯差別,cobaltstrike.store檔案
0x03 建立新的CobaltStrike.store
有的時候為了方便起見,我們可以直接進行證書指紋的修改,這邊使用常用的工具keytool進行修改,操作簡單。Keytool是一個Java資料證書的管理工具,Keytool將金鑰(key)和證書(certificates)存在一個稱為keystore的檔案中,即store字尾檔案中。
命令: ‐certreq 生成證書請求 ‐changealias更改條目的別名 ‐delete 刪除條目 ‐exportcert匯出證書 ‐genkeypair生成金鑰對 ‐genseckey生成金鑰 ‐gencert 根據證書請求生成證書 ‐importcert 匯入證書或證書鏈 ‐importpass 匯入口令 ‐importkeystore從其他金鑰庫匯入一個或所有條目 ‐keypasswd更改條目的金鑰口令 ‐list列出金鑰庫中的條目 ‐printcert列印證書內容 ‐printcertreq列印證書請求的內容 ‐printcrl列印CRL檔案的內容 ‐storepasswd更改金鑰庫的儲存口令
keystore是java的金鑰庫,用來進行通訊加密,如數字簽名。keystore就是用來保
存金鑰對的,公鑰和私鑰。Keystore可理解為一個數據庫,可以存放很多個組資料。
每組資料主要包含以下兩種資料:
1.密匙實體–密匙(secret key)又或者私鑰和配對公鑰(採用非對稱加密)
2.可信任的證書實體–只包含公鑰
通過keytool檢視CobaltStrike預設store檔案
keytool‐list‐v‐keystorecobaltstrike.store
以上預設CobaltStrike特徵,特徵十分明顯,為了掩蓋預設SSL證書存在的特徵,需要重新建立一個新的不一樣的證書 。使用以下命令建立證書:
keytool‐keystorecobaltstrike.store‐storepass密碼‐keypass密碼‐genkey‐key
algRSA‐aliasgoogle.com‐dname"CN=(名字與姓氏),OU=(組織單位名稱),O=(組織名
稱),L=(城市或區域名稱),ST=(州或省份名稱),C=(單位的兩字母國家程式碼)"
‐alias 指定別名
‐storepass pass 和 ‐keypass pass 指定金鑰
‐keyalg 指定演算法
‐dname 指定所有者資訊
刪除 CobaltStrike 自帶的cobaltstrike.store,使用以下命令生成一個新的 cobaltstrike.store即
可!然後客戶端連線即可。
keytool‐keystorecobaltstrike.store‐storepass123456‐keypass123456‐gen
key‐keyalgRSA‐aliasbaidu.com‐dname"CN=(名字與姓氏),OU=(組織單位名稱),
O=(組織名稱),L=(城市或區域名稱),ST=(州或省份名稱),C=(單位的兩字母國家程式碼)"
keytool‐importkeystore‐srckeystorecobaltstrike.store‐destkeystorecobal
tstrike.store‐deststoretypepkcs12
keytool -keystore CobaltStrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=BeiJing, ST=ChaoYang, C=CN"
修改以後再次檢視CobaltStrike的預設store檔案
0x04 總結
時代在變遷,人類在進步,安全在發展,內網流量裝置變得越來越先進,機器玩不過人是永恆的真理,就像今年的HW,安全裝置成了最大的0day。
針對流量裝置的檢測,根據流量裝置的判斷,不斷完善攻擊利器,才能在後滲透中不被幹擾,我這邊只是借鑑各位大佬和網上的教程做了一個總結,拋磚引玉,希望能得到更多師傅的支援,有更好的修改方法請盡情提出,我這邊也跟著學習一波,共同發展,才能進步的更快,今天就這樣,繼續加油!