Saltar al contenido principal
fr/blog/obscura/research/http-header-spoofing/

obscura/research/http-header-spoofing

2 min de lecture

Aperçu

Les en-têtes HTTP transmis avec chaque requête révèlent des informations significatives sur le client. Ce sont les signaux les plus simples à usurper au niveau proxy.

En-têtes Utilisés pour l'Empreinte

User-Agent

Signal le plus connu. Contient OS, navigateur, version, architecture.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Client Hints (Sec-CH-UA)

Remplacement moderne pour la granularité du User-Agent :

En-tête Exemple
Sec-CH-UA "Google Chrome";v="120", "Chromium";v="120", "Not?A_Brand";v="99"
Sec-CH-UA-Platform "Windows"
Sec-CH-UA-Platform-Version "15.0.0"
Sec-CH-UA-Model "Pixel 7" (mobile)
Sec-CH-UA-Mobile ?0
Sec-CH-UA-Arch "x86"
Sec-CH-UA-Bitness "64"
Sec-CH-UA-Full-Version-List "Google Chrome";v="120.0.6099.109"

Autres En-têtes

En-tête Info Fuite
Accept Capacités du navigateur
Accept-Language Préférences linguistiques de l'utilisateur
Accept-Encoding Support de compression
DNT Préférence Do Not Track
Upgrade-Insecure-Requests Capacité du navigateur
Referer Page précédente (comportemental)

Stratégie d'Usurpation au Proxy

Les en-têtes peuvent être entièrement remplacés au proxy car ils sont en texte clair en HTTP et accessibles en HTTPS MITM :

proxy_set_header User-Agent "Mozilla/5.0 ..."
proxy_set_header Sec-CH-UA "..."
proxy_set_header Sec-CH-UA-Platform "Windows"
proxy_set_header Accept-Language "en-US,en;q=0.9"

Exigences de Cohérence

Tous les en-têtes doivent être cohérents avec le profil choisi :

  • Si le profil dit "Chrome 120 sur Windows 11", alors :
    • User-Agent doit refléter Chrome 120 / Windows 11
    • Sec-CH-UA doit lister Chrome 120 / Chromium 120
    • Sec-CH-UA-Platform doit être "Windows"
    • Accept doit correspondre à l'en-tête Accept typique de Chrome
    • L'empreinte TLS (JA3) doit correspondre à Chrome 120 sur Windows

L'incohérence est elle-même une empreinte (ex., User-Agent Chrome avec une poignée de main TLS Firefox).

Conclusions

  • L'usurpation d'en-têtes HTTP est l'atténuation la plus facile et la plus fiable
  • Les en-têtes sont entièrement contrôlables au proxy
  • Exigence critique : cohérence interne entre tous les en-têtes
  • Le système de profils doit garantir que toutes les valeurs d'en-tête correspondent à une combinaison navigateur/OS réelle
  • Sans cela, tout le système échoue