Saltar al contenido principal
it/blog/obscura/research/uncontrollable/residual-network/

obscura/research/uncontrollable/residual-network

5 min di lettura

Categoria: Rete / Residui del Livello di Trasporto


1. Descrizione

Anche con spoofing TLS e HTTP, i segnali di rete residui persistono perché lo stack di rete di Obscura stesso è visibile al server di destinazione. Questi segnali non possono essere completamente normalizzati perché sono proprietà del SO del container e del percorso di rete.


2. Vettori

2.1 Fingerprint Stack TCP/IP

Pacchetto SYN ricevuto:
  Window: 64240
  TTL: 64
  MSS: 1452
  Opzioni: MSS, SACK_PERM, TIMESTAMP, NOP, WINDOW
  Window Scale: 10
  DF: True

Fingerprint SO del container:

Base Container Window TTL MSS Opzioni Simile a JA4T
Alpine Linux 29200-65535 64 1460 M,S,T,N,W 29200_2-4-8-1-3_1460_7
Debian/Ubuntu 29200-65535 64 1460 M,S,T,N,W 29200_2-4-8-1-3_1460_7
Distroless 29200-65535 64 1460 M,S,T,N,W Dipende dal runtime Go/Rust

Entropia: ~4-6 bit

Mitigazione: Nessuna a livello di proxy. Lo stack TCP del container è ereditato.

2.2 Tempo di Andata e Ritorno di Rete (RTT)

L'RTT è misurabile dal server:

Richiesta inviata:    T1
Risposta ricevuta:    T2
RTT = T2 - T1    // Incluso tempo di elaborazione proxy
  • L'RTT reale varia per percorso di rete
  • Il proxy aggiunge latenza coerente (rilevabile come tempo di elaborazione extra)
  • La varianza dell'RTT nel tempo crea un pattern

Entropia: ~5-8 bit (firma percorso + latenza proxy)

Mitigazione: Non può essere eliminato, ma può essere parzialmente nascosto dietro VPN/Tor.

2.3 Clock Skew

// Calcolo lato server
const clientTimestamp = parseInt(getHeader('Date'))
const serverTime = Date.now()
const skew = serverTime - clientTimestamp
// La deriva dell'orologio hardware è coerente

Ogni orologio hardware deriva a un ritmo unico (parti per milione). Nel corso di minuti di interazione, la deriva diventa misurabile.

Entropia: ~4-8 bit

Mitigazione: Obscura può normalizzare gli header HTTP Date, ma le opzioni TCP timestamp nel pacchetto SYN rivelano anche informazioni sull'orologio.

2.4 HTTP/2 SETTINGS (Se Non Falsificato)

Se Obscura non implementa HTTP/2 SETTINGS personalizzato, i valori predefiniti della libreria rivelano il proxy:

Libreria Proxy Initial Window Max Concurrent Header Table Size
Go net/http 6291456 250 4096
Rust hyper 65535 100 4096
Node.js http2 65535 100 4096
Envoy 1048576 100 65536

Entropia: ~6-10 bit

Mitigazione: Valori frame SETTINGS personalizzati che corrispondono al profilo browser target.

2.5 MTU e Caratteristiche del Percorso

  • Il path MTU influisce sul TCP MSS
  • Il TTL rivela il conteggio hop approssimativo verso l'utente
  • Il comportamento del router/ISP crea pattern unici (stile NAT)

Entropia: ~3-5 bit

Mitigazione: Instrada attraverso VPN/Tor per normalizzare.

2.6 HTTP/3 / QUIC (Se Non Bloccato)

Parametri di trasporto QUIC:

  • Lunghezza e valore ID connessione
  • Negoziazione versione
  • Limiti iniziali di controllo del flusso
  • Parametri handshake TLS 1.3 su QUIC

Entropia: ~8-12 bit

Mitigazione: Blocca UDP 443 per forzare il fallback TCP.


3. Punti di Forza dell'Attaccante

Forza Spiegazione
Sempre presente I segnali di rete sono inevitabili in qualsiasi connessione TCP/IP
Nessun JS richiesto Questi segnali sono osservabili a livello di trasporto
Difficile da falsificare Lo stack TCP/IP è a livello OS, non a livello applicativo
Coerente Il percorso di rete cambia raramente
Correlazione incrociata Usato insieme ai segnali HTTP/TLS

4. Debolezze dell'Attaccante

Debolezza Spiegazione
Bassa entropia individuale TCP/IP da solo non può identificare un utente specifico
Ambiente container condiviso Più utenti dietro lo stesso container appaiono identici
Utile solo in aggregato Necessita di combinazione con altri segnali
VPN/Tor normalizza Instradare attraverso VPN/Tor elimina i fingerprint di rete

5. Rilevamento della Manipolazione

Tecnica Come Funziona
Mismatch TLS vs TCP TLS Chrome + stack TCP Linux = proxy
RTT vs posizione dichiarata Utente dichiara posizione USA ma RTT suggerisce altro continente
HTTP/2 vs dichiarazione browser SETTINGS HTTP/2 di Go con User-Agent Chrome
Geolocalizzazione IP vs fuso orario profilo Mismatch tra profilo e origine di rete reale

6. Mitigazioni per Obscura

6.1 Cosa Può Fare Obscura

Mitigazione Efficacia Rilevabilità Implementazione
Spoofing TLS tramite utls Alta Bassa Richiesto per Obscura
Spoofing HTTP/2 SETTINGS Media Bassa Valori SETTINGS personalizzati
Instrada attraverso VPN/Tor upstream Alta Media Configurabile dall'utente
Blocca UDP 443 (QUIC) Alta Bassa Regola iptables
Normalizza header HTTP Date Bassa Bassa Riscrittura header

6.2 Cosa Non Può Fare Obscura

Non Può Perché
Cambiare lo stack TCP/IP del container A livello OS, ereditato dall'immagine base del container
Eliminare l'RTT Fisica della distanza di rete
Cambiare il clock skew La deriva dell'orologio hardware è fisica
Rimuovere le informazioni sul conteggio hop I decrementi TTL sono inevitabili

6.3 Approccio Raccomandato

1. Spoofing fingerprint TLS tramite utls         (critico: massima priorità)
2. Mirroring HTTP/2 SETTINGS                     (priorità media)
3. Blocca UDP 443                                (previene bypass QUIC)
4. VPN/Tor upstream opzionale                    (normalizza tutti i segnali di rete)
5. Accetta residui TCP/IP                        (bassa entropia individuale)

7. Riferimenti di Ricerca

  • FoxIO (2024). "JA4+ Suite: TLS, TCP, and QUIC Fingerprinting." FoxIO Blog.
  • Zalewski, M. (2007). "p0f: Passive OS Fingerprinting." lcamtuf.coredump.cx/p0f.
  • Beverly, R. (2004). "A Robust Classifier for Passive TCP/IP Fingerprinting." PAM 2004.
  • Satori (2025). "Python rewrite of passive OS fingerprinting tool." GitHub: xnih/satori.