🚄巧用TLS隐藏FRP流量特征
2022-9-8
| 2022-11-15
0  |  0 分钟
type
status
slug
tags
category
icon
password
Property
Nov 15, 2022 02:50 PM
date
summary

frp简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
 
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

前言

为什么要隐藏流量特征
如下图正常使用FRP过程中,FRP会有明显的流量特征,容易被天眼等设备监测。
 
notion image
 
于是乎我翻看frp的配置信息发现,原来frp是支持使用TLS证书加密会话的,于是乎我就在想我们是不是可以使用自签tls证书加密frp通信这样,流量检测设备就没法监测发现流量特征了
 
notion image

frp配置tls

生成自签证书

 
首先我们可以使用openssl生成我们需要的证书,这里需要客户端、服务端和ca证书
 

1. 生成CA根证书

1.1 准备ca配置文件,得到ca.conf
vim ca.conf
内容如下
 
1.2 生成ca秘钥,得到client.key
openssl genrsa -out client.key 4096
 
1.3 生成ca证书签发请求,得到ca.csr
配置文件中已经有默认值了,shell交互时一路回车就行。
 
1.4 生成ca根证书,得到ca.crt
 
1.5利用CA证书进行签名
使用CA证书对其它证书进行签名的方法为:
openssl x509 -req -in client.csr -extensions v3_usr -CA ca.crt -CAkey client.key -CAcreateserial -out client.crt

2. 生成终端用户证书

2.1 准备配置文件,得到server.conf
vim server.conf
内容如下
Chrome 58以后不再使用CN校验地址(就是就是浏览器地址栏URL中的那个地址host)了,而是使用SAN,注意配置里写对。
IE 11还是使用CN
 
2.2 生成秘钥,得到server.key
openssl genrsa -out server.key 2048
 
2.3 生成证书签发请求,得到server.csr
配置文件中已经有默认值了,shell交互时一路回车就行。
 
2.4 用CA证书生成终端用户证书,得到server.crt
 

开启配置

经过上面的操作已经得到了我们需要的文件,我们这时需要再服务的和客户端开启我们的配置
在frpc.ini添加如下内容
在frps.ini添加如下内容
测试连接正常
 
notion image

抓包验证

经过我们上面的配置frp交互已经使用了tls证书加密,这时候我们再抓包可以看到已经没有了原先的特征了。
 
notion image
 
 
技术分享
  • tools
  • cmd混淆使用cs前的一丢丢配置
    目录