一、实验环境
环境一
环境二
环境一:DMZ 区的靶机运行 Frpc1 连接 VPS,同时运行 Frps2,内网 A 的 PC1 运行 Frpc2 连接靶机
环境二:DMZ 区的靶机运行 Frpc1 连接 VPS,内网 A 的 PC1 运行 Frps2,同时运行 Frpc2 连接本机
二、实验步骤
环境一
VPS 上启动 Frps1
1
Frps1.exe -c frps1.ini
frps1.ini 配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14[common]
bind_addr = 0.0.0.0
# 监听 7000 端口
bind_port = 7000
# 验证凭据,服务端和客户端的凭据⼀样
auth_token = 123456789
# 日志文件
log_file = ./frps.log
log_level = info
log_max_days = 3
# 允许端口
allow_ports = 1080
# 连接池上限
max_pool_count = 50DMZ 区服务器上启动 Frpc1,连接 VPS [192.168.10.16(模拟公网)]
1
Frpc1.exe -c frpc1.ini
frpc1.ini 配置如下
1 | [common] |
DMZ 区服务器上启动 Frps2,作为第二层代理链的 Server
frps2.ini 配置与 VPS 的 frps1.ini 配置相同,根据实际网络环境选择监听端口
在内网A的 PC1 上启动 Frpc2,连接 DMZ 区服务器[192.168.20.10]
frpc2.ini 配置与 DMZ 的 frpc1.ini 配置相同,根据实际网络环境选择连接端口
返回以下信息,说明连接成功
1
2
32020/11/07 22:33:13 [I] [service.go:288] [01608f2e6713a1e6] login to server success, get run id [01608f2e6713a1e6], server udp port [0]
2020/11/07 22:33:13 [I] [proxy_manager.go:144] [01608f2e6713a1e6] proxy added: [plugin_socks5]
2020/11/07 22:33:13 [I] [control.go:180] [01608f2e6713a1e6] [plugin_socks5] start proxy success
在攻击机配置 Proxifier 的代理链
环境二
同环境一
同环境一
在内网 A 的 PC1 运行 Frps2,frps2.ini 配置如下
1
2
3
4
5
6
7
8
9[common]
bind_addr = 0.0.0.0
bind_port = 7000
log_file = ./frps.log
log_level = info
log_max_days = 3
auth_token = 123456789
allow_ports = 1081
max_pool_count = 50在内网 A 的 PC1 运行 Frpc2,frpc2.ini 配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13[common]
server_addr = 192.168.20.11
server_port = 7000
auth_token = 123456789
use_encryption = true
use_compression = true
[plugin_socks5]
type = tcp
remote_port = 1081
plugin = socks5
plugin_user = abc
plugin_passwd = abc在攻击机配置 Proxifier 的代理链
与环境一不同,将第二层代理由
192.168.20.10:1081
改为192.168.20.11:1081
三、实验结果
两种建立代理链的方式均可从攻击机使用远程桌面登录内网 B 的 PC2
四、难点总结
Q:Windows Server 2003,Windows XP 无法启动 FRP 怎么办?
A:高版本 GO语言不支持 2003 和 XP 系统,使用低版本的 FRP,实测 frp v0.24 可用
Q:如何探测端口连通性?
A:此处应有下一篇文章的跳转链接
Q:如何检测二层代理可用性?
A1:netstat -anop tcp 查看链接
A2:扫描第二层代理能通而第一层无法访问的主机端口