Metasploit-framework 內網穿透:多場景詳解
前言
對于一名合格的網絡安全從業者來說,Metasploit-framework是必會不可的工具,大大降低了exploit的利用門檻。
但在實戰中,復雜的網絡環境以及防火墻策略都會對Metasploit-framework的使用進行干擾。
在筆者對網上的文章進行研究后,發現絕大多數文章解決的場景都類似于《msf生成木馬時的內網映射》,并未涉及到在 exploit 模塊中如何使用反彈shell。
此文章旨在解決不同場景下的使用方法,同時讓新手也能輕松理解。
基礎知識
1. reserve與bind的區別
Bind:
正向(主動)連接,意思為在目標主機打開一個監聽端口,MSF所在主機主動發起對目標主機的tcp/http/https連接。
優點:由于是MSF所在主機主動連接,所以MSF所在主機是否在內網并無影響,只要能訪問到目標主機即可。
缺點:打開監聽端口與入站請求動作過于明顯,且受到目標主機防火墻影響。
Reserve:
反向(被動)連接,意思為在MSF所在主機打開一個監聽端口,目標主機在運行payload后會主動發起對MSF所在主機的tcp/http/https連接。
優點:由于是目標主機主動連接,所以目標主機是否在內網并無影響,只要能訪問到MSF所在主機即可。
缺點:目標主機需要能訪問到MSF所在主機,但在實際滲透中MSF大多數搭建在本機(不排除直接搭建在服務器上)。
2. meterpreter_reverse_tcp與meterpreter/reverse_tcp的區別
meterpreter_reverse_tcp會在第一次建議連接時執行所有payload。
meterpreter/reverse_tcp會在第一次執行較小的payload,然后通過此payload下載完整的payload并執行
3. meterpreter_reverse_tcp與shell_reverse_tcp的區別
meterpreter_reverse_tcp為封裝有大量模塊的MSF模塊,可理解為shell pro。
shell_reverse_tcp直接反彈shell,可以直接通過nc接受。
注:本文主要對內網中的MSF進行探討,對于公網上的MSF可直接反連
前期準備
MSF所在攻擊機:內網機器,127.0.0.1
目標主機:target.com
Frp代理:p.com:8000 -> 127.0.0.1:7000
1. MSF生成反連木馬上線
筆者在前言中提到過此種場景的解決方法在網上大量流傳,只做一些查漏補缺,不做過多贅述。
使用場景:
內網MSF,目標主機不限,目標主機運行木馬反彈上線。
基本思路:
生成木馬,反連地址為p.com:8000,開啟MSF監聽127.0.0.1:7000。
常見問題:
MSF運行在虛擬機中,frp代理在物理機,以Vmware為例,只需開啟nat地址映射即可。
2. MSF通過Exploit模塊上線
使用場景:
內網MSF,目標主機不限,通過MSF Exploit模塊執行payload反彈上線。
基本思路:
當我們使用Exploit模塊時
(此處拿windows/smb/ms17_010_eternalblue舉例),MSF默認會給我們綁定windows/x64/meterpreter/reserve_tcp的payload

查看配置選項

通常來說我們只需配置RHOST, RPORT, LHOST, LPORT。
RHOST與RPORT為目標機器地址與端口
LHOST與LPORT有兩個作用:
MSF綁定LHOST與LPORT,監聽連接請求
執行Payload時反彈回連IP與端口
此處就產生了一個問題:
在有代理的情況下,我們需要讓MSF綁定監聽本機127.0.0.1的7000端口,但需要執行Payload時反彈回連FRP代理p.com的8000端口,需要設置兩個不同的LHOST/LPORT分別用于監聽/回連。
那我們能否直接讓MSF綁定FRP代理p.com的8000端口呢

筆者只能尋找MSF是否支持配置不同的監聽地址/端口與反彈地址/端口,發現了如下選項

但并未能成功利用此選項達到預期效果,若有大神知道此選項用法煩請告知。
只得從另一個角度出發,另開一個MSF作為監聽本地7000端口,將Exploit利用反彈給FRP代理p.com:8000端口。
Listen Msf:

Exploit Msf:

但前面也已經提到過,直接綁定p.com:8000會無法綁定,會直接綁定本機8000端口,此時我們需要用到選項disablepayloadhandler
set disablepayloadhandler true
設置取消handle(即listen),此時LHOST/LPORT只有一個作用,就是確定執行payload后的反連地址,運行后即可成功監聽。
擴展
1.當代理中的本機端口與遠程端口保持一致的,可直接設置LHOST/LPORT為遠程IP/端口,因為綁定失敗時會使用本機IP進行綁定,但payload反彈地址不變
2.某些exploit模塊在payload執行之后還會進行第二次payload下載,碰到這種情況時有兩種解決方法:
1.買服務器安裝MSF一勞永逸
2.使用exec模塊直接執行nc、bash等命令反彈shell
3.使用exec模塊執行命令反彈shell永遠可做為備選方案,但是無法利用msf上豐富的擴展