[Open Source] Desarrollé un mutador de huellas TLS en Rust para evadir sistemas Anti-Bot (JA3/JA4 scrambling)
Source Reddit Cybersecurity
Discussion
An open-source tool named AnonymProxy has been developed in Rust to evade anti-bot systems that use TLS fingerprinting techniques such as JA3 and JA4. It works by intercepting raw TCP ClientHello packets and dynamically mutating the TLS handshake extensions using a Fisher-Yates shuffle, resulting in unique and unpredictable TLS fingerprints per connection. This evasion technique targets platforms like Cloudflare and Akamai that rely on static TLS fingerprinting to block automated traffic. The tool is asynchronous, lightweight, and publicly available on GitHub. No known exploits in the wild or patches are applicable since this is a tool for evasion rather than a vulnerability. The impact is primarily on the effectiveness of anti-bot and automated traffic detection systems relying on TLS fingerprinting. No geographic targeting is indicated.
r/cybersecurity (opens in a new tab)u/N4xv0 points0 comments
Hola a todos,
Mi nombre es N4xv y he desarrollado AnonymProxy, un proxy inverso ligero y asíncrono en Rust diseñado para romper las mecánicas de fingerprinting estático (JA3/JA4) que usan plataformas como Cloudflare o Akamai para bloquear tráfico automatizado.
¿Cómo funciona?
El proxy intercepta el flujo TCP en crudo y muta el handshake TLS en tiempo real antes de que llegue al destino:
- Byte Peeking: Detecta el paquete
ClientHello(0x16,0x01). - Parsing Dinámico: Escanea las longitudes del Session ID y Cipher Suites en memoria para localizar el bloque de extensiones.
- Mutación: Extrae las extensiones TLS y les aplica un barajado Fisher-Yates utilizando un generador manual Xorshift64 (cero dependencias pesadas).
- Corrección de Cabeceras: Recalcula a nivel de bit las nuevas longitudes del Handshake y del Registro TLS.
El resultado es que cada conexión saliente genera una firma criptográfica completamente única e impredecible, evadiendo la inspección profunda de paquetes (DPI) sin alterar el comportamiento de la aplicación cliente.
Stack Técnico
- Lenguaje: Rust 1.95 (Rendimiento nativo y bajo nivel).
- Runtime: Tokio (Concurrencia asíncrona no bloqueante).
El código es totalmente de código abierto. Me interesa mucho recibir feedback sobre el parseo de bytes y cómo optimizar la fragmentación TCP del flujo.
Repositorio:https://github.com/N4xv/anonym-proxy
Un saludo, N4xv