Cookies y privacidad. Tocino y Velocidad.
Alejandro Ramos.
Twitter: @aramosf Blog: http://www.securitybydefault.com Slideshare: http://www.slideshare.com/aramosf
Enero/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
Demostración.La configuración de Flash y sus cookies.
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
Ejemplo SilverLight
http://msdn.microsoft.com/es-es/library/cc221360(v=vs.95).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-13
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
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
Ejemplo userData behavior
http://samples.msdn.microsoft.com/workshop/samples/author/persistence/userData_1.htm
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 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.
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
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: (? por ver)
• 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 Blog: http://www.securitybydefault.com Slideshare: http://www.slideshare.com/aramosf
Enero/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”, “deep web” y otros nombres similares.
¿LSO en Tor?
http://www.greatobxvv7etokq.onion/greatdumps/control.swf
Ejemplo de Almacenamiento ActionScript 3
control.swf
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 Blog: http://www.securitybydefault.com Slideshare: http://www.slideshare.com/aramosf
Enero/2015
Top Related