Panoramica
Il fingerprinting TLS identifica i client in base ai parametri che inviano durante l'handshake TLS (messaggio ClientHello). Browser e sistemi operativi diversi utilizzano configurazioni TLS diverse.
Fingerprint JA3
JA3 è un hash calcolato dal ClientHello TLS:
JA3 = MD5(Cifratura + Estensioni + CurveEllittiche + FormatiPuntoCurveEllittiche)
Dove ogni campo è concatenato:
cifratura: 49199,49196,52393,... (elenco ID suite di cifratura)
estensioni: 0,23,65281,... (elenco ID tipi di estensione)
curve: 29,23,24,... (elenco gruppi supportati)
formati: 0 (formati punto EC)
Esempi di Hash JA3
| Browser | JA3 |
|---|---|
| Chrome 120 (Windows 11) | 6734f37431670b3ab4292b8f60f29984 |
| Firefox 121 (Windows 11) | d1b8d7e1c7c8b0a6b1a2c3d4e5f6a7b8 |
| Safari 17 (macOS 14) | 9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d |
| Chrome 120 (Android 14) | b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6 |
Fingerprint JA4 (Nuova Generazione)
JA4 estende JA3 analizzando anche:
- Versione TLS
- Presenza SNI
- Protocolli ALPN
- Impostazioni HTTP/2
Formato: tls_version.cifratura.estensioni.sni.alpn
Fingerprinting HTTP/2
Le connessioni HTTP/2 rivelano fingerprint aggiuntivi tramite:
- Parametri frame SETTINGS (MAX_CONCURRENT_STREAMS, INITIAL_WINDOW_SIZE, ecc.)
- Temporizzazione WINDOW_UPDATE
- Comportamento frame PING
- Struttura frame Priority
Spoofing del Fingerprint TLS
Strumenti come TLSMask e utls possono modificare il ClientHello per imitare un altro browser:
ClientHello Reale [Spoofer TLS] ClientHello Imitato Server
Approccio
- Cattura un ClientHello reale dal browser/SO target
- Salva come modello
- Modifica il ClientHello in uscita per corrispondere ai parametri del modello
- Inoltra alla destinazione
Implicazioni per Obscura:
- Lo spoofing TLS può essere fatto a livello di proxy, a differenza di Canvas/WebGL/audio
- Go ha la libreria
utls(fork dicrypto/tlscon personalizzazione ClientHello) - Rust ha
tls-parser+ implementazione TLS personalizzata - Il proxy deve comunque terminare TLS per il MITM, quindi il fingerprint TLS visto dal server sarà l'implementazione TLS Go/Rust del proxy a meno che non venga consapevolmente falsificato
Conclusioni
- Il fingerprinting TLS (JA3/JA4) è affrontabile a livello di proxy
- La libreria
utlsdi Go fornisce la manipolazione diretta del ClientHello - Deve essere una funzionalità principale di Obscura
- Senza spoofing TLS, la libreria TLS del proxy rivelerebbe che un proxy è in uso