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

obscura/research/uncontrollable/proxy-detection

8 min de lectura

Categoría: Entre Capas / Meta-Detección


1. Descripción

El acto de protegerse crea patrones detectables. Las herramientas de privacidad son paradójicas: cuanto más agresivamente modifican las señales, más crean nuevas señales que identifican "usuario de herramienta de privacidad". Este documento analiza cómo los servicios de fingerprinting detectan proxies similares a Obscura mediante inconsistencias y anomalías.


2. Vectores de Detección

2.1 Inconsistencia de Perfil entre Capas

La detección más poderosa: comparar señales entre capas.

Capa A Capa B Consistencia Esperada Señal de Inconsistencia
SO en User-Agent Fingerprint TLS (JA3) Win11 → JA3 Windows UA Chrome en Win11 + JA3 Linux
SO en User-Agent Pila TCP/IP Win11 → TTL=128 UA Win11 + TTL=64 (Linux)
Navegador en User-Agent SETTINGS HTTP/2 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 Coincidencia Desajuste (ej., header "en-US" + navigator dice "es-ES")
Zona horaria Geolocalización IP Coincidencia Zona horaria EEUU + IP UE
Resolución de pantalla Clase de dispositivo Resolución laptop + SO escritorio Resolución móvil + SO escritorio

Entropía: Muy Alta — puede detectar proxies definitivamente

2.2 Detección de Proxy TLS

Técnica Detección Fiabilidad
JA3 vs esperado Pila TLS del proxy != pila TLS del navegador Muy Alta
Inspección de certificados CA autofirmado, emisor inusual Alta
Comportamiento OCSP Solicitudes OCSP faltantes o inusuales Media
Orden de extensiones TLS Orden de extensiones no propia de navegador Media
Orden de protocolos ALPN Preferencias ALPN inusuales Media

2.3 Detección de Anulación JavaScript

// Detectar si las propiedades de navigator han sido anuladas
const uaDescriptor = Object.getOwnPropertyDescriptor(
  Object.getPrototypeOf(navigator),
  'userAgent'
)
if (uaDescriptor && uaDescriptor.get !== originalGetter) {
  // ¡Anulación detectada!
}

// Alternativa: comparar múltiples fuentes de señal
// navigator.userAgent vs navigator.userAgentData
// Si discrepan, una ha sido anulada

Técnicas adicionales:

Técnica Cómo Funciona
Object.getOwnPropertyDescriptor Detecta anulaciones de Object.defineProperty
Validación cruzada Verificar el mismo valor desde múltiples APIs
toString() de función Las funciones anuladas no tienen cuerpo [native code]
Operador in Verificar si la propiedad existe en la cadena de prototipos
hasOwnProperty Detectar propiedades añadidas
Iframe con about:sandbox Contexto nuevo sin anulaciones

2.4 Detección de Bloqueo de Características

Característica Bloqueada Método de Detección Riesgo de Falso Positivo
WebGL getContext('webgl') devuelve null Algunos usuarios deshabilitan WebGL
WebGPU navigator.gpu es undefined Muchos navegadores no lo soportan
AudioContext El constructor lanza excepción Algunos usuarios deshabilitan audio
Canvas getContext('2d') devuelve null Extremadamente raro en usuarios reales
WebRTC RTCPeerConnection es undefined Algunos usuarios lo deshabilitan
Battery API getBattery() no existe Solo Firefox lo tiene
Client Hints userAgentData undefined Solo Chrome lo tiene

Análisis de patrones: Un usuario que bloquea WebGL + AudioContext + WebRTC + Canvas es casi seguro que está usando una herramienta de privacidad.

2.5 Anomalías de Comportamiento

Anomalía Qué Sugiere
Sin movimiento del ratón al cargar página Acceso automatizado/bot
Todas las características bloqueadas Herramienta de privacidad
Marcas de tiempo perfectamente consistentes Tráfico sintético
Sesiones sin desplazamiento Bot o acceso automatizado
Interacciones demasiado rápidas Relleno automatizado de formularios
Sin desplazamiento en páginas largas Automatización

2.6 Detección Basada en IP

Técnica Qué Detecta
IP en rangos conocidos de proxy/VPN Uso de proxy/VPN
IP en lista de nodos de salida Tor Uso de Tor
IP en rangos de centro de datos Alojamiento en contenedor/VPS
Tipo de ASN (alojamiento vs residencial) Conexión comercial vs hogar
DNS inverso (hostname contiene "hosting") Proxy alojado
Bases de datos de reputación IP Salidas de proxy/VPN conocidas

2.7 Detección Basada en DNS

Técnica Qué Detecta
IP del resolver DNS Cloudflare 1.1.1.1 = usuario experto en tecnología
DNS sobre HTTPS Comportamiento DNS inusual
EDNS0 client subnet Filtra ubicación de red aproximada
Temporización de consultas DNS Patrón automatizado vs humano

3. Detección Estadística

Los atacantes sofisticados usan aprendizaje automático para detectar anomalías:

# Modelo conceptual de detección ML
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)
# Entrenado en conjunto de datos etiquetado de usuarios reales vs usuarios de herramientas de privacidad
prediction = model.predict(features)
# Probabilidad de que este tráfico esté detrás de una herramienta de privacidad

El modelo ML puede detectar correlaciones sutiles que los humanos pasarían por alto — ej., "los usuarios que bloquean WebGL y usan Cloudflare DNS y tienen headers consistentes tienen un 94% de probabilidad de estar usando una herramienta de privacidad."


4. Fortalezas del Atacante

Fortaleza Explicación
Asimétrico El proxy modifica N señales; el atacante encuentra 1 inconsistencia
Estadístico ML encuentra patrones en grandes conjuntos de datos
Auto-reforzante Más adopción de herramientas de privacidad → mejores datos de entrenamiento
Evolutivo Nuevas técnicas de detección se desarrollan continuamente
Basado en perfiles Firmas conocidas para herramientas comunes (mitmproxy, Burp, etc.)

5. Debilidades del Atacante

Debilidad Explicación Explotable?
Falsos positivos Algunos usuarios reales coinciden con perfiles de proxy Los atacantes deben aceptar cierto error
La detección es probabilística No determinista — las puntuaciones de confianza varían
Los usuarios de herramientas de privacidad no son únicos Millones de usuarios de Tor/VPN comparten características
Gato y ratón Anulaciones mejores pueden evadir la detección
Restricciones legales/comerciales Algunos fingerprinters evitan bloquear usuarios de privacidad Parcial

6. Mitigaciones para Obscura

6.1 Lo Que Obscura Puede Hacer

Mitigación Efectividad Implementación
Validación rigurosa de consistencia de perfil Muy Alta Herramientas de validación entre capas
Actualizaciones automatizadas de perfiles Alta Pipeline CI/CD para actualizaciones de fingerprint
Filtrar algunas señales reales (estratégicamente) Media Hacer el perfil menos "perfecto"
Usar certificados CA reales Media Integración Let's Encrypt / ACME
Normalizar temporización (no eliminar) Media Añadir variación de temporización realista
No bloquear — falsificar en su lugar Alta Más difícil de detectar que bloquear
Rotar entre múltiples perfiles Media Cambio de perfil basado en sesión
Enrutar upstream mediante Tor/VPN Alta Normaliza IP + señales de red

6.2 Lo Que Obscura No Puede Hacer

No Puede Por Qué
Cambiar el navegador subyacente Las características reales del navegador siguen siendo detectables
Prevenir toda correlación cruzada Existen demasiadas combinaciones de señales
Eliminar la geolocalización IP El contenedor debe tener una IP
Igualar todos los patrones de comportamiento de usuarios reales Algunos comportamientos no pueden simularse

6.3 Enfoque Recomendado

1. Validación de consistencia de perfil          (máximo ROI — previene la mayoría de detecciones)
2. Certificados CA reales                        (evitar detección de CA autofirmado)
3. Actualizaciones automáticas de fingerprint    (mantenerse al día con cambios de navegador)
4. Filtrado estratégico de señales               (hacer que el perfil parezca más natural)
5. Aceptar — algo de detección es inevitable     (documentar riesgo residual)

7. La Meta-Conclusión

La verdad incómoda: un sistema anti-fingerprinting perfecto basado en proxy es imposible porque la existencia del proxy es en sí misma una señal. Cada modificación de protocolo, cada script inyectado, cada API bloqueada crea un patrón detectable.

Esto no significa que Obscura sea inútil. Significa:

  1. Obscura protege contra el fingerprinting oportunista — la gran mayoría de los scripts de rastreo
  2. Obscura no protege contra el fingerprinting determinado — servicios sofisticados con detección ML
  3. Obscura + Tor Browser proporciona defensa en profundidad — uno para navegación casual, el otro para sesiones sensibles

El objetivo no es la invisibilidad. Es aumentar el costo de identificación hasta el punto en que la mayoría de los rastreadores se rindan.


8. Referencias de Investigación

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