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

obscura/research/http-header-spoofing

2 min di lettura

Panoramica

Gli header HTTP trasmessi con ogni richiesta rivelano informazioni significative sul client. Questi sono i segnali più semplici da falsificare a livello di proxy.

Header Usati per il Fingerprinting

User-Agent

Il segnale più noto. Contiene SO, browser, versione, architettura.

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)

Sostituto moderno per la granularità dello User-Agent:

Header Esempio
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"

Altri Header

Header Informazioni Rivelate
Accept Capacità del browser
Accept-Language Preferenze linguistiche utente
Accept-Encoding Supporto compressione
DNT Preferenza Do Not Track
Upgrade-Insecure-Requests Capacità del browser
Referer Pagina precedente (comportamentale)

Strategia di Spoofing al Proxy

Gli header possono essere completamente sostituiti al proxy poiché sono in chiaro in HTTP e accessibili in 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"

Requisiti di Coerenza

Tutti gli header devono essere coerenti con il profilo scelto:

  • Se il profilo dice "Chrome 120 su Windows 11", allora:
    • User-Agent deve riflettere Chrome 120 / Windows 11
    • Sec-CH-UA deve elencare Chrome 120 / Chromium 120
    • Sec-CH-UA-Platform deve essere "Windows"
    • Accept deve corrispondere al tipico Accept header di Chrome
    • Il fingerprint TLS (JA3) deve corrispondere a Chrome 120 su Windows

L'incoerenza è di per sé un fingerprint (es. User-Agent Chrome con un handshake TLS di Firefox).

Conclusioni

  • Lo spoofing degli header HTTP è la mitigazione più semplice e affidabile
  • Gli header sono completamente controllabili al proxy
  • Requisito critico: coerenza interna tra tutti gli header
  • Il sistema di profili deve garantire che tutti i valori degli header corrispondano a una combinazione browser/SO reale
  • Senza questo, l'intero sistema si rompe