sábado, 30 de enero de 2016

Web tracking e identificación de usuarios de Internet

Web tracking e identificación de usuarios de Internet

La recolección de datos y su análisis contienen un importante valor, popularmente referido bajo términos como Big Data o Smart Data se ha convertido, sin lugar a dudas, en una poderosa herramienta que empieza a cobrar importancia en múltiples aspectos de la sociedad moderna. Sectores tan diversos como medios de comunicación, entornos de negocio y económicos, sectores políticos e incluso de inteligencia militar se han visto involucrados, cuando no necesitados de contemplar en su operativa de trabajo esta importante estrategia de análisis de datos.

Distintas motivaciones, mismo objetivo

La obtención y explotación de datos, tanto de fuentes públicas OSINT como los obtenidos por otros métodos de rastreo e identificación conocido como "tracking, son de gran utilidad para recopilar información de usuarios de internet. Las motivaciones para hacerlo son múltiples: la creación de perfiles de clientes y análisis de comportamientos para mejorar estrategias ventas y mercado, la manipulación a medida de precios y publicidad según el origen del objetivo, la monetización de la información recopilada mediante su venta a terceros, el seguimiento de individuos o colectivos, estadísticas, etc.

Algunas motivaciones para el seguimiento e identificación de usuarios 

Estas técnicas son muy comunes de modo que ya a nadie se sorprende por ejemplo, la precisión de anuncios de publicidad en nuestra navegación por internet o la variación de precios en compras online  (se abre en nueva ventana) cuyo comportamiento será distinto dependiendo del público objetivo al que se dirige.

Manipulación de precios dependiendo de la ubicación y/o sistema operativo. 

Para conseguir identificar, clasificar y recopilar la información de los usuarios de internet se emplean diversos métodos y tecnologías web que permiten recoger la suficiente información como para tener perfectamente perfilado a un usuario y sus patrones de comportamiento.

Estos mecanismos son de uso generalizado e impactan de forma directa sobre la privacidad del usuario el cual, como veremos a continuación, no tiene una forma sencilla de evitar esta exposición y proteger su anonimato.

En este artículo nos centraremos en "web tracking" en referencia a mecanismos de rastreo dirigidos a la identificación de dispositivos, navegadores y herramientas que utilizamos comúnmente los usuarios de internet.

Web tracking e identificadores

Aunque no sean las únicas, podemos citar las técnicas más empleadas para perfilar usuarios o dispositivos y que podríamos agrupar como sigue:


  • Identificadores de parte cliente (sesión, caché, almacenamiento local)
  • Huella digital hardware/software
  • Otros métodos: patrones específicos de comportamiento, preferencias locales, inyección de cabeceras HTTP.



Agrupación de elementos de tracking según su operativa

Identificadores en parte cliente

Dentro de esta categoría de identificadores encontramos ciertos elementos (datos, ficheros) que son almacenados localmente por los navegadores en diversas ubicaciones de la máquina cliente. Estos datos, serán transmitidos a servidores web y utilizados para identificar al usuario y realizar las operaciones deseadas según su perfil.

La eliminación de los datos almacenados no siempre cuenta con un mecanismo automático o pre configurado lo cual, dificulta su eliminación y favorece su persistencia. El almacenamiento de los datos puede ser: almacenamiento local, de sesión, o caché. Estos datos, en principio, contarán con una persistencia claramente definida:

Tipos de almacenamiento local y supuesto método de eliminación

Como veremos a continuación, los mecanismos de borrado de los datos de navegación no siempre son tan eficaces como podría esperarse.

Identificadores de sesión

Este tipo de identificadores se almacena de forma temporal mientras el usuario hace uso de navegador y persiste mientras dure la sesión. Suele tratarse de elementos contenidos en la página como campos ocultos, propiedades DOM de la página o formularios web de autenticación explícitos que validan al usuario únicamente durante una sesión activa. A diferencia de las cookies, y otros métodos, estos identificadores no se almacenan y desaparecen al salir de la sesión o página visitada. Este método es obsoleto y generalmente no es muy utilizado, sobre todo cuando existe la posibilidad de emplear cookies u otro tipo de almacenamiento con mayor persistencia.

Almacenamiento Caché

La caché constituye un elemento muy a tener en cuenta desde el punto de la privacidad. Los navegadores web implementan una caché que les permite obtener un mejor rendimiento a la hora de visualizar sitios previamente visitados, almacenando parte de su contenido como imágenes o scripts. Es un tipo de almacenamiento muy común y la persistencia de los datos almacenados depende directamente de la configuración empleada en el navegador y/o del borrado manual.

La persistencia de los elementos cacheados generalmente está determinada mediante valores que son establecidos mediante cabeceras HTTP al visitar una web. Entre estas cabeceras encontramos:


  • Expires/max-age. Determina una fecha de caducidad de los datos los cuales se mantendrán hasta que se alcance esa fecha o se realice un purgado manual de la caché.



  • ETag. Esta cabecera etiqueta un contenido variable del sitio web y su valor indicará al navegador cuando un recurso ha sido cambiado.



  • Last-Modified. Se emplea para notificar la fecha de la última vez que el contenido web ha sufrido alguna modificación.


Estas cabeceras pueden ser aprovechadas para conseguir almacenar en el navegador cliente elementos diferenciadores con la persistencia deseada y así tener un perfil asociado al usuario. Una prueba de concepto de esta idea la encontramos en Japitracing  (se abre en nueva ventana), un trabajo de Máster en Seguridad realizado en 2011 en la Universidad Europea de Madrid. En ese estudio se saca partido a las cabeceras HTTP para almacenar en la caché del navegador código JavaScript y utilizarlo para rastrear geográficamente al usuario.

Datos y ficheros locales


  • Cookies HTTP

Las cookies han sido y siguen siendo un mecanismo ampliamente utilizado para identificar y perfilar usuarios y así poder mantener un histórico de su navegación, preferencias y sesiones. Pueden almacenar hasta 4 KB de información y su eliminación es sencilla, pero este borrado no siempre evita que el seguimiento de la información persista o se reconstruya, como se describe a continuación.


  • Flash (cookies Flash)

Las aplicaciones de Adobe Flash almacenan datos en la parte cliente con un mecanismo homólogo a las cookies HTTP, y que se conoce como Local Shared Objects (LSO), los cuales cuentan con una capacidad de almacenamiento de hasta 100 KB. Este contenido puede ser accedido por todos los navegadores instalados ya que Adobe Flash comparte la misma ruta de localización de archivos.

La tendencia es que los navegadores integren en la gestión de cookies los elementos LSO Flash de modo que su eliminación suponga también la eliminación de ficheros Flash. Sin embargo existen técnicas que utilizando código JavaScript son capaces de regenerar cookies HTTP borradas a partir del almacenamiento Flash (Evercookies  (se abre en nueva ventana)).


  • Silverlight

Análogamente los applets de Microsoft Silverlight, mantienen un almacenamiento de datos local conocido como Isolated Storage  (se abre en nueva ventana). Esta tecnología no depende de la gestión de datos de navegación ni de la caché del navegador siendo necesario un borrado manual de los ficheros. Esta característica le confiere un alto grado de persistencia que puede ser aprovechada para la identificación del cliente web. Por otra parte, este almacenamiento puede ser compartido entre distintas instancias o ventanas del navegador.


  • HTML5

HTML5 vino acompañado de importantes funcionalidades, entre ellas una API (WebStorage  (se abre en nueva ventana)) que incluye módulos para gestionar el almacenamiento de datos con distintos grados de persistencia como Local storage (caché) o Session Storage (sesión). Similarmente IndexedDB  (se abre en nueva ventana) o File  (se abre en nueva ventana) son otros ejemplos de API para almacenar ficheros y manejar bases de datos en el cliente, cuyo borrado requerirá intervención manual en la mayoría de las ocasiones


  • Java

Java asimismo también dispone API la específica PersistenceService  (se abre en nueva ventana) que proporciona métodos para almacenar datos locales en el cliente incluso para aplicaciones externas al entorno del navegador.

Otros métodos


  • HSTS

HSTS es un mecanismo de seguridad cuyo objetivo es forzar que la conexión a un dominio concreto se realice únicamente bajo HTTPS. Para ello el navegador almacena un listado de sitios registrados inicialmente y posteriormente, va añadiendo nuevos bajo demanda a través de cabeceras HTTP. Una vez se almacena un registro HSTS, éste será permanente hasta que caduque y no servirá para nada borrar cookies, caché o ficheros temporales. Únicamente podrá ser borrado desde opciones avanzadas del navegador de forma no trivial.

Configuración y registros HSTS en Chrome

Sacando partido de este mecanismo es posible generar registros HSTS en el navegador del usuario y así crear un conjunto identificador al que se ha dado en denominar, de modo quizás inapropiado, supercookies HSTS  (se abre en nueva ventana). Puede realizarse un test de prueba en el siguiente enlace: http://www.radicalresearch.co.uk/lab/hstssupercookies  (se abre en nueva ventana)

Como podemos ver HSTS, independientemente de su misión original, ha pasado a convertirse en una herramienta que puede utilizarse para obtener información que compromete la privacidad del usuario. De este modo, podría obtenerse incluso el histórico de navegación, tal y como se ha demostrado en un trabajo presentado en la conferencia de seguridad ToorCon de San Diego de 2015 (se abre en nueva ventana). En una prueba de concepto denominada Sniffly se demuestra cómo, a través de solicitudes HSTS y analizando el tiempo de respuesta del navegador (que dependerá de si tiene o no el registro almacenado) es posible inferir los sitios visitados por el usuario.

Huella digital software/hardware

Las técnicas basadas en huella digital utilizan elementos diferenciadores en el hardware o el software empleado por el usuario. Para ello y mediante JavaScript, Flash, Java y otras tecnologías web se recopilará información que hará posible crear una "huella digital" que lo identifique con bastante precisión.

Huella digital de navegador

La iniciativa Panopticlick de la fundación Electronic Frontier Foundation (EFF), implementó una prueba de concepto para demostrar cómo de particular era un cliente web en el momento de acceder a la web. A través de un algoritmo que recoge información través de peticiones HTTP y AJAX sobre los plugins instalados, la resolución de pantalla, fuentes, zona horaria, cookies y objetos flash, determina una huella digital que permite diferenciar a un cliente web entre millones. Para navegadores que tengan java y flash activado afirman que el grado de fiabilidad a la hora de la identificación se sitúa en torno al 95%. Esta información demuestra el grado de precisión con que se puede construir una huella que determine la identidad de un navegador/dispositivo concreto.

Ejemplo de análisis de Panopticlick

Huella digital HTML5 canvas

La huella canvas es una de los métodos más recientes que se están utilizando para la identificación de dispositivos según las características de su hardware. Se hacer uso de la tecnología WebGL de generación de gráficos para generar una imagen en un elemento HTML <canvas> en el cliente. Esta imagen, según se deduce del estudio "Pixel Perfect: Fingerprinting Canvas in HMTL5" depende directamente del hardware y tiene un grado de entropía suficientemente alto como para crear una huella digital del equipo del usuario. Analizando las características de los pixeles que conforman la imagen generada en el cliente web es posible obtener una huella identificativa con alto grado de precisión.

Plugin CanvasFingerprintBlock para la detección y bloqueo de imágenes de seguimiento canvas 

Huellas de red y geolocalización

La dirección IP del dispositivo o de la red en la que se encuentra es otro de los datos habituales que se utilizan para tratar de identificar usuarios a través de diversas técnicas, entre ellas el análisis de tráfico, cabeceras HTTP o el empleo de Java, Flash, JavaScript o HTML5. Datos de proxy intermedios también pueden aportar información o incluso puede ser posible obtener la dirección IP de la red privada del cliente, por ejemplo empleando API JavaScript proporcionada por WebRTC, un proyecto libre para dotar facilidades de comunicaciones en tiempo real a los navegadores.

Obtención de la IP privada usando WebRTC (Chrome, Firefox) -. http://net.ipcalf.com

La geolocalización también es otro de los datos extraídos y utilizados para el perfilado e identificación. Para ello, se consulta la dirección en bases de datos públicas o bien se emplea la API Geolocation, de HTML5. No obstante, la geolocalización es un dato que no cuenta con la suficiente precisión y que se ve afectado por circunstancias como la utilización de VPN o el uso de red Tor, que falsearían el origen real.

Otros mecanismos de identificación

Marcadores dependientes de las preferencias y comportamiento

Existen características que van unidas al comportamiento habitual del usuario y que por tanto no están atadas a un dispositivo concreto. Estos datos son útiles para identificar un perfil de usuario que esté haciendo uso del dispositivo. Entre esta información se encuentra:


  • Lenguaje preferido, codificación de caracteres, y zona horaria.
  • Datos en caché y en el histórico de navegación.
  • Es interesante destacar que la información de caché e histórico de navegación puede obtenerse con cierta colaboración del usuario, como se describe en el estudio llevado a cabo en colaboración con Microsoft: I Still Know What You Visited Last Summer. En este estudio se describen varias técnicas, destacando la utilización de los distintos colores que utiliza un navegador para diferenciar enlaces visitados o no visitados y así, camuflarlos en imágenes, captchas u otros elementos interactivos de la página para determinar si el usuario los ha visitado o no.


Otra aproximación más sencilla para acceder al histórico del navegador y que no necesita interacción con el usuario es la ya referenciada Sniffy, donde se saca partido a la tecnología HSTS.

Inyección de cabeceras HTTP

El asunto de la inyección de cabeceras HTTP ya tuvo su repercusión en 2014 cuando se publicó que Verizon, una operadora de telecomunicaciones americana estaba añadiendo cabeceras con marcadores al tráfico HTTP de sus clientes, con objeto de crear un identificador para cada uno de ellos. Esta circunstancia se bautizó como "permacookies".

Por otro lado y más recientemente, se publicó por parte de la iniciativa acessnow.org el estudio: The Rise of Mobile TrackingHeaders: How Telcos Around the World Are Threatening Your Privacy donde se detalla esta misma estrategia de identificación en dispositivos móviles empleada por operadoras de telefonía. Ante este tipo de acciones poco se puede hacer, puesto que es imposible controlar el tráfico una vez ha abandonado nuestro terminal móvil y está en mano del operador.

-Estadísticas extraídas en análisis de cabeceras- Fuente: accessnow.org-

- Algunas de las cabeceras HTTP utilizadas por distintas operadoras -Fuente: accessnow.org

Persistencia de elementos identificadores

Podría pensarse que utilizando navegación privada, y limpiando frecuentemente los datos de navegación, caché y cookies se eliminaría cualquier elemento de identificación o rastreo.
¿Es esto así?: no siempre, de hecho, casi nunca. Tenemos desde elementos que se borran únicamente con cerrar el navegador hasta elementos sobre los que no podemos actuar, como las huellas digitales o la inyección de cabeceras, pasando por elementos que persisten y/o se regeneran tras eliminar completamente los datos de navegación.

En la siguiente tabla se recogen las principales tecnologías empleadas para identificar usuarios y su persistencia al borrado.




Defensa contra la identificación y rastreo

¿Podemos hacer algo para evitar ser clasificados en nuestro uso cotidiano de internet? Como decimos no demasiado. Las tecnologías web actuales utilizan JavaScript, Flash, Java y cookies casi en cualquier sitio, y cuentan con capacidades de persistencia que suelen superar los mecanismos básicos de limpieza de los navegadores. La navegación privada no supone una gran mejora, al igual que otras opciones como Do not track que incorporan algunos navegadores. A pesar de todo siempre es recomendable como primer paso para proteger nuestra privacidad, realizar un vaciado completo de ficheros y contenidos de navegación tras cada uso del navegador.

Para ir más lejos en la protección de nuestra privacidad podemos desactivar todas las tecnologías ya mencionadas (Java, Flash, JavaScript, etc.) e impedir la ejecución de plugins y scripts en el navegador pero esto, generalmente, hace que la experiencia de uso de internet se degrade de forma considerable. Como medida alternativa pueden utilizarse herramientas como uBlock Origin (Chrome, Firefox) para bloquear dominios y/o páginas de anuncios, bloqueadores de JavaScript como NoScript (Firefox) o ScriptSafe (Chrome), plugins para detectar canvas fingerprinting como CanvasFingerprintBLock, e incluso si solemos comprar por internet, utilizar alguna de las herramientas diseñadas para detectar manipulación de precios como la ya mencionada, $heriff.

- Plugin uBLock. Obsérvese el alto númerode bloqueo de peticiones y elementos de seguimiento -

Finalmente y adoptando una posición más estricta en busca de una mayor privacidad, se podría hacer uso de navegadores especialmente diseñados para este objetivo, como por ejemplo, Tor browser.

Navegador Tor browser 

La disminución involuntaria de privacidad al utilizar internet poco a poco va calando en la conciencia social y, en general, empieza a despertar claro interés. Un ejemplo de ello es el reciente caso sucedido en Bélgica con la solicitud judicial a Facebook para detener el rastreo de usuarios que visitan su página.

No hay comentarios:

Publicar un comentario