Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
https://cybercamp.es
Cookies y privacidad.
Alejandro Ramos.
Twitter: @aramosf
Slideshare: http://www.slideshare.com/aramosf
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.
Mantenerlo autenticado en una página web.
Establecer distintos permisos/roles.
Que productos ha buscado.
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): “secure”
Las de un dominio no pueden ser consultadas por otro
dominio: Same-Oroigin policy
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\UserData\Default\Cookies
Peticiones HTTP
Servidor
HTTP/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 HTML5
Nacen con HTML5 para aumentar el tamaño de las cookies y mejorar el rendimiento.
Se pueden almacenar de formas distintas:
Local Storage: Ampliamente usada
File API: método para almacenar ficheros.
IndexedDB, sustituye WebSQL, que fue soportado por pocos navegadores y está en desuso.
AppCache: creado para hacer aplicaciones offline
Su ruta en el disco es:
IE: %UserProfile%\AppData\LocalLow\Microsoft\Internet Explorer\DOMStore
Firefox: %AppData%\Mozilla\Firefox\Profiles\xxxxx.default\webappsstore.sqlite
Chrome:%LocalAppData%\Google\Chrome\User Data\Default\Local Storage
Ejemplo almacenamiento Local Storage
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=html5Almacena
mientoLocal
Demostración.Como se consultan las cookies en HTML5
Cookies Flash - Local Shared Object
Es necesario utilizar el plugin de Flash.
Se pueden compartir entre navegadores. Ej: Firefox->IE.
Controversia en el inicio. Su uso era muy extendido y no se conocían los
mecanismos para eliminarlas.
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
1. Similar a las Cookies de Flash, pero menos conocidas.
2. No muy extendidas debido a la falta de popularidad de
SilverLight.
3. Ruta de los ficheros:
a. %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
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 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.
1. Técnicamente es posible “engañar” al navegador
para identificar a un usuario sin la necesidad de
cookies.
2. 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.
IP
Carga del móvil
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
1.Permite obtener una huella única de un navegador con una
probabilidad del 94%.
2.Múltiples variantes. Más de 10 proyectos en Github similares.
3.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.
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.
HTTP ETags
1.La cabecera HTTP ETag es un identificador único que se
entrega junto a un objeto de una página web.
2.Es usada para que el navegador consulte si ha sido
modificado el objeto que almacena en caché.
a.Si no se ha modificado, no hace la petición.
b.Si se ha modificado, realiza la petición y actualiza la caché.
3.Si el servidor web manda un identificador único en el Etag
para cada usuario, puede leerlo posteriormente para
identificarlo.
Funcionamiento de ETag
Proyecto: Cookieless
1. Aplicación que implementa tracking mediante Etag.
2. Fácil de usar y muy difícil de detectar si está bien
implantado.
3. Proyectos alternativos:
a. http://lucb1e.com/rp/cookielesscookies/
b. https://github.com/mephir/etagsession
c. 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.
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.
HTTP Strict Transport Security
HTTP Strict Transport
Security
La cabecera HSTS
es utilizada para
forzar el uso de SSL
en una página web.
http://www.radicalresearch.co.uk/lab/hstssupercookies
chrome://net-internals/#hsts
Demostración.HSTS
http://www.radicalresearch.co.uk/lab/hs
tssupercookies
Content Security Policy Cabecera diseñada para evitar ataques del tipo XSS y
clickjacking https://w3c.github.io/webappsec/specs/csp-pinning/#content-security-policy-header-field
El atributo report-uri puede ser único por navegador
Content-Security-Policy-Pin:
max-age: 10886400;
img-src https://*;
script-src ‘self’ *.scripts.com cdn.test.net;
report-uri http://reportcollector.example.com/id=<session>
Nombre de la cabecera
De donde puede cargar img
De donde puede cargar scripts
Donde reportar las infracciones Potencial ID único por usuario
Tiempo en la caché
Public Key Pinning Extension
Cabecera para hacer “pinning” de certificados SSL https://tools.ietf.org/html/draft-ietf-websec-key-pinning-21
Public-Key-Pins:
pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=";
pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE=";
max-age=5184000;
includeSubdomains;
report-uri="https://www.example.net/hpkp-report?id=<session>"
Nombre de la cabecera
Tiempo en la caché
Incluir subdominios
Donde reportar las infraccionesPotencial ID único por usuario
ID certificado
ID certificado backup
EvercookieHerramienta 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
Iniciativas 1
Opt-out cookies, permite configurar cookies para
especificar que no se desea el seguimiento.
• 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
Iniciativas 2
Ley de cookies: artículo 22 de la Ley 34/2002 de 11
julio
https://www.agpd.es/portalwebAGPD/canaldocumentacion/publicacio
nes/common/Guias/Guia_Cookies.pdf
Resultado
Recomendaciones.
Pensemos que no hay manera sencilla de librarse.
Única opción: navegar en modo privado “InPrivate” o “Incógnito”. Esto
deshabilita la caché, pero permite fingerprint.
Configuraciones seguras de navegadores:
https://github.com/pyllyukko/user.js
Vaciar la caché del navegador al terminar de usarlo (?)
Utilizar extensiones como “AdBlock+” , “Private Browsing”, “Disconnect”
ó “Privacy Badger”
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
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
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/7a741d95
dbb532a8e12261b876e1aa90.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: @aramosfSlideshare: http://www.slideshare.com/aramosf
Noviembre/2015