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
const uaDescriptor = Object.getOwnPropertyDescriptor(
Object.getPrototypeOf(navigator),
'userAgent'
)
if (uaDescriptor && uaDescriptor.get !== originalGetter) {
}
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:
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)
prediction = model.predict(features)
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 |
Sí |
| Los usuarios de herramientas de privacidad no son únicos |
Millones de usuarios de Tor/VPN comparten características |
Sí |
| Gato y ratón |
Anulaciones mejores pueden evadir la detección |
Sí |
| 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:
- Obscura protege contra el fingerprinting oportunista — la gran mayoría de los scripts de rastreo
- Obscura no protege contra el fingerprinting determinado — servicios sofisticados con detección ML
- 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.