优化Frp研究与使用

admin 2022年10月18日15:08:16评论130 views字数 2153阅读7分10秒阅读模式

0x00 前言

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

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/

优化Frp研究与使用

大概分析了一下它的内容:

cmd:命令行模式conf:配置文件示例pkg:主要文件web:web模式w


2.工作模式

客户端:(frpc)  加载配置:(frpc.ini)

服务端:(frps)  加载配置:(frps.ini)

优化Frp研究与使用


3.使用

命令:

(linux)./frps -c frps.ini./frpc -c frpc.ini(windows)frps.exe -c frps.inifrpc.exe -c frpc.ini



0x01 正文

二开:

https://github.com/CllmsyK/nsfrp_0.45_amd64

TLS加密

tlsenable = true  #frpc.ini中加入

传输压缩

use_encryption = trueuse_compression = true  #frpc.ini中加入,开启tls不必进行传输压缩

信息修改

新版:frp-devpkgmsgmsg.go

旧版:frpmodelsmsgmsg.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"'

流量特征修改

新版:pkgutilnettls.go

旧版:frputilsnettls.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修改

写死配置

pkgconfigclient.go # frpcpkgconfigserver.go # frps

优化Frp研究与使用

优化Frp研究与使用

(根据自己想要的配置来进行写死)

GO编译

set GOARCH=amd64set GOOS=linuxgo build main.go

效果

优化Frp研究与使用

使用

目标:nsfrp_0.44.exe

VPS:./nsfrp_0.44_mad64



0x03 拓展方法

方法一:远程加载 frpc.ini(配置隐藏)

缺点:看命令日志会暴露一个web服务端,对流量做分析仔细点还是能看到

优点:隐藏配置文件,给溯源团队增加工作量

使用:

优化Frp研究与使用

思考:配置文件只是用于加载,通过快速打点获取公网上的任何一台 web 服务,将配置文件上传,再通过公网的配置文件来加载进去 frpc.exe 中,接着把该配置文件从该 web 服务器上删除,如果再给该 vps Ip 做个 CDN 隐藏,是否能让溯源团队工作量增加。

方法二:购买 CDN 域名来替代真实 IP(有钱即可)

方法三:通过域前置隐藏真实 IP(未实现)

原文始发于微信公众号(NS Demon团队):优化Frp研究与使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月18日15:08:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   优化Frp研究与使用https://cn-sec.com/archives/1356940.html

发表评论

匿名网友 填写信息