Cookies y otras tecnologías de monitorización en internet

59
Cookies y otras tecnologías de monitorización en Internet Alejandro Ramos Twitter: @aramosf Blog: http://www.securitybydefault.com Slideshare: http://www.slideshare.com/aramosf Junio/2014

description

Presentación para el curso de Protección de Datos y Nuevas Tecnologías de la UIMP (Junio 2014) http://www.uimp.es/agenda-link.html?id_actividad=6237&anyaca=2014-15

Transcript of Cookies y otras tecnologías de monitorización en internet

Page 1: Cookies y otras tecnologías de monitorización en internet

Cookies y otras tecnologías de

monitorización en InternetAlejandro Ramos

Twitter: @aramosf

Blog: http://www.securitybydefault.com

Slideshare: http://www.slideshare.com/aramosf

Junio/2014

Page 2: Cookies y otras tecnologías de monitorización en internet

Introducción.

• Por motivos históricos el protocolo HTTP no está orientado a mantener la sesión.

• == No es capaz de distinguir a los usuarios mientras navegan.

• Debido a la necesidad de crear un “carrito de la compra” nacen las cookies.

Page 3: Cookies y otras tecnologías de monitorización en internet

El protocolo HTTP

GET /

GET /siames.jpg

GET /persa.jpg

GET /angora.jpg

<incluye imágenes con gatos>

Page 4: Cookies y otras tecnologías de monitorización en internet

El protocolo HTTP – Ej. Autenticación

POST / usuario=yo&contraseña=CatFan

GET /mensajes Cookie: ID=HD5F12EEAB095EF112

Set-Cookie: ID=HD5F12EEAB095EF112

Ok! Usuario correcto.

Hola… este es un mensaje privado…

Page 5: Cookies y otras tecnologías de monitorización en internet

Propiedades de las cookies

• Una cookie es un secreto compartido entre cliente y servidor para validar la identidad: un testigo.

• Se almacenan en el sistema en ficheros de forma persistente.

• Tienen fecha de expiración.• Se pueden establecer para que solo se

transmitan en protocolo seguro (HTTPS).• Las de un dominio no pueden ser consultadas

por otro dominio.

Page 6: Cookies y otras tecnologías de monitorización en internet

Set-Cookie y el fichero en el disco duro.

Page 7: Cookies y otras tecnologías de monitorización en internet
Page 8: Cookies y otras tecnologías de monitorización en internet

Ejemplos de otros usos de las cookies.

• Identificar de forma inequívoca a un usuario permite:

▫ Saber que páginas ha visitado.

▫ Que productos ha buscado.

▫ Su localización geográfica.

▫ Conocer desde que página ha llegado.

▫ El navegador que utiliza.

▫ Ver en que parte de la web a movido el ratón.

▫ … O incluso las teclas que ha pulsado.

Page 9: Cookies y otras tecnologías de monitorización en internet

El poder de la analítica: Open Web Analytics

Page 10: Cookies y otras tecnologías de monitorización en internet
Page 11: Cookies y otras tecnologías de monitorización en internet

Tipos de cookies.

• Existen varios formas de almacenar información de forma persistente en un navegador:▫ Cookies estándar: aceptadas por los RFC de HTTP.

▫ Cookies de HTML5 “webstorage”: nuevo método para almacenar cookies en el navegador.

▫ Cookies “Local Shared Object” o LSO: en las que se usa un contenedor de Flash.

▫ IE userData: parar versiones anteriores a la 10 de IE.

▫ SilverLight Isolated Storage: similar a Flash pero de MS.

• No todas ellas son “ampliamente” conocidas o se pueden eliminar desde el navegador.

Page 12: Cookies y otras tecnologías de monitorización en internet

Cookie estándar

• Definidas en los RFC 2109 y 2965.• Son la gran mayoría y las más conocidas.• Se establecen mediante cabecera HTTP Set-

Cookie.• Según el navegador se almacenan en:

▫ IE (ficheros) %AppData%\Microsoft\Windows\Cookies

▫ Firefox (sqlite) %AppData%\Mozilla\Firefox\Profiles\xxxxxx.default\cookies.sqlite

▫ Chrome (sqlite)

%LocalAppData%\Google\Chrome\User Data\Default\Cookies

Page 13: Cookies y otras tecnologías de monitorización en internet

Peticiones HTTP

Servidor

HTTP/1.0 200 OKContent-type: text/htmlSet-Cookie: name=valueSet-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT

(content of page)

Navegador

GET /spec.html HTTP/1.1Host: www.example.orgCookie: name=value; name2=value2Accept: */*

Page 14: Cookies y otras tecnologías de monitorización en internet

Cookies Flash - Local Shared Object

• Es necesario utilizar el plugin de Flash.• Se pueden compartir entre navegadores Firefox->IE.• Existió controversia cuando se comenzó a utilizar. Su uso

era muy extendido y no se conocían los mecanismos para eliminar este tipo de datos.

• Desde 2011 se pueden eliminar desde el propio navegador.

• No caducan.• Se almacenan en:

▫ IE/Firefox: %AppData%\Macromedia\Flash Player\#SharedObjects\XXX

▫ Chrome: %LocalAppdata%\Google\Chrome\User Data\Default\Pepper

Data\Shockwave Flash\WritableRoot\#SharedObjects

Page 15: Cookies y otras tecnologías de monitorización en internet

Ejemplo de Almacenamiento ActionScript 3

http://research.zscaler.com/2009/03/demystifyingabusing-flash-cookies.html

Page 16: Cookies y otras tecnologías de monitorización en internet

La configuración de Flash y sus cookies.

Page 17: Cookies y otras tecnologías de monitorización en internet
Page 18: Cookies y otras tecnologías de monitorización en internet

SilverLight Isolated Storage

• Similar a las Cookies de Flash, pero menos conocidas.

• No muy extendidas debido a la falta de popularidad de SilverLight.

• Ruta de los ficheros:

▫ %UserProfile%\AppData\LocalLow\Microsoft\Silverlight\is

Page 19: Cookies y otras tecnologías de monitorización en internet

Ejemplo SilverLight

http://msdn.microsoft.com/es-es/library/cc221360(v=vs.95).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-13

Page 20: Cookies y otras tecnologías de monitorización en internet

Cookies HTML5

• Nacen con HTML5 para aumentar el tamaño de las cookies y mejorar el rendimiento.

• Se pueden almacenar de formas distintas:▫ Session Storage: no persistente.▫ Local Storage: persistente y ampliamente usada▫ Global Storage: antiguo método.▫ Database Storage: en sqlite. Soportado por pocos navegadores.▫ IndexedDB: Chrome/Firefox y parcialmente en IE.

• Las que se usan normalmente son las dos primeras.• Su ruta en el disco es:

▫ IE: %UserProfile%\AppData\LocalLow\Microsoft\Internet Explorer\DOMStore

▫ Firefox: %AppData%\Mozilla\Firefox\Profiles\xxxxxxx.default\webappsstore.sqlite

▫ Chrome: %LocalAppData%\Google\Chrome\User Data\Default\Local Storage

Page 21: Cookies y otras tecnologías de monitorización en internet

Ejemplo almacenamiento Local Storage

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=html5AlmacenamientoLocal

Page 22: Cookies y otras tecnologías de monitorización en internet

Como se consultan las cookies en HTML5

Page 23: Cookies y otras tecnologías de monitorización en internet
Page 24: Cookies y otras tecnologías de monitorización en internet

IE userData

• Utilizado como alternativa a “localStorage” en navegadores IE sin soporte HTML5.

• Obsoleto en Internet Explorer 10.

• Peligrosas, ya que no expiran nunca.

• No soportado por otros navegadores.

• Ruta del almacén de ficheros:

▫ %USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\UserData

Page 25: Cookies y otras tecnologías de monitorización en internet

Ejemplo userData behavior

http://samples.msdn.microsoft.com/workshop/samples/author/persistence/userData_1.htm

Page 26: Cookies y otras tecnologías de monitorización en internet

Proyecto: Persist-JS

• Librería que implementa varios métodos para almacenar cookies▫ flash: Flash 8 persistent storage.▫ gears: Google Gears-based persistent storage.▫ localstorage: HTML5 draft storage.▫ globalstorage: HTML5 draft storage (old spec).▫ ie: Internet Explorer userdata behaviors.▫ cookie: Cookie-based persistent storage.

• https://github.com/jeremydurham/persist-js

Page 27: Cookies y otras tecnologías de monitorización en internet

PersistJS en Internet.

Page 28: Cookies y otras tecnologías de monitorización en internet
Page 29: Cookies y otras tecnologías de monitorización en internet

Alternativas a las cookies.

• Técnicamente es posible “engañar” al navegador para identificar a un usuario sin la necesidad de cookies.

• Esto permite que algunas empresas usen estos métodos para rastrear usuarios y sus comportamientos, aunque eliminen las cookies.

Page 30: Cookies y otras tecnologías de monitorización en internet

¿Y estos métodos se usan?

Si….Y se las conoce como cookies zombie.

Page 31: Cookies y otras tecnologías de monitorización en internet

window.name

• Propiedad que permite especificar un nombre a una ventana.

• Es permanente entre las páginas.

• Su uso esta muy extendido, sin propósitos de monitorización.

• Aunque también se usa como sustituto de las cookies de sesión..

• No es persistente en disco duro, salvo se guarde en la caché.

Page 32: Cookies y otras tecnologías de monitorización en internet

Proyecto: jQuery-store

• Librería que permite almacenar información en:

▫ HTML 5's DOM Storage

▫ Microsoft's UserData

▫ Si esos métodos fallan: window.name

• Se puede usar para trazar una sesión, pero al no ser persistente no aguanta los reinicios del navegador.

https://github.com/medialize/jQuery-store

Page 33: Cookies y otras tecnologías de monitorización en internet

Fingerprint del navegador

• Identifica al usuario en base a una firma obtenida al conectarse.

• Método ampliamente usado.

• La firma se genera en base a características como:

▫ Fuentes instaladas (javascript y flash).

▫ Complementos instalados.

▫ Zona horaria

▫ Resolución de la pantalla.

▫ Características del navegador (canvas)

Page 34: Cookies y otras tecnologías de monitorización en internet

Estudio sobre fingerprints

http://www.cosic.esat.kuleuven.be/publications/article-2334.pdf

Page 35: Cookies y otras tecnologías de monitorización en internet

Proyecto: FingerprintJS

• Permite obtener una huella única de un navegador con una probabilidad del 94%.

• Múltiples variantes. Más de 10 proyectos en Github similares.

• Proyecto EFF Panopticlick de 2010

https://github.com/Valve/fingerprintjs

https://github.com/carlo/jquery-browser-fingerprint

Page 36: Cookies y otras tecnologías de monitorización en internet

La huella digital del navegador.

Page 37: Cookies y otras tecnologías de monitorización en internet
Page 38: Cookies y otras tecnologías de monitorización en internet

HTTP ETags

• La cabecera HTTP ETag es un identificador único que se entrega junto a un objeto de una página web.

• Es usada para que el navegador consulte si ha sido modificado el objeto que almacena en caché.

▫ Si no se ha modificado, no hace la petición.

▫ Si se ha modificado, realiza la petición y actualiza la caché.

• Si el servidor web manda un identificador único en el Etag para cada usuario, puede leerlo posteriormente para identificarlo.

Page 39: Cookies y otras tecnologías de monitorización en internet

Funcionamiento de ETag

Page 40: Cookies y otras tecnologías de monitorización en internet

Proyecto: Cookieless• Aplicación que implementa tracking mediante Etag.

• Fácil de usar y muy difícil de detectar si está bien implantado.

• Proyectos alternativos:▫ http://lucb1e.com/rp/cookielesscookies/

▫ https://github.com/mephir/etagsession

▫ https://github.com/adamdeprince/etag-tracker

• https://github.com/lucb1e/cookielesscookies

Page 41: Cookies y otras tecnologías de monitorización en internet

Caso real: KissMetrics

http://www.wired.com/2011/07/undeletable-cookie/

Page 42: Cookies y otras tecnologías de monitorización en internet

Uso de Etag para almacenar una cookie.

Page 43: Cookies y otras tecnologías de monitorización en internet
Page 44: Cookies y otras tecnologías de monitorización en internet

WebCache: “If-Modified-Since”

• Similar al caso anterior de Etag, basándose en la caché del navegador.

• El servidor establece una fecha concreta para cada usuario en un objeto (Last-Modified)

• El navegador comprueba si la versión de su caché es la última mediante la cabecera “If-Modified-Since” más la fecha que recibió.

• El servidor lee la fecha de la petición e identifica al usuario.

Page 45: Cookies y otras tecnologías de monitorización en internet

Javascript con código único.

• El servidor manda a cada usuario un javascriptcon un ID único.

• El javascript es almacenado en la caché.

• El ID es obtenido por el propio javascript como valor de sesión.

• Este método es ampliamente usado, no siempre con propósitos malvados.

Page 46: Cookies y otras tecnologías de monitorización en internet

Un Javascript distinto para cada usuario.

Page 47: Cookies y otras tecnologías de monitorización en internet
Page 48: Cookies y otras tecnologías de monitorización en internet

WebHistory

• Mediante javascript se codifica en base64 la cookie.• Se realizan peticiones en background para que queden

guardadas las URL en el historial del navegador. • Por ejemplo, para almacenar “bcde-”, se harían las peticiones

de:▫ google.com/evercookie/cache/b▫ google.com/evercookie/cache/bc▫ google.com/evercookie/cache/bcd▫ google.com/evercookie/cache/bcde▫ google.com/evercookie/cache/bcde-

• Para recuperar la sesión, se consulta el historial de navegación mediante fuerza bruta (en local) utilizando CSS y javascript.

• Es una prueba de concepto más que una realidad.

Page 49: Cookies y otras tecnologías de monitorización en internet

PNG, Canvas y caché

• Cuando el servidor genera la cookie, establece una segunda cookie de control.

• El cliente solicita un PHP. Si el servidor observa que esa petición contiene la cookie de control, crea una imagen (PNG) que contiene los datos de la cookie a guardar.

• Se indica al cliente que guarde la imagen en la caché durante años.

• Para recuperar la cookie el cliente solicita la imagen.• El servidor devuelve un “304 Not Modified” y deja que el

navegador use la imagen de la caché.• Mediante Canvas, recupera los bytes guardados en la

imagen.

Page 50: Cookies y otras tecnologías de monitorización en internet

PNG/Canvas – Crear imagen (cookie)

GET /index.html

Set-Cookie: ID=EE01AFSet-Cookie: Control=778811

GET /pixel.png

Cookie: ID=EE01AFCookie: Control=778811

¿Tiene cookie?

SiEE01AF

Expires: Mon, 29 Apr 203’ 21:44:55 GMT

Queda almacenada en caché la imagen

Page 51: Cookies y otras tecnologías de monitorización en internet

PNG/Canvas – Recuperar cookie (de la imagen)

GET /index.html

GET /pixel.png ¿Tiene cookie?

No304 Not ModifiedEn cache

Javascript lee el PNG con “canvas” y establece la cookie

Page 52: Cookies y otras tecnologías de monitorización en internet

Otros métodos

• Existen más métodos para identificar de forma inequívoca a un usuario mientras navega:

▫ Java JNLP

▫ Google Gears

▫ HTTP Autenticación básica.

Page 53: Cookies y otras tecnologías de monitorización en internet

evercookie• Herramienta que implementa hasta 14 métodos distintos

para persistir una cookie. • Creada por Samy Kamkar en 2010• Entre ellos algunos muy agresivos:

▫ Storing cookies in Web History

▫ Storing cookies in HTTP ETags

▫ Storing cookies in Web cache

▫ Java JNLP PersistenceService

▫ window.name caching

▫ PNG

▫ Java CVE-2013-0422 exploit

• https://github.com/samyk/evercookie

Page 54: Cookies y otras tecnologías de monitorización en internet

Evercookies en la NSA

• Presentación filtrada por Snowden

• La NSA se plantea el uso de evercookies.

http://www.theguardian.com/world/interactive/2013/oct/04/tor-stinks-nsa-presentation-document

Page 55: Cookies y otras tecnologías de monitorización en internet

El uso de Evercookie

Page 56: Cookies y otras tecnologías de monitorización en internet
Page 57: Cookies y otras tecnologías de monitorización en internet

Recomendaciones.

• Pensemos que no hay manera de librarse.

• Única opción: navegar en modo privado “InPrivate” o “Incógnito”. Esto deshabilita la caché.

• Vaciar la caché del navegador al terminar de usarlo.

• Cerrar el navegador al terminar de navegar.

• Utilizar extensiones como “AdBlock” , “PrivateBrowsing”, “Disconnect” y “SecretAgent”

Page 58: Cookies y otras tecnologías de monitorización en internet

Referencias.

• http://robertheaton.com/2014/01/20/cookieless-user-tracking-for-douchebags/

• http://www.futureofprivacy.org/wp-content/uploads/2011/07/Flash%20Cookies%20and%20Privacy%20II%20Now%20with%20HTML5%20and%20ETag%20Respawning.pdf

• http://lucb1e.com/rp/cookielesscookies/• http://samy.pl/evercookie/• http://en.wikipedia.org/wiki/Local_shared_object• http://en.wikipedia.org/wiki/Zombie_cookie• http://www.w3schools.com/html/html5_webstorage.asp• http://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/

common/Guias/Guia_Cookies.pdf• http://msdn.microsoft.com/es-es/library/bdts8hk0(v=vs.95).aspx• http://www.arctic.org/~dean/tracking-without-cookies.html• http://ashkansoltani.org/2011/08/11/respawn-redux-flash-cookies/• https://panopticlick.eff.org/browser-uniqueness.pdf• http://msdn.microsoft.com/en-us/library/ms531424.aspx• http://www.cosic.esat.kuleuven.be/publications/article-2334.pdf

Page 59: Cookies y otras tecnologías de monitorización en internet

Gracias.

Twitter: @aramosf

Blog: http://www.securitybydefault.com

Slideshare: http://www.slideshare.com/aramosf

Junio/2014