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

obscura/research/http-header-spoofing

2 min de lectura

Resumen

Los headers HTTP transmitidos con cada petición revelan información significativa sobre el cliente. Estas son las señales más directas de falsificar a nivel de proxy.

Headers Usados para Fingerprinting

User-Agent

La señal más conocida. Contiene SO, navegador, versión, arquitectura.

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)

Reemplazo moderno para la granularidad del User-Agent:

Header Ejemplo
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" (móvil)
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"

Otros Headers

Header Información Filtrada
Accept Capacidades del navegador
Accept-Language Preferencias de idioma del usuario
Accept-Encoding Soporte de compresión
DNT Preferencia Do Not Track
Upgrade-Insecure-Requests Capacidad del navegador
Referer Página anterior (comportamiento)

Estrategia de Falsificación en el Proxy

Los headers pueden reemplazarse completamente en el proxy ya que están en texto plano en HTTP y accesibles en MITM HTTPS:

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"

Requisitos de Consistencia

Todos los headers deben ser consistentes con el perfil elegido:

  • Si el perfil dice "Chrome 120 en Windows 11", entonces:
    • User-Agent debe reflejar Chrome 120 / Windows 11
    • Sec-CH-UA debe listar Chrome 120 / Chromium 120
    • Sec-CH-UA-Platform debe ser "Windows"
    • Accept debe coincidir con el Accept header típico de Chrome
    • El fingerprint TLS (JA3) debe coincidir con Chrome 120 en Windows

La inconsistencia es en sí misma un fingerprint (ej., User-Agent de Chrome con un handshake TLS de Firefox).

Conclusiones

  • La falsificación de headers HTTP es la mitigación más fácil y más fiable
  • Los headers son totalmente controlables en el proxy
  • Requisito crítico: consistencia interna entre todos los headers
  • El sistema de perfiles debe asegurar que todos los valores de header coincidan con una combinación real de navegador/SO
  • Sin esto, todo el sistema se rompe