当前位置:   article > 正文

隧道技术 Frp 多层内网穿透_frp隧道

frp隧道

Frp穿透

frp 是一个可用于内网穿透的高性能的全平台反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网

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

Frp 分为服务端和客户端

  • 服务端只能为 Linux 负责处理请求,转发流量
  • 客户端 linux 和 windows 都支持 负责把本地的流量连到服务器,让服务器读取&写入

部分配置参数

frps:
[common]
bind_addr = 0.0.0.0  # 服务端监听地址
bind_port = 7000 # 服务端监听端口,默认7000
auth_token = xxxxxxxx # 验证凭据

frpc:
[common]
server_addr = x.x.x.x # 连接的服务器IP地址
server_port = 7000 # 连接的服务器端口

[http_proxy]
type = tcp # 连接类型为tcp
local_ip = x.x.x.x # 本地ip
local_port = 8888 # 本地监听端口
remote_port = 8888 # 远程服务器端口
use_encryption = true #启⽤加密
plugin = socks5  # 使⽤插件socks5代理
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

测试环境如下

image-20211221131639020

主机 C 在内网,攻击者不能直接访问,如果想要访问内网主机可以把其端口映射到公网主机上,因
为这种方式是从 C 内部发起请求的,所以很好的穿透防火墙

  1. 在公网 VPS 上搭建服务端

    wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
    tar zxvf frp_0.33.0_linux_amd64.tar.gz
    mv frp_0.33.0_linux_amd64 frp
    cd frp
    
    • 1
    • 2
    • 3
    • 4

    配置服务端文件 frps.ini

    [common]
    bind_port = 7777
    token = ocean1234
    
    • 1
    • 2
    • 3

    客户端连接的端口、token 为连接密码,使用命令启动服务端

    ./frps -c frps.ini
    # 如果版本不正确无法启动
    
    • 1
    • 2

    image-20211221130345860

    以上服务端配置完毕,frps 启动后将监听监听 7000 端口,用 ps aux 查看进程信息 和 netstat antl 端口

    经常使用的话可以设置开启自启

    设置开机启动
    vi /lib/systemd/system/frps.service
    [Unit]
    Description=fraps service
    After=network.target syslog.target
    Wants=network.target
    [Service]
    Type=simple
    #启动服务的命令(此处写你的 frps 的实际安装目录)
    ExecStart=/root/frp/frps -c /root/frp/frps.ini
    [Install]
    WantedBy=multi-user.target
    #启动 frpc
    systemctl daemon-reload
    systemctl start frps
    #设置为开机启动
    systemctl enable frps
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  2. 客户端下载系统对应合适版本 frp,下载之后配置 frpc.ini 文件

    [common]
    server_addr = 112.12.179.138  #服务器的 IP
    server_port = 7777  # Frp 服务的端口
    token = ocean1234 #连接的密码
    
    [web] #服务器名
    type = tcp  #连接协议类型
    local_ip = 127.0.0.1  #访问的 ip 可以是内网任何一个 ip
    local_port = 80 # 本地端口
    remote_port = 7000 # 想要映射到远程服务器的端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注:配置文件中不要出现注释

    ./frpc.exe -c ./frpc.ini
    
    • 1

    正常启动

    image-20211221133323593

  3. 因为内网主机 80 端口存在业务,frp 启动成功后可以在浏览器访问 B 的 7000 端口,这样就成功将内网主机的 80 端口通过建立 Frp 内网穿透映射到了 B 的 7000 端口

    image-20211221133707828

注意:VPS 的7000 和 7777 端口需要在服务器安全组中放开

image-20211221130606098

稍后会更新一篇使用 Frp 多层内网通信隧道搭建的文章深入探索 Frp 这款工具

Frp多层内网实战

本机将会介绍使用 Frp 工具构建多层内网通信隧道,关于 Frp 上一节已经介绍过不在不说,直达链接

实验环境

  • 攻击者

    VPS:121.196.173.254

    Win11:192.168.179.1

  • 受害者

    Debian:192.168.179.134(实际应为公网 IP)、10.10.10.2

    Winserver2008:10.10.10.3、10.0.0.4

    Winserver2003:10.0.0.2、10.0.10.2

    Win xp:10.0.10.3

image-20211221153900564

环境配置

部分虚拟机需要添加双网卡,在虚拟机设置中设置 Lan 区段即可

image-20211221145901234

进入虚拟机后设置 IP 地址和子网掩码,要注意的是虚拟机设置中的网络适配器和电脑中网络适配器顺序一致,比如网络适配器2就是win中的本地连接2(如果之前配置过号码可能不一致,但肯定是第二个)

image-20211221151759795

所有主机设置完毕后保证同一网段主机可以相互 ping 通

操作

第一层隧道

在通过 webshell 或者其他手段拿到 Debian 主机权限后,发现其存在第二张网卡为 10.10.10.0/24 网段的,但是攻击机没办法直接访问这个网段

image-20211221154834556

因为无法直接访问内网网段,所以需要使用代理

  1. 攻击者 VPS 启动 frps 监听,配置文件如下

    [common]
    bind_addr = 0.0.0.0
    bind_port = 7000
    token = ocean1234
    
    • 1
    • 2
    • 3
    • 4

    启动

    ./frps -c frps.ini
    
    • 1

    image-20211221161321117

  2. Debian 启动 frpc,配置文件如下

    [common]
    server_addr = 121.196.173.254
    server_port = 7000          
    token = ocean1234
    
    [http_proxy]
    type = tcp
    local_ip = 10.10.10.2
    remote_port = 8888  
    local_port = 8888
    plugin = socks5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    连接远程的 VPS 7000 端口的 Frps 服务,将本机内网 IP 的 8888 端口流量转发出去

    使用命令启动 frpc

    ./frpc -c ./frpc.ini
    
    • 1

    image-20211221161032567

    VPS 防火墙这两个端口都要放行

    image-20211221161108863

  3. 攻击者 Win11,可以使用代理去访问,使用 proxifier 工具添加代理

    image-20211221161541538

    设置好代理之后可以使用隧道去扫描内网 10.10.10.0/24 网段主机,为了保证攻击者 win11 可以正常访问网络,可以设置代理规则

    image-20211221163235354

    扫描使用的是 Fscan

    项目地址:https://github.com/shadow1ng/fscan/releases/tag/1.6.3

    发现存在内网主机 10.10.10.3 开放 3389 端口

    image-20211221162600591

以下为第一层隧道示意图

image-20211221164709398

第二层隧道

假如我们通过3389弱口令拿到 10.10.10.3 这台主机,但是经过查看后发现它还有第二个网段 10.0.0.4/24

image-20211221163729687

但是目前我们的隧道只能访问到 10.10.10.0/24 这个网段,遂需要搭建第二层通信隧道,这个时候 Debian 既是客户端,也是服务端

  1. 修改 Debian 主机的 frp 配置文件

    现在 debian 既是客户端,也是服务端,需要修改 frps.ini

    [common]
    bind_addr = 10.10.10.2
    bind_port = 1111
    
    • 1
    • 2
    • 3

    这里的 IP 就是 Debian 主机的 10.0.0.0/24 网段 IP,启动 frps

    ./frps -c frps.ini
    
    • 1

    image-20211221183206336

  2. 通过 3389 配置 Winserver2008 的客户端 Frpc

    [common]
    server_addr = 10.10.10.2
    server_port = 1111
    
    [web]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 8888
    remote_port = 8888
    plugin = socks5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    启动 frpc

    frpc.exe -c frpc.ini
    
    • 1

    image-20211221183544504

  3. 攻击者设置 win11 代理并添加到代理链中

    image-20211221193033285

但在实际中我却遇到了问题

winserver2008 的 frpc 提示报错,搜索众多后发现可能是网络的问题

image-20211221192944840

而且把 frpc 端口换为 80,不使用 socks5,可以成功

之后的其实做法都一样所以不在演示

可以看这篇文章:https://mp.weixin.qq.com/s/79VkGffgpqXHJKlnmEz-IA

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/161214
推荐阅读
相关标签
  

闽ICP备14008679号