Saltar al contenido principal
fr/blog/obscura/research/uncontrollable/proxy-detection/

obscura/research/uncontrollable/proxy-detection

8 min de lecture

Catégorie : Inter-Couches / Méta-Détection


1. Description

L'acte de se protéger crée des motifs détectables. Les outils de confidentialité sont paradoxaux : plus ils modifient agressivement les signaux, plus ils créent de nouveaux signaux qui identifient "l'utilisateur d'outil de confidentialité". Ce document analyse comment les services d'empreinte détectent les proxys de type Obscura à travers les incohérences et anomalies.


2. Vecteurs de Détection

2.1 Incohérence de Profil Inter-Couches

La détection la plus puissante : comparer les signaux entre les couches.

Couche A Couche B Cohérence Attendue Signal d'Incohérence
User-Agent OS Empreinte TLS (JA3) Win11 → JA3 Windows UA Chrome sur Win11 + JA3 Linux
User-Agent OS Pile TCP/IP Win11 → TTL=128 UA Win11 + TTL=64 (Linux)
Navigateur User-Agent Paramètres HTTP/2 SETTINGS Chrome → SETTINGS de Chrome UA Chrome + SETTINGS de Go
Sec-CH-UA-Platform navigator.platform "Windows" → "Win32" "Windows" + "Linux x86_64"
Accept-Language navigator.language Correspondance Décalage (ex., en-tête "en-US" + navigator dit "es-ES")
Fuseau horaire Géolocalisation IP Correspondance Fuseau horaire US + IP UE
Résolution d'écran Classe d'appareil Résolution portable + OS bureau Résolution mobile + OS bureau

Entropie : Très Élevée — peut détecter définitivement les proxys

2.2 Détection de Proxy TLS

Technique Détection Fiabilité
JA3 vs attendu Pile TLS proxy != pile TLS navigateur Très Élevée
Inspection de certificat CA auto-signé, émetteur inhabituel Élevée
Comportement OCSP Requêtes OCSP manquantes ou inhabituelles Moyenne
Ordre des extensions TLS Ordre d'extension non-navigateur Moyenne
Ordre des protocoles ALPN Préférences ALPN inhabituelles Moyenne

2.3 Détection de Surcharge JavaScript

// Détecter si les propriétés navigator ont été surchargées
const uaDescriptor = Object.getOwnPropertyDescriptor(
  Object.getPrototypeOf(navigator),
  'userAgent'
)
if (uaDescriptor && uaDescriptor.get !== originalGetter) {
  // Surcharge détectée !
}

// Alternative : comparer plusieurs sources de signaux
// navigator.userAgent vs navigator.userAgentData
// S'ils divergent, l'un a été surchargé

Techniques supplémentaires :

Technique Comment Ça Marche
Object.getOwnPropertyDescriptor Détecte les surcharges Object.defineProperty
Validation croisée Vérifier la même valeur depuis plusieurs API
toString() de fonction Les fonctions surchargées n'ont pas le corps natif [native code]
Opérateur in Vérifier si la propriété existe sur la chaîne de prototypes
hasOwnProperty Détecter les propriétés ajoutées
Iframe avec about:sandbox Contexte frais sans surcharges

2.4 Détection de Blocage de Fonctionnalités

Fonctionnalité Bloquée Méthode de Détection Risque de Faux Positif
WebGL getContext('webgl') retourne null Certains utilisateurs désactivent WebGL
WebGPU navigator.gpu est indéfini De nombreux navigateurs ne le supportent pas
AudioContext Le constructeur génère une erreur Certains utilisateurs désactivent l'audio
Canvas getContext('2d') retourne null Extrêmement rare chez les vrais utilisateurs
WebRTC RTCPeerConnection est indéfini Certains utilisateurs désactivent
Battery API getBattery() n'existe pas Seulement Firefox l'a
Client Hints userAgentData indéfini Seulement Chrome l'a

Analyse de motif : Un utilisateur bloquant WebGL + AudioContext + WebRTC + Canvas est presque certainement en train d'utiliser un outil de confidentialité.

2.5 Anomalies Comportementales

Anomalie Ce Que Ça Suggère
Pas de mouvement de souris au chargement de la page Accès automatisé/bot
Toutes les fonctionnalités bloquées Outil de confidentialité
Horodatages parfaitement cohérents Trafic synthétique
Sessions sans jamais défiler Bot ou accès automatisé
Interactions trop rapides Remplissage automatique de formulaire
Pas de défilement sur les longues pages Automatisation

2.6 Détection Basée sur l'IP

Technique Ce Que Ça Détecte
IP dans les plages proxy/VPN connues Utilisation de proxy/VPN
IP dans la liste des nœuds de sortie Tor Utilisation de Tor
IP dans les plages de datacenter Hébergement conteneur/VPS
Type ASN (hébergement vs résidentiel) Connexion commerciale vs domestique
DNS inversé (nom d'hôte contient "hosting") Proxy hébergé
Bases de données de réputation IP Sorties proxy/VPN connues

2.7 Détection Basée sur le DNS

Technique Ce Que Ça Détecte
IP du résolveur DNS Cloudflare 1.1.1.1 = utilisateur technophile
DNS sur HTTPS Comportement DNS inhabituel
Sous-réseau client EDNS0 Fuit l'emplacement réseau approximatif
Timing des requêtes DNS Motif automatisé vs humain

3. Détection Statistique

Les attaquants sophistiqués utilisent l'apprentissage machine pour détecter les anomalies :

# Modèle de détection ML conceptuel
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)
# Entraîné sur un ensemble de données étiquetées de vrais utilisateurs vs utilisateurs d'outils de confidentialité
prediction = model.predict(features)
# Probabilité que ce trafic soit derrière un outil de confidentialité

Le modèle ML peut détecter des corrélations subtiles que les humains manqueraient — ex., "les utilisateurs qui bloquent WebGL et utilisent Cloudflare DNS et ont des en-têtes cohérents ont 94% de chances d'utiliser un outil de confidentialité."


4. Forces de l'Attaquant

Force Explication
Asymétrique Le proxy modifie N signaux ; l'attaquant trouve 1 incohérence
Statistique Le ML trouve des motifs dans de grands ensembles de données
Auto-renforçant Plus d'adoption d'outils de confidentialité → meilleures données d'entraînement
Évolutif Nouvelles techniques de détection développées en continu
Basé sur des profils Signatures connues pour les outils courants (mitmproxy, Burp, etc.)

5. Faiblesses de l'Attaquant

Faiblesse Explication Exploitable ?
Faux positifs Certains vrais utilisateurs correspondent aux profils proxy Les attaquants doivent accepter une certaine erreur
La détection est probabiliste Pas déterministe — les scores de confiance varient Oui
Les utilisateurs d'outils de confidentialité ne sont pas uniques Des millions d'utilisateurs Tor/VPN partagent des caractéristiques Oui
Jeu du chat et de la souris De meilleures surcharges peuvent contourner la détection Oui
Contraintes légales/commerciales Certains services d'empreinte évitent de bloquer les utilisateurs de confidentialité Partiel

6. Atténuations pour Obscura

6.1 Ce Qu'Obscura Peut Faire

Atténuation Efficacité Implémentation
Validation rigoureuse de la cohérence de profil Très Élevée Outillage de validation inter-couches
Mises à jour automatisées des profils Élevée Pipeline CI/CD pour les mises à jour d'empreinte
Fuiter stratégiquement quelques signaux réels Moyenne Rendre le profil moins "parfait"
Utiliser de vrais certificats CA Moyenne Intégration Let's Encrypt / ACME
Normaliser le timing (pas l'éliminer) Moyenne Ajouter une variation de timing réaliste
Ne pas bloquer — usurper à la place Élevée Plus dur à détecter que le blocage
Alterner entre plusieurs profils Moyenne Changement de profil basé sur session
Router en amont via Tor/VPN Élevée Normalise les signaux IP + réseau

6.2 Ce Qu'Obscura Ne Peut Pas Faire

Ne Peut Pas Pourquoi
Changer le navigateur sous-jacent Les vraies fonctionnalités du navigateur restent détectables
Empêcher toute corrélation croisée Trop de combinaisons de signaux existent
Éliminer la géolocalisation IP Le conteneur doit avoir une IP
Correspondre à tous les modèles comportementaux des vrais utilisateurs Certains comportements ne peuvent pas être simulés

6.3 Approche Recommandée

1. Validation de la cohérence de profil        (meilleur ROI — empêche la plupart des détections)
2. Vrais certificats CA                         (évite la détection de CA auto-signé)
3. Mises à jour automatiques des empreintes     (suivre les changements de navigateur)
4. Fuite stratégique de signaux                 (rendre le profil plus naturel)
5. Accepter — une certaine détection est inévitable (documenter le risque résiduel)

7. La Méta-Conclusion

La vérité inconfortable : un système anti-empreinte parfait basé sur un proxy est impossible car l'existence même du proxy est un signal. Chaque modification de protocole, chaque script injecté, chaque API bloquée crée un motif détectable.

Cela ne signifie pas qu'Obscura est inutile. Cela signifie :

  1. Obscura protège contre l'empreinte opportuniste — la grande majorité des scripts de suivi
  2. Obscura ne protège pas contre l'empreinte déterminée — les services sophistiqués avec détection ML
  3. Obscura + Tor Browser offre une défense en profondeur — l'un pour la navigation décontractée, l'autre pour les sessions sensibles

L'objectif n'est pas l'invisibilité. C'est d'augmenter le coût de l'identification au point où la plupart des traqueurs abandonnent.


8. Références de Recherche

  • 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.