martes, 20 de septiembre de 2011

Caché poisoning e inyección de javascript. Huella digital, Geolocalización y seguimiento a través de Google Analytics

El pasado 14 de Septiembre se presentaron en la Universidad Europea de Madrid los ultimos proyectos de Fin de Máster de Seguridad de la Información y las Telecomunicaciones.  En concreto yo, con mis compañeros presentamos el proyecto Japitracing sobre Geolocalización IP usando cache poisoning con inyección de javascript a través del servicio Google Analytics..
Portada de la memoria Fin de Master



Logo de la aplicación



En dicho proyecto se ha implementado la idea de hacer un envenamiento de la caché de los navegadores aprovechando la confianza que ofrece un servicio como Google Analytics. Este servicio se basa un un código javascript ( ga.js ) que es descargado desde la páginas que hacen uso de analytics y cuya función es recopilar información  variada del navegador y de aspectos de la navegación dentro de  la página para generar estadísticas que se envían al propietario de la  misma. Este script, es un objeto cacheable con una vida media de una o dos horas hasta que el navegador solicita actualización. Además está ampliamente extendido por internet, de modo que,  casi con total seguridad en una sesión de navegación normal se  visita una página que lo contiene. Esta situación se ha aprovechado para conseguir obtener información sobre una persona y su localización después de haber modificado el  script original ga.js de Gooogle Analytics y , tras una intervención en la comunicación, lograr inyectar en la caché del navegador de la "victima". La manipulación del ga.js ha sido de forma que al descargarse, se cachée con un tiempo largo de expiración para lograr  hacerlo "persistente" y que no sea de nuevo sustituido por el original una vez se deje de intervenir la comunicación (MiTM). El script modificado incluye un código que recogerá información sobre la IP ( y localización por tanto) , sobre el sistema operativo,  el navegador, sus plugins y su  historial. Una vez recopilada toda esa información será enviada, esquivado las restricciones de same origin policy  gracias a un  iFrame invisible que se crea en la carga de la página , a continuación, tras meter la información en un formulario se envía con POST hacia un servidor ajeno. Todo esto ocurre de forma transparente para el usuario cada vez que se visite una página con Analytics y el script ga.js (ya almacenado en caché) se invoque.

Una muestra de la información obtenida

En definitiva  un trabajo muy interesante, durante el cual hemos ido descubriendo las posibilidades que tiene javascript , la información del navegador ,su funcionamiento y caché para establecer un ataque que vulnere gravemente la privacidad del usuario. Todo ello incrementado aun más por las características particulares de las aplicaciones y configuraciones que cada usuario tiene y que conformarán lo que se da en llamar "huella digital". Para profundizar en este tema, las huellas digitales y la privacidad a la hora de navegar, que mejor que leer esta entrada en el blog de nuestro tutor en el proyecto.

Finalmente, agradecer públicamente el gran trabajo y la motivación de mis compañeros de máster asi como la ayuda de nuestros tutores en informática64, Pablo González y Chema Alonso.

No hay comentarios:

Publicar un comentario