Cobalt Strike是一款超級好用的滲透測試工具,擁有多種協議主機上線方式,集成了提權,憑據導出,端口轉發,socket代理,office攻擊,文件捆綁,釣魚等多種功能。同時,Cobalt Strike還可以調用Mimikatz等其他知名工具,因此廣受技術大佬的喜愛。

Cobalt Strike是由美國Red Team開發,官網地址:cobaltstrike.com。
筆者認為學會使用這款“神器”可以在我們滲透的過程中起到事半功倍的作用,於是分享了一些學習心得,希望給各位一點幫助。

這個工具的社區版是大家熟知的Armitage(一個MSF的圖形化界面工具),而Cobalt Strike大家可以理解其為Armitage的商業版。

早期版本Cobalt Srtike依賴Metasploit框架,而現在Cobalt Strike已經不再使用MSF而是作為單獨的平台使用,它分為客戶端(Client)與服務端(Teamserver),服務端是一個,客戶端可以有多個,團隊可進行分布式協團操作。
Cobalt Strike架構
筆者使用的是Cabalt Strike3.13版本,雖然官方已經更新到3.14版本,但是3.14版本並不穩定,因此不推薦使用。
3.13版本文件架構如下:
- Scripts 用戶安裝的插件
- Log 每天的日志
- c2lint 檢查profile的錯誤異常
- cobaltstrike
- cobaltstrike.jar 客戶端程序
- icon.jpg LOGO
- license.pdf 許可證文件
- readme.txt
- releasenotes.txt
- teamserver 服務端程序
- update
- update.jar 更新程序
- third-party 第三方工具,里面放的vnc dll
當然,強大的CS也支持用戶來擴展其功能:私人定制
①Cobalt Strike可以使用AggressorScripts腳本來加強自身,使其更加豐滿,能夠擴展菜單欄,視圖Beacon命令行,提權腳本等;
②Cobalt Strike通信配置文件是Malleable C2,你可以修改CS的通訊特征,Beacon payload的一些行為;
③Cobalt Strike可以引用其他的通訊框架ExternalC2,ExternalC2是由Cobalt Strike提出的一套規范/框架,它允許黑客根據需要對框架提供的默認HTTP(S)/DNS/SMB C2 通信通道進行擴展。
總的來說CS的自定義功能很強大,使用起來很靈活,后期會講到相關的使用。
Cobaltstrike teamserver的啟動
開啟Cobaltstrike teamserver和運行GUI界面均需要Java環境,因此老哥們必須先把電腦上的Java裝好,這個百度上都寫的很詳細,在此就不贅述了。
1、Windows下啟動teamserver
①下載keytool.exe並將其復制到Cobaltstrike文件夾下,鏈接:
http://www.onlinedown.net/soft/614989.htm
②切換到Cobaltstrike目錄執行如下命令:
Keytool.exe -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth"

③執行命令
teamserver.bat 8.8.8.8 123456
8.8.8.8為你的服務器外網IP,123456為Coabltstrike的客戶端密碼。
④雙擊cobaltstrike.bat,填寫服務器外網IP和teamserver密碼,即可登入:


2、Linux下啟動teamserver和客戶端
①cd切換到Cobaltstrike目錄下
②執行命令
teamserver.bat 8.8.8.8 123456
8.8.8.8為你的服務器外網IP,123456為Coabltstrike的客戶端密碼。

③執行如下命令即可看到GUI界面
Javaw -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
Listner(監聽器)介紹
1、Cobaltstrike Listner簡介
Listner(監聽器):專門用於對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時,立即采取相應的行動。
在許多的滲透測試工具中,例如empire,metasploit,cobaltstrike中都有Listner的存在。大家可以簡單地理解為Listner就是用來接收目標主機權限的模塊。

創建Listener的步驟:Cobaltstrike-->監聽器
目前我用的是Cobaltstrike3.13版本,其中內置了九個Listener。

windows/beacon_dns/reverse_dns_txt
windows/beacon_dns/reverse_http
windows/beacon_tcp/bind_tcp
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp
beacon為CS內置監聽器,也就是說,當我們在目標系統成功執行Payload以后,會彈回一個beacon的shell給CS。
foreign主要是提供給外部使用的一些監聽器,比如你想利用CS派生一個meterpreter或者armitage的shell回來,來繼續后面的內網滲透,這時就選擇使用外部監聽器。
至於如何實現Cobaltstrike與MSF和Armitage的聯動,請關注公眾號后續推送文章。
2、Listener的配置
選擇Cobaltstrike-->監聽器
隨后輸入Listener名字並選擇你要使用的Listner類型,配置好外網IP和端口(不能沖突)點擊save即可保存,在以后生成Payload的過程中即可使用該監聽器。

Cobalt Strike生成后門
1、Payload概念
Payload在滲透測試之中大家可以簡單地理解為一段漏洞利用/植入后門的代碼或程序。
2、Cobalt Strike生成后門
攻擊-->生成后門

我們先來講紅框中的四個生成后門的方式,其余的比較特殊,留作日后單獨講解。
Payload Generator
該模塊可以生成n種語言的后門Payload,包括C,C#,Python,Java,Perl,Powershell腳本,Powershell命令,Ruby,Raw,免殺框架Veli中的shellcod,等...個人感覺這是CS的一個很大的迷人之處。

在滲透Windows主機過程中,我用的比較多的就是Powershell和Powershell Command,主要是因為其方便易用,且可以逃避一下殺毒軟件(AV)的查殺。
以Powershell Command為例,生成的Payload為一串命令,只要在主機上執行這一串命令(主機需安裝Powershell),CS即可收到主機的beacon。

其他語言的Payload,大家可自己研究。
Windows Dropper
這個是一個Windows程序的捆綁器,它可以實現把后門捆綁於其他程序之上,比如掃雷游戲,某些帶有誘惑性的可執行文件...

在本處,我捆綁的文件為nidongde.txt,生成的后門名為dropper.exe。
點擊dropper.exe執行后,釋放出了nidongde.txt文件,同時CS也收到了會話。

Windows Excutable/Windows Excutable(s)
1、Windows Excutable生成的后門是Windows可執行文件,如exe,DLL。

exe文件運行后,CS即可收到目標主機的會話。
至於DLL大家可以使用針對DLL的相關攻擊手法,請關注公眾號后續推送文章。
2、Windows Excutable帶有生成出的是stageless版本(無狀態Windows后門木馬),下面簡單說下這個無狀態木馬的使用方法。一般使用無狀態木馬的網絡環境是這樣的。

首先你需要讓一台主機作為中轉器,配合無狀態木馬使用。

這里選擇中轉器的監聽器生成木馬。需要注意的是如果開啟了防火牆會產生一個Windows安全警報,因此最好提前用cmd添加一個防火牆放行規則或關閉防火牆,隨后便可將無狀態的木馬上傳到內網的其他機器運行后返回一個會話。
以上是今天的內容,大家看懂了嗎?后面我們將持續更新Cobalt Strike系列的知識點,希望大家及時關注。