目錄:
安裝與連接
監聽器Listner
基本使用方法--Cobalt Strike生成后門
Beacon詳解
菜單欄與視圖
文件管理與進程管理
瀏覽器代理
Cobalt Strike擴展
提權
橫向移動
參考
Cobalt Strike: C/S架構的商業滲透軟件,適合多人進行團隊協作,可模擬APT做模擬對抗,進行內網滲透。
本文介紹3.14版本。
安裝與連接
鏈接:https://pan.baidu.com/s/1mtR3J_W3IQL-hdioxTdDig
提取碼:tbel
服務器端kali Linux
將下載的CS程序放到Kali中,執行./teamserver 192.168.56.130 vege 即可啟動Team Server服務。192.168.43.43表示本機IP地址,vege表示從客戶端登錄時需要填寫的密碼。
CS服務端程序會監聽TCP 50050端口。
客戶端win10
將下載的CS程序放到Windows中,切換到CS程序目錄,在命令行窗口中運行java -jar cobaltstrike.jar即可啟動客戶端(也可以直接運行.exe程序),然后輸入IP地址、用戶名、密碼等信息即可登錄
用戶名隨意寫,其他要填准確
登錄成功后會看到如下操作界面:
客戶端可以是任意操作系統,服務器端必須是linux,例如,我們也可以用kali linux連接服務器端:
可以通過點擊Cobalt Strike ->New Connection 來連接多台服務器
監聽器Listner
1、Cobaltstrike Listner簡介
Listner(監聽器):專門用於對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時,立即采取相應的行動。
在許多的滲透測試工具中,例如empire,metasploit,cobaltstrike中都有Listner的存在。大家可以簡單地理解為Listner就是用來接收目標主機權限的模塊。
創建Listener的步驟:Cobaltstrike-->監聽器
目前我用的是Cobaltstrike3.14版本,其中內置了九個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的shell回來,來繼續后面的內網滲透,這時就選擇使用外部監聽器。
2、Listener的配置
選擇Cobaltstrike-->listener
隨后輸入Listener名字並選擇你要使用的Listner類型,配置好IP和端口(不能沖突)點擊save即可保存,在以后生成Payload的過程中即可使用該監聽器。
基本使用方法--Cobalt Strike生成后門
HTML Application #
生成惡意的
HTA
木馬文件
MS Office Macro #
生成
office
宏病毒文件
Payload Generator #
生成各種語言版本的
payload
USB/CD AutoPlay #
生成利用自動播放運行的木馬文件
Windows Dropper #
捆綁器,能夠對文檔類進行捆綁
Windows Executable #
生成可執行
Payload
Windows Executable(S) #
把包含
payload,Stageless
生成可執行文件
(
包含多數功能
)
這里只演示一下Payload Generator :
該模塊可以生成多種語言的Payload,包括C,C#,Java,Perl,Powershell,Powershell命令,Python ,Ruby,Raw,Veil等
以Powershell Command為例,生成的Payload為一串命令,只要在主機上執行這一串命令(主機需安裝Powershell),CS即可收到主機的beacon
CS生成的木馬默認60秒回連一次,這就導致我們不能實時操作遠程PC。通過修改sleep時間可以達到實時操作的功能,可以把sleep時間修改為1秒或0秒。(不過比建議將sleep改這么小,不然流量會很明顯)
單擊鼠標右鍵然后選擇Interact會進入命令行交互窗口. 在界面最底下有個beacon>輸入框,這就是輸入命令的地方, 輸入help會顯示幫助文檔(詳細看下一節)。
通過CS還能瀏覽被控PC的文件目錄,實現截屏、端口掃描等功能。
不過到目前為止,我們掌握的是PC電腦的普通權限。
CS內置的提權腳本很少
GitHub上有個提權工具包,使用這個工具包可以增加幾種提權方法:https://github.com/rsmudge/ElevateKit
點擊Script Manager按鈕打開腳本管理界面,然后點擊底下的Load按鈕加載elevate.cna文件。
選擇合適的exp進行提權,當然不知道用哪個的話也可以都試試。
如果提權成功,session列表中會增加一個新會話,星號(*)表示該會話是一個提權成功的會話。
這里只想簡要介紹一下,詳細介紹參見后文。
Beacon詳解
Beacon命令
右鍵目標interact來使用Beacon,我們用它來執行各種命令。注意:Beacon中不能直接輸入cmd命令,比如要讓目標機執行ipconfig這條cmd命令,對應的Beacon命令是shell ipconfig。
輸入help會顯示幫助文檔
beacon> help
Beacon Commands
===============
Command Description
------- -----------
argue
進程參數欺騙
blockdlls
阻止子進程加載非
Microsoft DLL
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
使用
exp
提權
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 Apply
從
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
顯示進程列表
psexec Use a service to spawn a session on a host
psexec_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
橫向滲透
二、多種Beacon
SMB Beacon
1、簡介
官網介紹:SMB Beacon使用命名管道通過父級Beacon進行通訊,當兩個Beacons連接后,子Beacon從父Beacon獲取到任務並發送。
因為連接的Beacons使用Windows命名管道進行通信,此流量封裝在SMB協議中,所以SMB Beacon相對隱蔽,繞防火牆時可能發揮奇效。
2、SMB Beacon使用
這種Beacon要求具有SMB Beacon的主機必須接受端口445上的連接。
派生一個SMB Beacon方法:在Listner生成SMB Beacon>目標主機>右鍵> spawn >選中對應的Listener>上線
或在Beacon中使用命令spawn smb(smb為我的smb listener名字)
運行成功后外部可以看到∞∞這個字符,這就是派生的SMB Beacon。
當前是連接狀態,你可以Beacon上用link <ip>命令鏈接它或者unlink <ip>命令斷開它。
這種Beacon在內網橫向滲透(后面會講)中運用的很多。在內網環境中可以使用ipc $生成的SMB Beacon上傳到目標主機執行,但是目標主機並不會直接上線的,需要我們自己用鏈接命令(link <ip>)去連接它。
DNS Beacon
DNS Beacon在繞過防火牆 權限維持上非常有效,DNS beacon可謂是最受歡迎的Cobalt Strike功能之一。
官網給出的原理示意圖如下:
使用DNS Beacon首先要有一個域名,域名建議用國外的,省去一些不必要的麻煩,也防止被查水表。域名使用一些通用平常的即可,整個配置過程非常簡單,一條A記錄和幾條NS記錄即可。
(由於本菜沒有域名,以下暫沒辦法復現,圖源網絡)
首先進入到域名管理界面
配置A記錄指向服務器ip -->ns記錄都指向A記錄域名
配置好了我們可以用nslookup或者dig +trace來測試下是否成功:
如果返回的IP地址與你的服務器IP地址對應是正確的,那我們就可以開始配置dns beacon的監聽器了。
Host那里最好填域名(A記錄解析那個),不要填服務器的IP地址。
然后確定填上ns記錄,英文逗號隔開,然后生成后門測試效果。
這是主機欄上出現了一個黑屏的logo,經過一段時間的等待,目標主機即可上線。
SSH beacon
目前有兩種SSH Beacon連接方法:
①密碼直接連接
Beacon命令: ssh [target:port] [user] [pass]
②SSH密匙連接
ssh [target:port] [user] [/path/to/key.pem]
連接成功后,就會出現一個子Beacon。
菜單欄與視圖
菜單欄
1.新建連接
2.斷開當前連接
3.監聽器
4.改變視圖為
PivotGraph
(可以顯示各個目標的關系)
5.改變視圖為
SessionTable
(會話列表)
6.改變視圖為
TargetTable
(目標列表)
7.查看憑據信息
8.查看文件下載
9.查看鍵盤記錄
10.查看屏幕截圖
11.生成無狀態
Beacon后門
12.java自簽名程序攻擊
13.生成
office宏后門
14.生成腳本通過
web傳遞(利用powershell,bitsadmin,regsvr32生成會話)
15.在
CobaltStrike
的
web服務上托管一個文件(提供一個文件下載)
16.管理
CobaltStrike
上運行的
web服務
17.幫助
18.關於
Cobalt Strike
New Connection #
新的連接
(
支持連接多個服務器端
)
Preferences #
偏好設置
(
設置
Cobal Strike
界面、控制台、以及輸出報告樣式、
TeamServer
連接記錄等
)
Visualization #
窗口視圖模式
(
展示輸出結果的形式
)
VPN Interfaces #VPN
接入
Listenrs #
監聽器
(
創建
Listener)
Script Manager #
腳本管理
Close #
關閉
View
Applications #
應用
(
顯示受害者機器的應用信息
)
Credentials #
憑證
(
通過
hashdump
或
Mimikatz
抓取過的密碼都會儲存在這里
)
Downloads #
下載文件
Event Log #
事件日志
(
主機上線記錄以及團隊協作聊天記錄
)
Keystrokes #
鍵盤記錄
Proxy Pivots #
代理模塊
Screenshots #
截圖
Script Console #
腳本控制台
(
可以加載各種腳本,增強功能
https://github.com/rsmudge/cortana-scripts)
Targets #
顯示目標主機
Web Log #Web
日志
Attacks
Packages
HTML Application #
生成惡意的
HTA
木馬文件
MS Office Macro #
生成
office
宏病毒文件
Payload Generator #
生成各種語言版本的
payload
USB/CD AutoPlay #
生成利用自動播放運行的木馬文件
Windows Dropper #
捆綁器,能夠對文檔類進行捆綁
Windows Executable #
生成可執行
Payload
Windows Executable(S) #
把包含
payload,Stageless
生成可執行文件
(
包含多數功能
)
Web Drive-by
Manage #
對開啟的
web
服務進行管理
Clone Site #
克隆網站
(
可記錄受害者提交的數據
)
Host File #
提供
Web
以供下載某文件
Scripted Web Delivery #
提供
Web
服務,便於下載和執行
PowerShell Payload
,類似於
Metasploit
的
web_delivery
Signed Applet Attack #
啟動一個
Web
服務以提供自簽名
Java Applet
的運行環境
Smart Applet Attack #
自動檢測
Java
版本並利用已知的
exploits
繞過
security
System Profiler #
用來獲取一些系統信息,比如系統版本,
Flash
版本,瀏覽器版本等
Reporting
0. Activity report #
活動報告
1. Hosts report #
主機報告
2. Indicators of Compromise #
威脅報告
3. Sessions report #
會話報告
4. Social engineering report #
社會工程學報告
5. Tactics, Techniques, and Procedures #
策略、技巧和程序
Reset Data #
重置數據
Export Data #
導出數據
Help
Homepage #
官方主頁
Support #
技術支持
Arsenal #
開發者
System information #
版本信息
About #
關於
右鍵菜單
Interact
詳見 “Beacon命令”
Access
Dump Hashes #
獲取
hash
Elevate #
提權
Golden Ticket #
生成黃金票據注入當前會話
Make token #
憑證轉換
Run Mimikatz #
運行
Mimikatz
Spawn As #
用其他用戶生成
Cobalt Strike
偵聽器
Explore
Browser Pivot #
劫持目標瀏覽器進程(瀏覽器代理)
Desktop(VNC) #
遠程桌面
File Browser #
文件管理
Net View #
命令
Net View
Port Scan #
端口掃描
Process List #
進程列表
Screenshot #
截圖
Pivoting
SOCKS Server #
代理服務
Listener #
反向端口轉發
Deploy VPN #
部署
VPN
Spawn
外部監聽器(如指派給MSF,獲取meterpreter權限)
Session
Note #
備注
Remove #
刪除
Sleep #
指定被控端休眠時間,默認
60
秒一次回傳,讓被控端每
10
秒來下載一次任務。實際中頻率不宜過快
,
容易被發現。
Exit #
退出
文件管理與進程管理
文件管理
右鍵菜單->Explore->File Browser
Upload上傳、Make Directory創建目錄、List Drives列出盤符、Refresh刷新
文件上傳並執行
點擊按鈕upload,選擇要上傳的文件
選中文件可以進行復制、下載、執行、刪除
執行文件時要求你輸入要執行程序的參數,不需要參數直接點擊確定就好。
文件下載
右鍵要下載的文件,Download,然后在菜刀欄點擊下載按鈕查看下載的文件
下載的文件會保存在CS下的downloads目錄下
進程管理
右鍵菜單->Explore->Process List
Kill關閉程序、Refresh刷新進程列表、Inject是把beacon注入進程、Log Keystrokes鍵盤記錄、Steal Token竊取運行指定程序的用戶令牌
Inject進程注入
所謂進程注入就是把你的beacon會話注入到另外一個進程之中,注入后,即使你傳入的后面進程被關閉,你依然可以維持目標機的權限。
用法:選中目標進程,點擊Inject,然后會彈出選擇監聽器的框,可以選擇現有的,也可以添加,選擇完畢之后CS會彈回一個目標機的新的會話。
竊取token
在進程列表中,尋找以域管理員身份運行的進程,並選定進行steal token,如果成功,則會返回域管權限的beacon。
瀏覽器代理
選擇一個beacon,右鍵,Explore-->Browser Pivot
配置好相關的端口信息后,點擊Launch,即可使用目標機的指定端口作為瀏覽器代理
隨后cobaltstrike就會注入瀏覽器代理dll到進程中
我們通過配置我們服務器的IP、端口,即可使用目標機作為瀏覽器代理。
Socks
Socks概念
目前利用網絡防火牆將組織內部的網絡結構與外部網絡如 INTERNET 中有效地隔離開來,這種方法正變得逐漸流行起來。這些防火牆系統通常以應用層網關的形式工作在網絡之間,提供受控的 TELNET 、 FTP 、 SMTP 等的接入。SOCKS 提供一個通用框架來使這些協議安全透明地穿過防火牆。
說的簡單明了一點,在滲透測試中,我們使用socks技術,可以穿透進入目標機的內網,從而擴大我們的戰果。
Cobaltstrike自帶Socks功能
選擇一個beacon,右鍵,Pivoting-->SOCKS Server,或使用命令socks [port]
彈出一個窗口,按要求配置好代理端口。
如圖,成功開啟socks 4,連接我們teamserver的17701端口,即可進入目標機內網。
Cobalt Strike擴展
擴展是Cobalt Strike一個極為重要的模塊,它有效地豐富了Cobalt Strike的功能。
選擇菜單欄的Cobalt Strike-->Script Manager,點擊load,然后選擇cna擴展文件即可,旁邊的unload為去除該擴展,reload為重新加載該擴展。
在前面我們曾介紹過提權腳本,現在再介紹幾個其他好用的腳本:
腳本名稱:Persistence_Meau.cna
腳本功能:持久化控制集合
腳本名稱:AVQuery.cna
腳本功能:查詢目標所安裝的所有殺軟
AV_Query 使用powershell查詢注冊表,查找目標上安裝的所有AV
腳本名稱:RedTeamRepo.cna
腳本功能:提示一下常用的滲透命令
RedRepo Windows/Linux/Tips
更多請看:
https://github.com/harleyQu1nn/AggressorScripts
提權
選擇beacon,右鍵,Access-->Elevate。
MS14-058、MS15-051、MS16-016 :
windows本地提權漏洞
UAC-DLL:
這是一種繞過UAC的攻擊,它試圖將本地管理員運行的有效負載從低權限提升到高權限。此攻擊使用UAC漏洞將ArtifactKit生成的DLL復制到特權位置。此攻擊適用於Windows7和Windows8及更高版本的未修補版本。
uac-token-duplication :
這是另一種繞過UAC的攻擊,將其從低權限提升到高權限(作為本地管理員)。這種攻擊使用一個UAC漏洞,允許非提升進程使用從提升進程中竊取的token啟動任意進程。此漏洞要求攻擊刪除分配給提升token的多個權限。此攻擊適用於Windows7及更高版本。如果AlwaysNotify處於其最高設置,則此攻擊要求提升的進程已在當前桌面會話中運行(作為同一用戶),此漏洞使用PowerShell生成會話。
橫向移動
1、橫向滲透概念
橫向滲透攻擊技術是復雜網絡攻擊中廣泛使用的一種技術,特別是在高級持續威脅(Advanced Persistent Threats,APT)中更加熱衷於使用這種攻擊方法。攻擊者可以利用這些技術,以被攻陷的系統為跳板,訪問其他主機,獲取包括郵箱、共享文件夾或者憑證信息在內的敏感資源。
攻擊者可以利用這些敏感信息,進一步控制其他系統、提升權限或竊取更多有價值的憑證。借助此類攻擊,攻擊者最終可能獲取域控的訪問權限,完全控制基於Windows系統的基礎設施或與業務相關的關鍵賬戶。
在提權后,我們可以用mimikatz dump目標機的憑證,並進行內網橫向移動。
2、Psexec橫向移動
在執行端口掃描后,目標視圖中,選擇一個目標,右鍵-->登錄--psexec,即可選擇憑證進行橫向移動。
如果該機使用了和之前的目標機一樣的憑證,則會成功返回一個system beacon。
3、竊取token
在進程列表中,尋找以域管理員身份運行的進程,並選定進行steal token,如果成功,則會返回域管權限的beacon。
4、其他手段橫向移動
①使用各種系統漏洞:比如說用ms17-010,ms08-067批量檢測一下內網。
②弱口令檢測
內網中ssh弱口令,各種數據庫的弱口令可謂是層出不窮。Mysql可以mof提權,sqlserver可以xp_cmdshell,redis寫shell,oracle也有方法執行系統命令。
③中間件漏洞
這個就非常常見了,比如weblogic各種rce漏洞等等。
④Web端漏洞