前言
拿cobaltstrike 4.1 版本上線linux還是很早的想法了,多次實(shí)驗(yàn)無(wú)奈都失敗了。又沒(méi)有毅力繼續(xù)堅(jiān)持解決掉這個(gè)問(wèn)題。這不,最近又想折騰一下了,翻看各種大佬的博客資料,實(shí)驗(yàn)各個(gè)版本的差異,他終于可以了。在此,做個(gè)記錄。
CrossC2 項(xiàng)目
CrossC2 項(xiàng)目是為了支持cobaltstrike 對(duì)其他平臺(tái)的滲透測(cè)試而開(kāi)發(fā)的插件。目前github上支持cobaltstrike 4.1、4.0、3.14 版本。

由于之前在本地MAC上做了多次實(shí)驗(yàn),導(dǎo)致環(huán)境比較亂,這里我就記錄做成的這次的實(shí)驗(yàn)。
上線linux主機(jī)
環(huán)境:cobaltstrike 4.1 版本、cobaltstrike客戶端MacOS環(huán)境、cobaltstrike服務(wù)端linux環(huán)境、CrossC2 2.2 版本
下載CrossC2 2.2 版本 https://github.com/gloxec/CrossC2/releases/tag/v2.2(測(cè)試2.2.4版本未上線)

這里下載這三個(gè)文件。因?yàn)槲冶镜谻obalt Strike 4.1 運(yùn)行在MacOS操作系統(tǒng)上,對(duì)應(yīng)也應(yīng)該下載genCrossC2.MacOS
CrossC2.cna 加載該插件的cna
genCrossC2.MacOS 生成payload的程序
CrossC2Kit.zip 后滲透linux的插件
將三個(gè)文件放在同一文件夾CrossC2下。

- 修改cna 腳本

- 修改
$CC2_PATH為真實(shí)路徑,對(duì)應(yīng)本地存放的CrossC2路徑。注意最后的/。 - 修改
$CC2_BIN為payload生成程序,這里用的MacOS系統(tǒng),故不用修改。 - 賦予genCrossC2.MacOS 執(zhí)行權(quán)限。
- 加載cna 腳本
cobaltstrike 加載CrossC2.cna 腳本,會(huì)多一個(gè)CrossC2 的菜單。

點(diǎn)擊genCrossC2就可以生成payload。

這里同樣也需要注意一下。
.cobaltstrike.beacon_keys 文件
復(fù)制服務(wù)端上cobaltstrike目錄下的 .cobaltstrike.beacon_keys到本地目錄下。當(dāng)然位置可以隨意調(diào),主要存在這個(gè)文件,且在生成payload的時(shí)候會(huì)尋找該文件。System
這個(gè)就是你要生成的程序在哪個(gè)平臺(tái)上運(yùn)行了,目標(biāo)是linux主機(jī)上線,故不更改。Listener
選擇監(jiān)聽(tīng)器,默認(rèn)reverse_https且只支持https,所以也要?jiǎng)?chuàng)建https的監(jiān)聽(tīng)器。
配置完成后,選擇build生成。

創(chuàng)建了一條curl命令,用來(lái)下載執(zhí)行payload。同時(shí)也可以在log里看到惡意程序生成的命令。
/Users/cseroad/secure/CrossC2/genCrossC2.MacOS cdn.csxxx.xx 9443 ./.cobaltstrike.beacon_keys null Linux x64 /tmp/CrossC2-test
本地的/tmp/目錄也確實(shí)會(huì)生成 CrossC2-test程序。當(dāng)然手動(dòng)上傳并執(zhí)行CrossC2-test程序效果是一樣的。

看一下他curl的這個(gè)地址內(nèi)容。

很容易看出在/tmp/目錄下創(chuàng)建文件夾,然后下載55413端口的qbxTbAHkIt文件重命名并執(zhí)行,而后刪除。
大概過(guò)程就是這個(gè)樣子,我們?cè)趉ali上嘗試執(zhí)行build生成的命令。
- 上線kali
在kali上執(zhí)行。

當(dāng)出現(xiàn)[conf]: alive 證明網(wǎng)絡(luò)可達(dá)。同時(shí)kali上線。

命令也可正常執(zhí)行。

擴(kuò)展
以上的實(shí)驗(yàn)我都是用的最簡(jiǎn)單的IP上線的方式,cobaltstrike的證書(shū)也沒(méi)有修改,profiles配置文件也沒(méi)有使用。
嘗試使用域名的方式上線。
在cloudfire上綁定域名,下載私鑰、源證書(shū),重新生成store證書(shū)。(PS:這部分就不過(guò)多闡述了)
openssl pkcs12 -export -in cseroadweb.pem -inkey cseroadweb.key -out cfcert.p12 -name cloudflare_cert -passout pass:ccc123456
sudo keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore cfcert.store -srckeystore cfcert.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias cloudflare_cert
而后在teamserver中替換cobaltstrike.store為cfcert.store。重新啟動(dòng)。
創(chuàng)建一個(gè)域名的監(jiān)聽(tīng)器。

重復(fù)上面genCrossC2的操作。
這次選擇自己的云服務(wù)器作為靶機(jī)。

同樣可行。


可見(jiàn)linux上線和證書(shū)、域名沒(méi)有關(guān)系。
如果使用了profile配置文件了呢?
CrossC2 提供了通信協(xié)議的API。
根據(jù)prifile文件,修改c2profile.c文件,包括請(qǐng)求url的信息。
而后gcc編譯為so文件。
gcc c2profile.c -fPIC -shared -o lib_test.so
在CrossC2 項(xiàng)目里加載該lib文件,再build即可。

也可正常上線、執(zhí)行命令。

CrossC2Kit 擴(kuò)展
在存在beacon后,就可以加載我們之前下載的CrossC2Kit文件里的CrossC2_loader.cna 腳本,來(lái)豐富我們的后滲透模塊。
加載之前的功能,可以看到只有簡(jiǎn)單的模塊。

加載之后的功能,就多了一些dumphash、橫向、提權(quán)的模塊。

cc2_mimipenguin 讀取密碼
cc2_auth, cc2_ssh sudo/su/passwd 等認(rèn)證后門(mén),ssh被連接及連接其他主機(jī)的憑證都將被記錄
cc2_safari_dump, cc2_chrome_dump, cc2_iMessage_dump, cc2_keychain_dump 常見(jiàn)瀏覽器的訪問(wèn)記錄,以及保存的認(rèn)證憑據(jù)都將被獲取
cc2_frp 支持快速TCP/KCP(UDP)的反向socks5加密流量代理
cc2_keylogger 記錄用戶的鍵盤(pán)輸入
以kali為例,就可以讀取密碼。

總結(jié)
折騰了許久的問(wèn)題終于解決了,多看github、多折騰、多實(shí)踐,不斷嘗試。
參考資料
https://github.com/gloxec/CrossC2/
https://gitee.com/pyking/CrossC2#%E6%A8%AA%E5%90%91%E7%A7%BB%E5%8A%A8-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95--wiki
https://gloxec.github.io/CrossC2/zh_cn/protocol/