Categoria: Tra Livelli / Meta-Rilevamento
1. Descrizione
L'atto di proteggersi crea pattern rilevabili. Gli strumenti privacy sono paradossali: più aggressivamente modificano i segnali, più creano nuovi segnali che identificano "utente di strumento privacy". Questo documento analizza come i servizi di fingerprinting rilevano proxy simili a Obscura attraverso incoerenze e anomalie.
2. Vettori di Rilevamento
2.1 Incoerenza del Profilo tra Livelli
Il rilevamento più potente: confrontare i segnali tra livelli.
| Livello A |
Livello B |
Coerenza Attesa |
Segnale di Incoerenza |
| User-Agent OS |
Fingerprint TLS (JA3) |
Win11 → JA3 Windows |
UA Chrome su Win11 + JA3 Linux |
| User-Agent OS |
Stack TCP/IP |
Win11 → TTL=128 |
UA Win11 + TTL=64 (Linux) |
| User-Agent browser |
HTTP/2 SETTINGS |
Chrome → SETTINGS di Chrome |
UA Chrome + SETTINGS di Go |
| Sec-CH-UA-Platform |
navigator.platform |
"Windows" → "Win32" |
"Windows" + "Linux x86_64" |
| Accept-Language |
navigator.language |
Corrispondenza |
Mismatch (es. header "en-US" + navigator dice "es-ES") |
| Fuso orario |
Geolocalizzazione IP |
Corrispondenza |
Fuso USA + IP Europa |
| Risoluzione schermo |
Classe dispositivo |
Risoluzione laptop + OS desktop |
Risoluzione mobile + OS desktop |
Entropia: Molto Alta: può rilevare definitivamente i proxy
2.2 Rilevamento Proxy TLS
| Tecnica |
Rilevamento |
Affidabilità |
| JA3 vs atteso |
Stack TLS proxy != stack TLS browser |
Molto Alta |
| Ispezione certificato |
CA auto-firmato, emittente insolito |
Alta |
| Comportamento OCSP |
Richieste OCSP mancanti o insolite |
Media |
| Ordine estensioni TLS |
Ordine estensioni non da browser |
Media |
| Ordine protocolli ALPN |
Preferenze ALPN insolite |
Media |
2.3 Rilevamento Override JavaScript
const uaDescriptor = Object.getOwnPropertyDescriptor(
Object.getPrototypeOf(navigator),
'userAgent'
)
if (uaDescriptor && uaDescriptor.get !== originalGetter) {
}
Tecniche aggiuntive:
| Tecnica |
Come Funziona |
Object.getOwnPropertyDescriptor |
Rileva override di Object.defineProperty |
| Cross-validazione |
Verifica lo stesso valore da più API |
toString() delle funzioni |
Le funzioni sovrascritte non hanno corpo [native code] |
Operatore in |
Verifica se la proprietà esiste sulla catena del prototipo |
hasOwnProperty |
Rileva proprietà aggiunte |
Iframe con about:sandbox |
Contesto pulito senza override |
2.4 Rilevamento Blocco Funzionalità
| Funzionalità Bloccata |
Metodo di Rilevamento |
Rischio Falso Positivo |
| WebGL |
getContext('webgl') restituisce null |
Alcuni utenti disabilitano WebGL |
| WebGPU |
navigator.gpu è undefined |
Molti browser non lo supportano |
| AudioContext |
Il costruttore lancia eccezione |
Alcuni utenti disabilitano audio |
| Canvas |
getContext('2d') restituisce null |
Estremamente raro in utenti reali |
| WebRTC |
RTCPeerConnection è undefined |
Alcuni utenti lo disabilitano |
| Battery API |
getBattery() non esiste |
Solo Firefox ce l'ha |
| Client Hints |
userAgentData undefined |
Solo Chrome ce l'ha |
Analisi pattern: Un utente che blocca WebGL + AudioContext + WebRTC + Canvas è quasi certamente usando uno strumento privacy.
2.5 Anomalie Comportamentali
| Anomalia |
Cosa Suggerisce |
| Nessun movimento mouse al caricamento pagina |
Accesso automatizzato/bot |
| Tutte le funzionalità bloccate |
Strumento privacy |
| Timestamp perfettamente coerenti |
Traffico sintetico |
| Sessioni senza mai scrollare |
Bot o accesso automatizzato |
| Interazioni troppo veloci |
Compilazione automatica moduli |
| Nessuno scroll su pagine lunghe |
Automazione |
2.6 Rilevamento Basato su IP
| Tecnica |
Cosa Rileva |
| IP in intervalli noti proxy/VPN |
Uso proxy/VPN |
| IP in elenco nodi uscita Tor |
Uso Tor |
| IP in intervalli datacenter |
Hosting container/VPS |
| Tipo ASN (hosting vs residenziale) |
Connessione commerciale vs domestica |
| DNS inverso (hostname contiene "hosting") |
Proxy ospitato |
| Database reputazione IP |
Proxy/VPN noti |
2.7 Rilevamento Basato su DNS
| Tecnica |
Cosa Rileva |
| IP resolver DNS |
Cloudflare 1.1.1.1 = utente esperto di tecnologia |
| DNS over HTTPS |
Comportamento DNS insolito |
| Sottorete client EDNS0 |
Perde posizione di rete approssimativa |
| Temporizzazione query DNS |
Pattern automatico vs umano |
3. Rilevamento Statistico
Gli attaccanti sofisticati usano l'apprendimento automatico per rilevare anomalie:
features = [
'tls_fingerprint_mismatch',
'feature_blocking_count',
'js_override_detected',
'header_consistency_score',
'network_anomaly_score',
'behavioral_anomaly_score',
'ip_reputation_score',
]
model = RandomForestClassifier(n_estimators=100)
prediction = model.predict(features)
Il modello ML può rilevare correlazioni sottili che gli umani non vedrebbero: es. "gli utenti che bloccano WebGL e usano DNS Cloudflare e hanno header coerenti sono al 94% probabilmente utenti di uno strumento privacy."
4. Punti di Forza dell'Attaccante
| Forza |
Spiegazione |
| Asimmetrico |
Il proxy modifica N segnali; l'attaccante trova 1 incoerenza |
| Statistico |
Il ML trova pattern in grandi dataset |
| Auto-rinforzante |
Più adozione di strumenti privacy = migliori dati di addestramento |
| In evoluzione |
Nuove tecniche di rilevamento sviluppate continuamente |
| Basato su profili |
Firme note per strumenti comuni (mitmproxy, Burp, ecc.) |
5. Debolezze dell'Attaccante
| Debolezza |
Spiegazione |
Sfruttabile? |
| Falsi positivi |
Alcuni utenti reali corrispondono a profili proxy |
Gli attaccanti devono accettare qualche errore |
| Il rilevamento è probabilistico |
Non deterministico: i punteggi di confidenza variano |
Sì |
| Gli utenti di strumenti privacy non sono unici |
Milioni di utenti Tor/VPN condividono caratteristiche |
Sì |
| Gatto e topo |
Override migliori possono bypassare il rilevamento |
Sì |
| Vincoli legali/commerciali |
Alcuni fingerprinters evitano di bloccare utenti privacy |
Parziale |
6. Mitigazioni per Obscura
6.1 Cosa Può Fare Obscura
| Mitigazione |
Efficacia |
Implementazione |
| Validazione rigorosa coerenza profilo |
Molto Alta |
Strumenti di validazione cross-layer |
| Aggiornamenti automatici profilo |
Alta |
Pipeline CI/CD per aggiornamenti fingerprint |
| Perdere strategicamente alcuni segnali reali |
Media |
Rendere il profilo meno "perfetto" |
| Usare certificati CA reali |
Media |
Integrazione Let's Encrypt / ACME |
| Normalizzare temporizzazione (non eliminare) |
Media |
Aggiungere variazione di temporizzazione realistica |
| Non bloccare: falsificare invece |
Alta |
Più difficile da rilevare del blocco |
| Ruotare attraverso profili multipli |
Media |
Cambio profilo basato su sessione |
| Instradare upstream attraverso Tor/VPN |
Alta |
Normalizza segnali IP + rete |
6.2 Cosa Non Può Fare Obscura
| Non Può |
Perché |
| Cambiare il browser sottostante |
Le funzionalità reali del browser rimangono rilevabili |
| Prevenire tutta la correlazione incrociata |
Esistono troppe combinazioni di segnali |
| Eliminare la geolocalizzazione IP |
Il container deve avere un IP |
| Correspondere a tutti i pattern comportamentali degli utenti reali |
Alcuni comportamenti non possono essere simulati |
6.3 Approccio Raccomandato
1. Validazione coerenza profilo (massimo ROI: previene la maggior parte del rilevamento)
2. Certificati CA reali (evita rilevamento CA auto-firmato)
3. Aggiornamenti automatici fingerprint (stare al passo con i cambiamenti del browser)
4. Perdita strategica di segnali (rendere il profilo più naturale)
5. Accetta: un certo rilevamento è inevitabile (documenta il rischio residuo)
7. La Meta-Conclusione
La verità scomoda: un sistema anti-fingerprinting perfetto basato su proxy è impossibile perché l'esistenza del proxy è di per sé un segnale. Ogni modifica del protocollo, ogni script iniettato, ogni API bloccata crea un pattern rilevabile.
Questo non significa che Obscura sia inutile. Significa:
- Obscura protegge dal fingerprinting opportunistico: la stragrande maggioranza degli script di tracciamento
- Obscura non protegge dal fingerprinting determinato: servizi sofisticati con rilevamento ML
- Obscura + Tor Browser fornisce difesa in profondità: uno per la navigazione casuale, l'altro per sessioni sensibili
L'obiettivo non è l'invisibilità. È aumentare il costo dell'identificazione al punto in cui la maggior parte dei tracker si arrende.
8. Riferimenti di Ricerca
- Arshad, S. et al. (2016). "A Measurement Study of Web Proxy Detection." IEEE S&P 2016.
- Englehardt, S. & Narayanan, A. (2016). "Online Tracking: A 1-million-site Measurement and Analysis." CCS 2016.
- Vastel, A. et al. (2018). "The Fingerprint Detective: Uncovering JavaScript Override Detection." PETS 2018.
- Laperdrix, P. et al. (2020). "Browser Fingerprinting: A Survey." ACM TOIT.
- Tschantz, M. et al. (2016). "On the Comprehensibility of Browser Fingerprinting." WEIS 2016.