Loading

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 liuyun@192.168.200.128 -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 liuyun@192.168.200.128 -N
# 在 192.168.200.128 服务器上监听 6666 端口(127.0.0.1),将服务器上访问到 6666 端口的流量转发到本地能访问到的 10.0.0.1:7777 

ssh -D 127.0.0.1:6666 liuyun@192.168.200.128 -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
posted @ 2023-02-21 13:20  沉云  阅读(97)  评论(0编辑  收藏  举报