端口转发

简介

端口转发是服务器A(地址:端口)将接收到的通信客户端C(地址:端口)完全转发给另一个服务器B(地址:端口),实现客户端C与服务器B的通信。可用于对服务器B隐藏客户端C的真实地址。端口转发也可应用于访问内网服务器(相当于服务器B)。
在这里插入图片描述

实现端口转发

可以应用于以下两种情况:

  1. 当客户端C可以正向连接服务器A。
  2. 当客户端C无法正向连接服务器A,但服务器A可以反向连接客户端C。
情况1:正向连接
  • 服务器A为windows系统

在这里插入图片描述

实验环境:

主机ip端口
Client(Kali)192.168.246.136\
ServerA(Win10)192.168.246.1308888
ServerB(win7)192.168.246.1316666

方法:使用netsh(windows自带),需要管理员权限进行配置。
步骤:

  1. 在ServerA上以管理员身份运行cmd.exe
  2. 添加转发规则:
    netsh interface portproxy add v4tov4 listenaddress=192.168.246.130 listenport=8888 connectaddress=192.168.246.131 connectport=6666
  3. 由于防火墙默认阻挡了入站通信,因此需要添加防火墙规则:
    netsh advfirewall firewall add rule name="transmit" protocol=TCP dir=in localport=8888 action=allow
    在这里插入图片描述
  4. 在ServerB上开启监听6666端口:
    nc.exe -lvp 6666
  5. 在Client上连接ServerA的8888端口
    nc 192.168.246.130 8888
    在这里插入图片描述
    ServerB监听到的是来自ServerA的连接在这里插入图片描述

此处netsh可能常用到的命令:

查看端口转发规则:netsh interface portproxy show all
删除端口转发规则:netsh interface portproxy delete v4tov4 listenaddress=192.168.246.130 listenport=8888
查看防火墙规则:netsh advfirewall firewall name="transmit"
删除防火墙规则:netsh advfirewall firewall delete rule name="transmit"

更多命令可以使用netsh -h查看

  • 服务器A为Linux系统

在这里插入图片描述

实验环境:(交换Client和ServerA角色)

主机ip端口
Client(Win10)192.168.246.130\
ServerA(Kali)192.168.246.1368888
ServerB(win7)192.168.246.1316666

方法:使用iptables(Linux自带),也需要管理员权限。
步骤:

  1. 切换root权限(su root)
  2. 添加转发规则,分别如下
    目的地址转换规则:
    iptables -t nat -A PREROUTING -p tcp -d 192.168.246.136 --dport 8888 -j DNAT --to-destination 192.168.246.131:6666
    源地址转换规则:
    powershell iptables -t nat -A POSTROUTING -p tcp -d 192.168.246.131 --dport 6666 -j SNAT --to-source 192.168.246.136
  3. 开启转发功能(将1写入到/proc/sys/net/ipv4目录下的ip_forward文件中,不修改的情况下是0):
    echo 1 >/proc/sys/net/ipv4/ip_forward
  4. 在ServerB上开启监听6666端口:
    nc.exe -lvp 6666
  5. 在Client上连接ServerA的8888端口
    nc.exe 192.168.246.130 8888
    在这里插入图片描述
    ServerB监听到的是来自ServerA的连接
    在这里插入图片描述

注:使用iptables配置的端口转发规则,在重启后都会失效,包括开启转发功能也会恢复到默认的0。
可以使用下面命令保存和恢复转发规则

保存规则:iptables-save > xxxxx
恢复规则:iptables-restore < xxxx
注:保存和回复-之间没有空格;
	xxxx为保存的文件路径,例如/root/Desktop/rule,指的是/root/Desktop下的rule文件。

此处iptables可能常用到的命令:

查看转发规则:iptables -L -t nat --line-numbers
删除所有规则:iptables -F -t nat
删除指定规则:iptables -t nat -D PREROUTING 1(删除nat表的PREROUTING链的第一条规则)

更多命令可以使用iptables -h查看,或者参考这篇文章

情况2:反向连接

在这里插入图片描述
方法:使用EarthWorm,Linux和Windows使用方法相同。
实验环境:

主机ip端口
Client(Win10)192.168.246.1306868
ServerA(Kali)192.168.246.1368888
ServerB(win7)192.168.246.1316666

步骤:

  1. 在Client上,监听6868端口,6868端口接收到的是反弹在8888端口上的:ew_for_Win.exe -s lcx_listen -l 6868 -e 8888
    在这里插入图片描述
  2. 在ServerA上,反弹给Client的8888端口的是ServerA连接在ServerB的6666端口的连接:
    ew_for_linux64 -s lcx_slave -d 192.168.246.130 -e 8888 -f 192.168.246.131 -g 6666
    在这里插入图片描述
    Client上显示OK!
    在这里插入图片描述
  3. 在ServerB上,监听6666端口:nc64.exe -lvp 6666
  4. 在Client上,连接本地的6868端口:nc.exe 127.0.0.1 6868
    在这里插入图片描述
    同样,ServerB监听到的是来自ServerA的连接
    在这里插入图片描述

此处EarthWorm一些参数可以使用-h查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值