32 lines
1.3 KiB
Markdown
32 lines
1.3 KiB
Markdown
# Shadow-TLS
|
|
### TLS伪装代理 -- 包装任意TCP连接为真正合法域名的TLS连接
|
|
## 基本原理
|
|
与服务端连接后,服务端会请求指定合法的HTTPS域名(例如www.apple.com)并转发TLS握手流量,与客户端TLS握手成功后后续将转发实际的TCP流量,对审计设备(防火墙/上网行为管理软件/零信任网关)而言你是访问一个合法且是真实证书的HTTPS网站.
|
|
|
|
## 使用场景
|
|
- 在有域名白名单的情况下需要将流量转发出去
|
|
- 对抗网络审计设备的审查
|
|
|
|
## 使用方法
|
|
- 服务端示例:
|
|
监听端口443,收到请求后先创造到www.apple.com的TLS握手,随后转发本地的8888端口流量到客户端
|
|
```shell
|
|
./shadowtls server -l 0.0.0.0:443 -f www.apple.com:443 -t 127.0.0.1:8888
|
|
```
|
|
|
|
- 客户端示例:
|
|
```shell
|
|
./shadowtls client -l 0.0.0.0:11222 -s 145.142.63.32:443 -d www.apple.com
|
|
```
|
|
|
|
## 功能特性
|
|
- TLS连接多路复用,减少TLS握手次数
|
|
|
|
## 安全性特别说明
|
|
- 包装的TCP流量没有加密,如有需求请加密后再转发
|
|
- 多路复用特性使用了smux的框架,有协议特征,有更进一步需求需修改源码二次加密
|
|
- TLS后续流量没有进行Application Data封装,深层次的协议分析可以发现此特征
|
|
|
|
## 特别说明
|
|
- 感谢v2ex网友ihciah的思路灵感.
|
|
- 仅供技术研究,请勿用于非法用途. |