3、使用Windows命令來實現埠轉發
0x00 前言
在Windows系統中,從XP開始就內嵌了一個設定網路埠轉發的功能。依靠這個功能,任何到本地埠的TCP連線(ipv4或者ipv6)都能夠被轉發到任意一個本地埠,甚至是遠端主機的某個埠。並且,Windows系統並不需要去開啟監聽這個轉發埠的服務。
在Linux中,配置埠轉發十分容易,使用iptables配置規則即可。但是在Windows伺服器中,遠端訪問控制協議(RRAS)通常被用作埠轉發,但是有一種更簡單的配置方法,並且這種配置方法適用於windows的任意版本。
0x01 基礎命令
使用Portproxy模式下的Netsh命令即能實現Windows系統中的埠轉發,轉發命令如下
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
解釋一下這其中的引數意義
1.listenaddress -- 等待連線的本地ip地址
2.listenport -- 本地監聽的TCP埠(待轉發)
3.connectaddress -- 被轉發埠的本地或者遠端主機的ip地址
4.connectport -- 被轉發的埠
這裡舉個例子,我們的任務是將一個RDP服務(遠端桌面協議)轉發到任意埠,比如說3340(埠其實可以在服務設定中進行更改,但是這裡我們使用RDP協議來實現一個簡單點的埠轉發例子)。那麼好,我們需要將進來的流量轉發到3340埠(標準埠是3389)
以管理員身份輸入下面的命令列:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
這裡10.10.1.110也就是當前主機的ip地址
使用netstat命令來驗證3340埠是否正在監聽中netstat -ano | findstr :3340
注意:
如果這條命令沒有返回任何資訊,或者說通過netsh介面並沒有實現埠轉發的功能,那麼需要檢視下系統是否開啟了iphlpsvc(ip Helper)服務。
並且需要在網路配置中檢視埠轉發規則是否被建立、IPv6的支援是否開啟。
這些都是實現埠轉發的必備因素,沒有了IP Helper服務,沒有了IPv6的支撐,埠重定向就沒辦法得到實現。
這裡可以輸入命令來檢視哪項程式正在通過PID號來監聽這個埠(在本例中,涉及的PID號為636)tasklist | findstr 636
那麼下面我們從遠端主機來嘗試連線這個新轉發的埠3340,這裡3340埠就等同於原來的3389埠,這裡連線的地址為10.10.1.110:3340
連線應該就可以建立成功。
注意:連線時請確保防火牆(Windows防火牆或者其他的第三方防護軟體)允許外部連線到一個全新的埠,如果不允許,那麼只能自行新增一個新的Windows防火牆規則,命令如下:
netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow
當通過Windows防火牆介面為3340埠建立一個新的規則時,這個埠需要保證沒有被任何程式佔用,也就是說此埠僅供網路驅動使用。
你可以創立任意的Windows埠轉發規則,所有的netsh介面下的埠代理規則都是永久的,並且儲存在系統中(不受開機重啟的影響)
下面的命令是用來展示系統中的所有轉發規則:netsh interface portproxy show all
在本例中僅有一條從3340到3389的轉發命令
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
10.1.1.110 3340 10.1.1.110 3389`
注意:
埠轉發的設定也可以通過命令列來進行檢視netsh interface portproxy dump
========================
Port Proxy configuration
========================
pushd interface portproxy
reset
add v4tov4 listenport=3340 connectaddress=10.1.1.110 connectport=3389
popd
如果想要刪掉一個特定的埠轉發規則,使用如下的命令:
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110
如果想要清空當前所有的配置規則,命令如下:netsh interface portproxy reset
注意:這些轉發規則僅僅適用於TCP埠,對於UDP的埠轉發,使用上面的方法是無效的。還有在配置規則時,不能將127.0.0.1作為連線地址。
0x02 進階命令
如果你想要轉發TCP連線到一臺遠端主機,使用下面的命令即可:
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101
這條規則將會轉發RDP請求(也就是3389埠)到一臺ip地址為192.168.1.101的遠端主機上。
另一條埠轉發的好處就是,這看上去在本地,我們就以使用任意一個遠端主機的服務。
這裡舉個例子,我們想要轉發本地的5555埠到遠端主機157.166.226.25(CNN的官網地址)
netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp
輸入完命令後,現在我們在本地瀏覽器訪問http://localhost:5555/
那麼我們就可以發現訪問的其實是CNN的預設主頁。所以儘管我們訪問的是本地埠,實際上這裡訪問的是一個遠端頁面。
埠轉發同時可以用來將一個外部地址的某個埠轉發到同機上的虛擬機器裡。
0x03 後記
同時有這樣一種特例,那就是在Windows Server 2012 R2中,埠轉發規則有可能會在系統重啟後被重置,在這種情況下,你需要在網路協議中檢查是否存在配置不當,導致網路的間斷性斷開,或者當系統重啟時是否出現了ip地址的變換(推薦使用靜態ip)。在一個工作組裡,我通常是在windows任務計劃程式裡新增了一個實現埠轉發的指令碼。
在Windows 2003/XP中,你必須在登錄檔(HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters)中找到並設定IPEnableRouter引數為1才能實現埠轉發。
相關文章
- Linux-Windows 埠轉發LinuxWindows
- Windows 上使用 PowerShell 設定防火牆規則和埠轉發; Windows 上配置埠轉發,將 3389 埠的流量重定向到自定義埠;Windows防火牆
- 實現埠對埠的聊天 (轉)
- iptables實現埠轉發的過程(修改版)(轉)
- 伺服器實現埠轉發的N種方式伺服器
- 1、實戰SSH埠轉發
- windows檢視埠占用命令Windows
- Linux 或 Windows 上實現埠對映LinuxWindows
- 在 Fedora 上使用 SSH 埠轉發
- windows 環境 tcp/udp 埠轉發(草稿待寫)WindowsTCPUDP
- 利用nginx的stream模組實現內網埠的轉發代理Nginx內網
- (開發必看)windows檢視埠號使用情況Windows
- 使用 NSProxy 實現訊息轉發
- 設定 SSH 隧道(埠轉發)實戰
- 埠轉發方法
- SSH 埠轉發
- SSH埠轉發
- 實現用backup或tar命令來做目錄備份(轉)
- 玩轉SSH埠轉發
- C++Builder下實現埠讀寫 (轉)C++UI
- SSH遠端埠轉發實戰詳解
- 一行命令搞定windows檢視埠占用Windows
- 教你幾行程式碼實現全平臺埠資料的轉發行程
- 使用命令trap來捕捉訊號(轉)
- 關於埠轉發
- 批量監控主機方法3-使用ftp來實現FTP
- [ssh訪問內網伺服器]使用Natapp來進行內網埠轉發內網伺服器APP
- Python實現TCP/IP協議下的埠轉發及重定向示例PythonTCP協議
- Windows7/10實現ICMP(ping命令)Windows
- windows命令集(轉)Windows
- windows命令列工具(轉)Windows命令列
- 使用 cd 命令來改變所在目錄(轉)
- Go - 使用 sync.WaitGroup 來實現併發操作GoAI
- 在 Windows 命令列中,你可以使用以下一些命令和工具來實現檔案和資料夾的加密Windows命令列加密
- ros中使用serial包實現串列埠通訊ROS串列埠
- ssh埠轉發(ssh隧道)
- iptables 配置埠及轉發
- Linux IPTABLES埠轉發Linux