cookies y otras tecnologias de monitorizacion en … y otras...Propiedades de las cookies • Una...

Post on 23-Apr-2020

4 views 0 download

Transcript of cookies y otras tecnologias de monitorizacion en … y otras...Propiedades de las cookies • Una...

Cookies y otras tecnologías de

monitorización en InternetAlejandro Ramos.

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

14/9/2015

Introducción.

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

• Lo que implica que no es capaz de distinguir a los usuarios mientras navegan.

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

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.

Demostración.El poder de la analítica: Open Web Analytics y los

Downstreams

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: “pequeños archivos de texto” • Tienen fecha de expiración. El testigo caduca. • Se pueden establecer para que solo se transmitan

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

otro dominio.

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

Peticiones HTTP

ServidorHTTP/1.0 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT (content of page)

Navegador

GET /spec.html HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2 Accept: */*

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.

Cookies Flash - Local Shared Object•Es necesario utilizar el plugin de Flash. •Se pueden compartir entre navegadores. Ej: 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. •Peligrosas ya que 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

•Morirán pronto, junto a flash.

Demostración.La configuración de Flash y sus cookies.

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.

•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

Ejemplo almacenamiento Local Storage

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

Demostración.Como se consultan las cookies en HTML5

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

Demostración.PersistJS 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 o gobiernos usen estos métodos para rastrear usuarios y sus comportamientos, aunque eliminen las cookies.

¿Y estos métodos se usan?

Si….Y se las conoce como

cookies zombie o (supercookies)

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

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)

Estudio sobre fingerprints

• fi

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

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

https://github.com/Valve/fingerprintjs2

Demostración.La huella digital del navegador.

… En España

De las 5 páginas con más tráfico de España, una de ellas usan Fingerprint.

marca.com:

http://b.scorecardresearch.com/c2/7715761/cs.js

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.

Funcionamiento de ETag

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

Caso real: KissMetrics

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

Demostración.Uso de Etag para almacenar una cookie.

… En España

De las 15 páginas con más tráfico de España, dos de ellas usan ETags.

• segundamano.es

• http://zsc.scmspain.com/Scripts/oas_analytics.js • 20minutos.es:

• http://pr.20min.es/RealMedia/ads/Creatives/default/empty.gif

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.

Javascript con código único.• El servidor manda a cada usuario un

javascript con 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.

Demostración.Un Javascript distinto para cada usuario.

Otros sistemas de caché• AppCache de HTML5 • Flash Resource Cache • Uso de canvas en un PNG • WebHistory

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.

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, HTTP ETags, Web cache

•Java JNLP PersistenceService •window.name caching •PNG •Java CVE-2013-0422 exploit

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

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

Demostración–y final-.El uso de Evercookie

Vectores que están por venir• Content Security Policy Pinning:

• https://w3c.github.io/webappsec/specs/csp-pinning/#content-security-policy-header-field

• Public Key Pinning Extension?: • https://tools.ietf.org/html/draft-ietf-

websec-key-pinning-21

Resumen

Plugins(

• Flash(•  Java(• Silverlight(• Gears(

Cache(

• AppCache(• Etag(• Last:Modified(• Canvas(• Flash(resource(Cache(

• CSP(Pinning*(• PKP(Pinning*(

HTML5(

•  localStorage(•  IndexedDB(• AppCache(• WebRTC(

Fingerprint(

• Plugins(• Zona(Geográfica(• Fuentes(• Resolución(• …(

Red(

• SDHC(• ChannelID(• TLS(handshake(• DNS(Cache(

Iniciativas 1

• Opt-out cookies, permite configurar cookies para especificar que no se desea el seguimiento.

Fail

Fail

Fail

• DNT: Do not track, cabecera HTTP que solicita que no se haga seguimiento.

• IE10 lo implantó por defecto con gran controversia.

• P3P: Platform for Privacy Preferences, cabecera HTTP que declara que desea hacer el sitio con la información recopilada

• Firefox Polaris project

Hmm

Iniciativas 2Ley de cookies: artículo 22 de la Ley 34/2002 de 11 julio

https://www.agpd.es/portalwebAGPD/canaldocumentacion/publicaciones/common/Guias/Guia_Cookies.pdf

Resultado

FAIL

Recomendaciones.• Pensemos que no hay manera sencilla de librarse. • Única opción: navegar en modo privado “InPrivate” o “Incógnito”.

Esto deshabilita la caché. • Configuraciones seguras de navegadores: https://github.com/

pyllyukko/user.js • Vaciar la caché del navegador al terminar de usarlo. • Cerrar el navegador al terminar de navegar. • Utilizar extensiones como “AdBlock+” , “Private Browsing”,

“Disconnect” ó “SecretAgent” • Uso de VPNs • Revisa tu configuración: http://ip-check.info/

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

Gracias.Twitter: @aramosf Slideshare: http://www.slideshare.com/aramosf

Septiembre/2015

Breve introducción a Tor• Red de comunicaciones creada

con le objetivo de que los usuarios no revelen su identidad.

• Se desarrolla sobre Internet y con el uso de un software especifico.

• Para evitar la revelación de identidad se hace un “triple” salto entre los nodos que la componen.

• Los servicios alojados en tor tienen dominios “.onion”

• A veces conocida como “darknet”,

Redirect con control de cookie

Caso DoubleclickID

Fingerprint en Tor

PC Al3x.tor

T1T2

T3

Destino

AD

Fingerprint Al3x.tor

Red Tor

PC Alex

Fingerprint Alex

Internet

Al3x.tor == Alex!!

Fingerprint en Tor• Servicios .onion con Fingerprint

• http://m2ikembygbnnoxhm.onion//templates/cache/synio/7a741d95dbb532a8e12261b876e1aa90.js

• http://gcvqzacplu4veul4.onion/static/gen/packed-site-a0c4b177.js

• Servicios .onion con servicios de AD que hacen fingerprint: • http://j.adlooxtracking.com/ads/js/tfav_leo_leoban.js • http://secure-it.imrworldwide.com/v53.js • http://whoer.net/js/whoer.packed.js?602

Demostración :-DFingerprint en Tor

Gracias otra vez.Twitter: @aramosf Slideshare: http://www.slideshare.com/aramosf

Septiembre/2015