NAT Traversal

參考:https://book.hacktricks.xyz/tunneling-and-port-forwarding

簡介

困境:

  1. 攻擊者可以通過互聯網直接訪問到 web 服務器的 web 頁面(http、https),但是由於防火牆、路由器 ACL、負載均衡的存在,不允許建立其它協議的鏈接。故無法建立 forward tcp 鏈接。
  2. web 服務器可能處在不能直接訪問互聯網的環境,故不能建立reverse tcp。

協議封裝

icmp:https://github.com/esrrhs/pingtunnel (主機只讓 icmp 出網)

但好像只能linux 作爲服務端,windows 作爲客戶端。

# 分爲 client 和 server。client 將監聽端口收到的流量,以icmp 的形式傳給 server 端。server 端解碼icmp後,將流量轉發到相關的端口。
# client 將監聽端口收到的流量,以icmp 的形式傳給 server 端。
pingtunnel.exe -type client -l 0.0.0.0:8888 -s 192.168.200.128 -t 192.168.200.1:80 -tcp 1 -noprint 1
# server 端負責解釋接收到的 icmp 請求。並將其轉發到對應端口。
sudo ./pingtunnel -type server -noprint 1

dns:iodine 對網絡層進行封裝。

socks 代理工具

讓流量走 socks 代理

建立代理隧道的工具

frp (應用程序,socks、端口轉發等,反向連接)

(fast reverse proxy ) 支持多種協議。https://github.com/fatedier/frp 。用來將在內網中的服務器暴露到公網上。

使用方法:

  1. 根據攻擊者的主機和受害者的主機,下載不同的版本。 https://github.com/fatedier/frp/releases/tag/v0.37.0

  2. 可以根據 frps_full.ini / frpc_full.ini 修改要轉發的協議以及是否加密等。

  3. 服務端監聽客戶端的代理請求。使用 frps、 frps.ini,運行。frps -c frps.ini

  4. 客戶端選擇好要轉發的方式,主動連接服務端。將 frpc、 frpc.ini 上傳到受害者主機。配置好 frpc.ini 後運行。frpc -c frpc.ini

Nps

和 frp 類似,功能複雜的內網穿透工具。https://github.com/ehang-io/nps

Neo-reGeorg(http,socks、端口轉發,正向連接)

regeorg 的升級版 https://github.com/L-codes/Neo-reGeorg 。至今仍在更新中

使用方法:

  1. python3 neoreg.py generate -k password -o dir 使用其生成各種web 腳本。將其上傳到web 服務器。-f 404.html -c 404

  2. python3 neoreg.py -u 腳本url -k password 會默認在本地監聽監聽 1080 socks 端口。然後使用 proxychains 代理到這個 socks 端口即可。

    python3 neoreg.py -u http://192.168.200.1/tunnel.php -k abc -s -t 127.0.0.1:80 會轉發端口,而不是 socks 代理。

Ngrok

和 Neo-reGeorg 類似,不過可以藉助項目作者搭建的公網主機。

netsh (win內置命令,端口轉發)

需要管理員權限。

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=9999 connectaddress=192.168.200.128 connectport=9999 

監聽 127.0.0.1:9999 將其轉發到 192.168.200.128:9999

msf(meterpreter,socks、端口轉發)

portfwd add -l 80 -r 127.0.0.1 -p 80
# socks
# meterpreter session
background
route add 0.0.0.0/0 1
use auxiliary/server/socks_proxy
run

cobaltstrike(beacon,socks4a,端口轉發)

# beacon session
socks 9999
so

ssh(常見應用,socks、端口轉發)

ssh -R -L difference

ssh -L 127.0.0.1:6666:10.0.0.1:7777 [email protected] -N 
# 監聽本地 6666 端口(127.0.0.1),將訪問本地 6666 端口的流量轉發到 192.168.200.128 服務器能訪問到的 10.0.0.1:7777

ssh -R 127.0.0.1:6666:10.0.0.1:7777 [email protected] -N
# 在 192.168.200.128 服務器上監聽 6666 端口(127.0.0.1),將服務器上訪問到 6666 端口的流量轉發到本地能訪問到的 10.0.0.1:7777 

ssh -D 127.0.0.1:6666 [email protected] -N
# 監聽本地 6666 端口,將訪問到其的流量 socks 轉發到 192.168.200.128 服務器上。
# 和 -L 類似,不過是socks 轉發。

-L 限制了只能爲本地主機上的端口

-R 限制了只能爲遠端主機上的端口

-N 表示用於端口轉發

ip 部分可以省略,詳見 man 手冊。

vpn

未測試

chisel

http、portforward、socks、服務端客戶端集成

chisel.exe server --socks5
chisel.exe client --fingerprint "EfzONUnfiUlA5+HLmS2BmKAmX1rj7ckmQCgccVc3W5A=" http://127.0.0.1:8080 socks
chisel.exe server --host 192.168.1.110
chisel.exe client --fingerprint "sDMpYge9dHEBXEDQFS1PT9VDBz5cLRTjTKi+LdYCKJk=" http://192.168.1.110:8080 127.0.0.1:18080:192.168.200.130:80

sshuttle

已停止更新

venom(應用程序,socks、端口轉發、shell,正向連接)

分爲 agent 、server 兩個應用程序。

  1. 使用 agent 監聽某一端口,等待 server 的鏈接。 agent.exe -lport 9999 -passwd 123
  2. 使用服務端連接到監聽的客戶端。./admin_linux_x86 -rhost 127.0.0.1 -rport 9999 -passwd 123

abptts (http,端口轉發)

(A Black Path Toward The Sun)https://github.com/nccgroup/ABPTTS

將 tcp 流量由 http /https 進行轉發。

使用方法:

  1. 先使用 abpttsfactory.py 生成多種語言的包。選擇一門語言上傳到服務端。
  2. 然後使用 abpttsclient.py -c 生成的配置文件 -u 上傳的腳本 -f localhost:port/remotehost:port 來轉發端口。和 ssh -L 類似。不過是通過 http
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章