miércoles, octubre 28, 2015

Time-Based Web Browsing History Disclosure using HSTS & Tracking with HPKP (HTTP Public Key Pinning) Cookies

Este fin de semana ha tenido lugar la conferencia ToorCON en San Diego, unas conferencias en las que tuve el placer de participar hace ya unos 6 o 7 años. En ella un investigador ha publicado un para de vulnerabilidades de lo más inteligentes que pueden utilizar los sitios web para espiar la navegación de los usuarios.

Figura 1: Abusando de HSTS para espiar la navegación de los usuarios

Ambas técnicas, aprovechando la estructura de navegación cifrada usando HTTPs, abusando en ambos casos de HSTS (HTTP Strict Transport Security) para conseguir sacar información del historial de sitios visitados y para conseguir crear una supercookie

Time-Based Web Browsing History Disclosure using HSTS

Cuando un sitio web hace uso de HSTS, se lo notifica al navegador mediante un HTTP Header que envía al navegador en el que le informa de que a esa página web solo se puede conectar usando HTTPs, por lo que el navegador rechazará cualquier intento de conexión que se haga a ese sitio utilizando HTTP. Conocido esto, el investigador Yan Zhu hace uso de una función JavaScript que, pasada una lista de sitios web que utilizan HSTS, intenta conectarse a ellos pidiendo una imagen que no existe en el servidor web por medio de HTTP.
La conclusión es sencilla, si el sitio ha sido visitado previamente y no ha caducado el TTL - de forma natural o por un ataque vía NTP usando Delorean - que se marca en el HTTP Header de HSTS, entonces el navegador generará un error muy rápidamente y navegará vía HTTPs, ya que sabe que no puede conectarse vía HTTP a ningún recurso de ese dominio. Si por el contrario el sitio no ha sido visitado recientemente, entonces se tiene que producir la petición al servidor web del recurso solicitado para configurar HSTS y luego pedir el recursos, obteniendo un error con un tiempo de respuesta mayor.

Figura 3: Sniffly saca una lista de sitios con HSTS que puede que hayas visitado y que no

El atacante solo debe medir los tiempos de los errores para poder hacer un ataque de Time-Based Web Browsing History Disclosure basado una lista de sitios a consultar. Eso sí, esta técnica solo vale para sitios que hagan uso de HSTS. Para que lo pruebes, ha publicado una Prueba de Concepto online llamada Sniffly.

Tracking with HPKP (HTTP Plublic Key Pinning) en Google Chrome

La segunda de las vulnerabilidades se trata de una nueva supercookie que se puede crear en los navegadores Google Chrome. Ya conocemos desde algún tiempo la posibilidad de dejar una SuperCookie en los TTL de los HTTP Headers de HSTS, pero ahora el investigador hace un abuso de la implementación HPKP que no es más que la implementación de las técnicas de Certificate Pinning en Google Chrome. La idea es que HPKP permite poner un certificado distinto para cada usuario y lo que hace el ataque es generar un cadena de identificación distinta para cada uno de estos certificados.

Figura 4: Implementación de HPKP en Google Chrome. Consulta de Gmail.com

Así, cuando el cliente se conecta la primera vez, este recibe vía HPKP un certificado con un pineo de backup con un TEXT configurado. Después, cada vez que se conecta se fuerza un error y esta cadena de TEXT  e envía vía "report-uri" al servidor que se ha configurado. De esta forma tenemos una SuperCookie usando HPKP en Google Chrome

Las dos técnicas son muy curiosas y de gran aplicación hoy en día en todos los sistemas de WebBrowsing FingerPrinting para los entornos de tracking publicitario, seguimiento de huellas digitales y scoring de riesgos, por lo que no os debe caber la menor duda que desde ya van a empezar a estar en uso de forma masiva.

Saludos Malignos!

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares