aruxiee/tls-trouble
GitHub: aruxiee/tls-trouble
基于 Go 和 uTLS 的高保真 TLS 隐身引擎,通过伪造浏览器指纹和 ALPN 剥离来绕过基于协议特征的检测系统。
Stars: 0 | Forks: 0
# 🆘 tls-trouble: 协议隐身与指纹引擎
**tls-trouble** 是一个跨平台的 Go 脚本,旨在审计 Web 安全过滤器并绕过基于协议的检测。它利用 **uTLS** 模拟高保真的浏览器指纹,并剥离 **ALPN** 扩展,使现代服务器降级到 HTTP/1.1,从而绕过 CDN 和 WAF 使用的二进制协议陷阱 (HTTP/2) 以及 JA3/JA3S/JA4 指纹识别。
⚠️ **请注意:** 本项目仅用于 **教育和授权渗透测试**。我对你们可能进行的任何恶意行为不承担任何责任。
## 🚀 技术概述
现代安全解决方案通过监控 TLS 握手来识别自动化脚本。该工具通过将其身份伪装成合法浏览器并修改握手协商来应对这一点。
* **指纹伪造:** 完美复制 Chrome 120 和 Firefox 105 的 `ClientHello`。
* **协议强制:** 手动编辑 TLS 扩展以移除 `h2` (HTTP/2) 支持,从而生成可读的 HTTP/1.1 流。
* **跨平台:** Windows 和 Linux 只需单一的 Go 源码。
* **可扩展性:** 可扩展用于高性能潜在客户数据库管理和数据提取。
## 💎 实现细节
您需要最新版本的 Go 才能进行安装。您可以从[这里](https://golang.org/dl/)下载安装程序,或者使用包管理器进行安装。
- **Windows:** `choco install golang`
- **Debian:** `sudo apt install golang-go`
- **Arch:** `sudo pacman -S go`
- **MacOS:** `brew install go`
### 🛠️ 构建工具 (`build.py`)
此脚本处理交叉编译和依赖项管理。
#### 1. 编译
运行构建器以下载所需的 Go 依赖项,并为您的当前环境生成 Go 二进制文件。
```
python3 build.py
```
#### 2. 脚本说明
构建器在输出二进制文件之前,会执行 `go mod tidy` 来验证环境,随后使用 `go build -o` 输出二进制文件。
* **Windows:** `tls-trouble.exe`
* **Linux:** `tls-trouble_linux`
### 💅🏻 Python 封装器
Python 脚本充当高级封装器,允许您将 URL 直接从终端传递给底层引擎。
将任何 URL 作为参数传递给封装器。它会自动检测您的操作系统并使用正确的二进制文件。
```
python3 python_wrapper.py
```
## 噫 实现逻辑
### ⚙️ Go 引擎 (`main.go`)
**tls-trouble** 的核心充当一个代理模拟器。它不仅更改 `User-Agent` 字符串,还重新设计通信堆栈,以确保在 OSI 模型各层的一致性。
### 制 第 7 层: 语义与协议伪造 (应用层)
在最高层,引擎确保服务器准确接收到期望的现代浏览器信息:
* **请求头同步:** `User-Agent` 与 TLS 握手身份严格配对。Firefox 握手配对 Chrome User-Agent 是一个常见的失误,本引擎防止了这种情况。
* **ALPN 操控:** 引擎强制从扩展中剥离 `h2` (HTTP/2) 协议。通过这样做,服务器被迫回退到 HTTP/1.1。这绕过了复杂的特定于 HTTP/2 的指纹识别(如标头帧排序),并允许通过标准流更轻松地提取数据。
* **编码保真度:** 全面支持 `br` (Brotli) 和 `gzip`。引擎能够处理现代网站使用的高压缩响应。
### ェ 第 4 层: TLS 与握手完整性 (传输层)
该工具还能对抗高级幽灵检测系统。大多数爬虫使用默认的 Go `crypto/tls` 库,该库具有较弱的签名。
* **uTLS 指纹伪造:** 引擎使用 `refraction-networking/utls` 库来构建一个与真实浏览器在位级别上完全相同的 **ClientHello** 数据包。这包括
* **密码套件排序:** 匹配 Chrome 或 Firefox 使用的加密算法的确切优先级列表。
* **扩展填充:** 复制现代浏览器用于防止固化的 grease 值和特定扩展长度。
* **JA3/JA3S/JA4:** 通过模拟 TLS 握手,该工具生成合法的 **JA3/JA4 哈希值**。安全过滤器(如 Cloudflare 或 Akamai)会看到受信任的浏览器哈希值,而不是 `Go-http-client` 哈希值。
* **TCP/IP 堆栈一致性:** 由于它作为原生二进制文件运行(通过 `build.py` 编译),引擎利用主机的原生网络堆栈。结合 TLS 模拟,它确保数据包的时间和窗口大小看起来与 Linux 或 Windows 上的桌面用户一致。
### ァゥ “身份交换”机制
脚本遵循严格的执行流程来维持这种伪装。
- **选择:** 随机选择一个 `Profile`(例如 `Chrome_Windows`)。
- **Socket 创建:** 打开原始 TCP 连接。
- **握手自定义:** 引擎生成一个 `utls.Config` 并应用 `UClient` 预设。
- **tls-trouble:** 在发送握手之前,脚本拦截 `ALPNExtension` 并删除 `h2` 协议字符串。
- **加密隧道:** 握手完成,创建一个服务器认为是标准浏览器会话的隧道。
## 📊 规避矩阵
| 检测层 | 标准爬虫 | tls-trouble |
| :--- | :--- | :--- |
| **TLS 指纹识别** | 使用默认的 Go/Python 密码(极易被标记)。 | 模拟 Chrome/Firefox 握手密码和扩展。 |
| **协议陷阱** | 通过 HTTP/2 连接,更难操纵。 | 通过 ALPN 剥离强制降级到 HTTP/1.1。 |
| **User-Agent 匹配** | 握手与标头不匹配。 | 握手和 User-Agent 成对随机化匹配。 |
| **WAF 过滤** | 阻止非浏览器的 JA3/JA4 签名。 | 呈现完美的现代浏览器 JA3/JA4 签名。 |
### 🎀 为什么要使用它?
如果您正在抓取敏感的潜在客户列表或业务数据,您应该定期使用 **tls-trouble**,因为标准库很容易被现代 CDN 阻止。该工具确保您的连接与普通用户浏览互联网毫无区别。
* **指纹伪造:** 凭借高保真的 `uTLS` 配置,该工具绕过了通常会标记自动化脚本的 JA3 和 JA4 黑名单。
* **协议降级:** ALPN 剥离允许强制将流量转入传统的检查流中,这可以绕过现代协议陷阱。
* **签名掩盖:** 将请求头与密码套件同步,可以防止被基于签名的 IDS/IPS 系统检测到。
* **自动化审计:** Python 封装器允许跨数千个端点进行快速测试和数据收集。
### 🕵️ 渗透测试与安全审计
除了数据收集之外,**tls-trouble** 还可以作为红队和渗透测试场景的工具。
* **WAF 规避测试:** 验证 WAF 是真正在检查握手,还是仅仅将特定的 JA3/JA4 浏览器哈希列入白名单。
* **协议降级攻击:** 模拟从 ALPN 扩展中剥离 `h2` 以强制服务器进入 HTTP/1.1 流的场景。
* **隐蔽侦察:** 执行信息收集(如获取 `.env` 或 `.git` 文件)而不在日志中留下自动化扫描器痕迹。
* **密码套件审计:** 调整配置以使用已弃用的密码,以了解服务器的 TLS 配置是否遵循现代强化标准。
### 🤔 我该如何使用它?
* **配置:** 在 `main.go` 中的 `BrowserProfiles` 切片中添加新浏览器,以扩展您的身份轮换。
* **集成:** 在封装器中使用 `fetch()` 函数将 Go 引擎集成到您的潜在客户管理或渗透测试脚本中。
* **请求头:** 调整 Go 中的 `reqStr` 以添加自定义 cookies、来源页请求头、特定会话 token 等,以便与站点进行交互。
With ❤️ by Aradhya
标签:ALPN剥离, CDN绕过, EVTX分析, Go语言, HTTP/1.1, HTTP/2, JA3绕过, JA4绕过, Radare2, TLS指纹, URL抓取, uTLS, WAF绕过, 中间人防御规避, 协议降级, 商业线索生成, 指纹伪造, 数据抓取, 日志审计, 流量伪装, 程序破解, 网络安全, 逆向工具, 隐匿通信, 隐私保护