0X01 環境准備
Cobalt Strike安裝包
Cobalt Strike服務端:kali(不限於kali,但需要時Linux系統)
Cobalt Strike客戶端:Windows 7
0X02 Cobalt Strike介紹
Cobalt Strike是一款美國 Red Team 開發的滲透測試平台,大佬們都稱之為 "CS " (后面為了描(tou)述(lan),也沿用此稱謂)。
CS 以Metasploit為基礎,集成了掃描、端口轉發、提權、Socket代理、木馬生成、文件捆綁、網站克隆、多模式端口監聽、自動化溢出、釣魚攻擊等強大的功能,該工具幾乎覆蓋了APT攻擊鏈中所需要用到的各個技術環節。

CS的強大主要用於大型APT組織的團隊作戰,采用C/S架構,能讓各個地方的團隊成員同時連接到團隊服務器,共享信息資源和攻擊成果,可謂是團隊作戰的神兵利器,因其強大的功能和靈活的架構,已成為各大APT組織的首選。

CS這么好用,其實是一款需要付費的項目,價格也不高(๑乛◡乛๑),3500刀/年,支持正版的小伙伴出門右拐:
CS項目官網地址:https://www.cobaltstrike.com
Cobalt Strike文件結構
這里使用的是CS 3.14版本,下載Cobalt Strike之后,其文件結構如下所示:

部分文件解釋說明:
│ agscript 拓展應用的腳本
│ c2lint 檢查profile的錯誤異常
│ cobaltstrike
│ cobaltstrike.jar 客戶端程序
│ icon.jpg 圖標
│ license.pdf 許可證文件
│ readme.txt
│ releasenotes.txt
│ teamserver 服務端程序
│ update
│ update.jar 更新程序
│
└─third-party 第三方工具
README.vncdll.txt
vncdll.x64.dll
vncdll.x86.dll
0X03 Cobalt Strike服務端安裝
將CS文件夾拷貝到Linux主機下,這里需要注意一下,需要提前安裝 java 環境,我這里是kali,已經集成了 openjdk 環境。
切到CS目錄下,服務端安裝使用teamserver腳本文件:

接下來直接運行腳本配置團隊服務器IP與密碼即可:
./teamserver 服務器IP 密碼

到這里,CS服務端的搭建就完成了,so easy!!!
0X04 客戶端上線
將CS文件夾拷貝到windows機器下,運行“cobaltstrike.exe”文件:

運行后會彈出一個框,輸入我們前面搭建好的團隊服務器 IP 地址,默認端口50050,不用設置,用戶名隨意,密碼也是前面配置團隊服務器用到的密碼,然后點擊“Connect”連接服務器:

首次連接會提示校驗服務端哈希,確認我們連接的服務器是自己團隊的,指紋信息應和配置團隊服務器后生成的哈希值相同。

至此,我們就完成了CS的服務端部署和客戶端上線:

0X05 主要功能說明
(1)Listeners
使用CS時需要先創建一個Listerer(監聽器),可以理解為用來監視我們的目標主機,並接收目標主機權限的模塊。
打開方式:點擊Cobalt Strike—>Listeners,或者點擊工具欄的耳機圖標。

然后點擊Add即可添加需要的Listeners了,Cobalt Strike 3.14 包括9種監聽方式:
windows/beacon_dns/reverse_dns_txt
windows/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是CS自帶的模塊,包括dns、http、https、smb四種監聽方式;windows/foreign為外部監聽器,即msf或者Armitage的監聽器。
選擇監聽器后,配置好主機IP和端口,然后保存,監聽器就創建完成了。

(2)Attacks
創建好了監聽器,就可以利用各種攻擊手段攻陷我們的目標了。CS包括多中攻擊方式.
Packages

HTML Application生成惡意的HTA木馬文件
MS Office Macro生成office宏病毒文件
Payload Generator生成各種語言版本的payload
USB/CD AutoPlay生成利用自動播放運行的木馬文件
Windows Dropper捆綁器,能夠對文檔類進行捆綁;
Windows Executable生成可執行exe木馬;
Windows Executable(S)生成無狀態的可執行exe木馬。
Web Drive-by(釣魚攻擊)

Manage對開啟的web服務進行管理;
Clone Site克隆網站,可以記錄受害者提交的數據;
Host File提供一個文件下載,可以修改Mime信息;
Scriptes Web Delivery類似於msf 的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
用於制作釣魚郵件攻擊。

(3)View
View模塊可以方便測試者查看各個模塊,圖形化的界面可以方便的看到受害者機器的各個信息。

Applications顯示受害者機器的應用信息;
Credentials顯示受害者機器的憑證信息,能更方便的進行后續滲透;
Downloads文件下載;
Event Log可以看到事件日志,清楚的看到系統的事件,並且團隊可以在這里聊天;
Keystrokes查看鍵盤記錄;
Proxy Pivots查看代理信息;
Screenshots查看屏幕截圖;
Script Console在這里可以加載各種腳本以增強功能,腳本地址戳我;
Targets查看目標;
Web Log查看web日志。
beacon
beacon為CS 內置監聽器,當我們在目標系統成功執行payload以后,會彈回一個beacon的shell給CS.
我們也可以理解為beacon就是我們目標主機的shell,不管我們何種方式獲取shell后,就可以使用beacon,當目標主機上線后,右擊目標主機,點擊Interact,就打開了beacon:

這里需要注意,beacon的命令和操作系統的shell不太一樣,比如cmd下查看IP信息用“ipconfig”命令,在beacon下則用“shell ipconfig”。
可以在beacon下輸入“help”命令查看可以使用的命令:
Beacon>help
Command Description
------- -----------
browserpivot 注入受害者瀏覽器進程
bypassuac 繞過UAC
cancel 取消正在進行的下載
cd 切換目錄
checkin 強制讓被控端回連一次
clear 清除beacon內部的任務隊列
connect Connect to a Beacon peer over TCP
covertvpn 部署Covert VPN客戶端
cp 復制文件
dcsync 從DC中提取密碼哈希
desktop 遠程VNC
dllinject 反射DLL注入進程
dllload 使用LoadLibrary將DLL加載到進程中
download 下載文件
downloads 列出正在進行的文件下載
drives 列出目標盤符
elevate 嘗試提權
execute 在目標上執行程序(無輸出)
execute-assembly 在目標上內存中執行本地.NET程序
exit 退出beacon
getprivs Enable system privileges on current token
getsystem 嘗試獲取SYSTEM權限
getuid 獲取用戶ID
hashdump 轉儲密碼哈希值
help 幫助
inject 在特定進程中生成會話
jobkill 殺死一個后台任務
jobs 列出后台任務
kerberos_ccache_use 從ccache文件中導入票據應用於此會話
kerberos_ticket_purge 清除當前會話的票據
kerberos_ticket_use 從ticket文件中導入票據應用於此會話
keylogger 鍵盤記錄
kill 結束進程
link Connect to a Beacon peer over a named pipe
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 Set parent PID for spawned post-ex jobs
ps 顯示進程列表
p**ec Use a service to spawn a session on a host
p**ec_psh Use PowerShell to spawn a session on a host
psinject 在特定進程中執行PowerShell命令
pth 使用Mimikatz進行傳遞哈希
pwd 當前目錄位置
reg Query the registry
rev2self 恢復原始令牌
rm 刪除文件或文件夾
rportfwd 端口轉發
run 在目標上執行程序(返回輸出)
runas 以另一個用戶權限執行程序
runasadmin 在高權限下執行程序
runu Execute a program under another PID
screenshot 屏幕截圖
setenv 設置環境變量
shell cmd執行命令
shinject 將shellcode注入進程
shspawn 生成進程並將shellcode注入其中
sleep 設置睡眠延遲時間
socks 啟動SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
spawnu Spawn a session under another PID
ssh 使用ssh連接遠程主機
ssh-key 使用密鑰連接遠程主機
steal_token 從進程中竊取令牌
timestomp 將一個文件時間戳應用到另一個文件
unlink Disconnect from parent Beacon
upload 上傳文件
wdigest 使用mimikatz轉儲明文憑據
winrm 使用WinRM在主機上生成會話
wmi 使用WMI在主機上生成會話
argue 進程參數欺騙
