FRP:frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
URL:https://github.com/fatedier/frp
最新的0.44版:
1.plugin_key_path如果和plugin_crt_path对于插件https2https和为空,则使用自动生成的证书https2http。
2.服务器仪表板支持 TLS 配置。
特点:
1.客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
2.采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
3.代理组间的负载均衡。
4.端口复用,多个服务通过同一个服务端端口暴露。
5.多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 6.客户端完成某些工作。
7.高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
8.服务端和客户端 UI 页面
FRP代理类型:
类型 描述
tcp 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
udp 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
http 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。
https 针对 HTTPS 应用定制了一些额外的功能。
stcp 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
sudp 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
xtcp 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。
tcpmux 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。
1. 了解目录:
作者工具的帮助手册:https://gofrp.org/docs/overview/
大概分析了一下它的内容:
Cmd:命令行模式
Conf:配置文件示例
Pkg:主要文件
Web:web模式
2. 工作模式
客户端:(frpc) 加载配置:(frpc.ini)
服务端:(frps) 加载配置:(frps.ini)
3. 使用
命令:
(linux)
./frps -c frps.ini
./frpc -c frpc.ini
(windows)
frps.exe -c frps.ini
frpc.exe -c frpc.ini
二开:
TLS加密
tlsenable = true #frpc.ini中加入
传输压缩
use_encryption = true
use_compression = true #frpc.ini中加入,开启tls不必进行传输压缩
信息修改
新版:\frp-dev\pkg\msg\msg.go
旧版:\frp\models\msg\msg.go
Version string json:"NS_learn"
Hostname string json:" NS_ip"
Os string json:" NS_0s"
Arch string json:" NS_ac"
User string json:" NS_username"
PrivilegeKey string json:" NS_pKEY"
Timestamp int64 json:" NS_time"
RunId string json:" NS_rID"
Metas map[string]string json:" NS_m"
流量特征修改
新版:\pkg\util\net\tls.go
旧版:\frp\utils\net\tls.go
var (FRP_TLS_HEAD_BYTE = 0x16 # 0x16十六进制修改)
c.Write([]byte{byte(FRP_TLS_HEAD_BYTE),byte(0x71),byte(0x72)}) #修改
sc, r := gnet.NewSharedConnSize(c, {4}) #4修改
buf := make([]byte, {3}) #3修改
if n == 1 && int(buf[0]) == FRP_TLS_HEAD_BYTE { #1修改
写死配置
pkg\config\client.go # frpc
pkg\config\server.go # frps
(根据自己想要的配置来进行写死)
GO编译
set GOARCH=amd64
set GOOS=linux
go build main.go
效果
优化FRP-Github链接
https://github.com/CllmsyK/nsfrp_0.45_amd64
使用
目标:nsfrp_0.44.exe
VPS:./nsfrp_0.44_mad64
拓展方法
方法一:远程加载frpc.ini(配置隐藏)
缺点:看命令日志会暴露一个web服务端,对流量做分析仔细点还是能看到
优点:隐藏配置文件,给溯源团队增加工作量
使用:
思考:配置文件只是用于加载,通过快速打点获取公网上的任何一台web服务,将配置文件上传,再通过公网得配置文件来加载进去frpc.exe中,接着把该配置文件从该web服务器上删除,如果再给该vps Ip做个CDN隐藏,是否能让溯源团队工作量增加。