Cookies y privacidad. · 2016-05-03 · Ejemplos de otros usos de las cookies. Identificar de forma...

Post on 23-Apr-2020

10 views 0 download

Transcript of Cookies y privacidad. · 2016-05-03 · Ejemplos de otros usos de las cookies. Identificar de forma...

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