Cookies y privacidad.
Alejandro Ramos.
Twitter:
Slideshare:
@aramosf
http://www.slideshare.com/aramosf
https://cybercamp.es
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\cooki
es.sqlite
Chrome (sqlite): %LocalAppData%\Google\Chrome\User
Data\Default\Cookies
Peticiones HTTP
Navegador
GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value; name2=value2
Accept: */*
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)
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&cslang=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/article2334.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.
chrome://net-internals/#hsts
http://www.radicalresearch.co.uk/lab/hstssupercookies
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
Nombre de la cabecera
Content-Security-Policy-Pin:
Tiempo en la caché
max-age: 10886400;
De donde puede cargar img
img-src https://*;
De donde puede cargar scripts
script-src ‘self’ *.scripts.com cdn.test.net;
report-uri http://reportcollector.example.com/id=<session>
Donde reportar las infracciones
Potencial ID único por usuario
 El atributo report-uri puede ser único por navegador
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:
Nombre de la cabecera
ID certificado
pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=";
ID certificado backup
pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE=";
max-age=5184000;
includeSubdomains;
Tiempo en la caché
Incluir subdominios
report-uri="https://www.example.net/hpkp-report?id=<session>"
Donde reportar las infracciones
Potencial ID único por usuario
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-stinksnsa-presentation-document
Demostración–y final-.
El uso de Evercookie
Iniciativas 1
•
DNT: Do not track, cabecera HTTP que solicita
que no se haga seguimiento.
•
IE10 lo implantó por defecto con gran controversia.
 Opt-out cookies, permite configurar cookies para
especificar que no se desea el seguimiento.
•
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/wpcontent/uploads/2011/07/Flash%20Cookies%20and%20Privacy%20II%20Now%20with%20HTML5%20and%20
ETag%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:
Slideshare:
@aramosf
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
T2
T1
T3
PC
Al3x.tor
PC
Alex
Destino
AD
Fingerprint Al3x.tor
Fingerprint Alex
Al3x.tor == Alex!!
Red Tor
Internet
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 :-D
Fingerprint en Tor
Gracias otra vez.
Twitter:
@aramosf
Slideshare: http://www.slideshare.com/aramosf
Noviembre/2015