-
Notifications
You must be signed in to change notification settings - Fork 0
3 Primer Contacto
En esta sección, analizaremos los paquetes HTTP que enviaremos a los servidores de las aerolíneas y buscadores fijados. Para ello, hacemos uso de Burp Suite, una herramienta muy potente de análisis de tráfico de red.
Se ha elegido Burp Suite en lugar de Wireshark (de momento) por el hecho de que Burp Suite puede "paralizar" el proceso de comunicación. En resumen, su funcionamiento es el siguiente:
- Vinculamos un proxy desde Mozilla Firefox hacia nuestro propio ordenador (loopback), es decir, todo paquete que quiere salir a Internet antes pasa por mí mismo.
- Burp Suite se vincula a este proxy para leer cada paquete que salga. Se almacena la petición y la respuesta e incluso se da opción de guardar un archivo con los paquetes intercambiados (hasta el momento actúa igual que Wireshark).
- La diferencia principal, Burp Suite puede parar el mensaje HTTP y dejarnos elegir su envío o no. Podemos incluso modificar el paquete que estamos a punto de enviar. De la misma forma, cada uno de estos paquetes se almacena y se puede guardar como un archivo.
De esta forma vamos a situarnos justo antes de realizar una búsqueda en nuestras aerolíneas y sacar conclusiones de lo enviado.
El archivo post_iberia
consiste en una serie de objetos XML que mandamos
guardar a BurpSuite para poder analizarlos. Este archivo (junto a los demás que estudiemos)
consiste en una serie de datos sobre el archivo de guardado, y posteriormente items XML
donde cada uno es una petición respuesta HTTP. Con ayuda de grep
y otros comandos podemos
pasar a estudiar datos sobre este proceso de búsqueda de vuelo.
Una búsqueda en Iberia está formada por 84 paquetes HTTP:
Host | Paquetes |
---|---|
www.iberia.com | 24 |
decollector.tealeaf.ibmcloud.com | 17 |
krxd | 7 |
attribution.iberia.com | 5 |
criteo.com | 5 |
api.flocktory.com | 5 |
service.maxymiser.net | 3 |
bat.bing.com | 3 |
www.google-analytics.com | 2 |
www.googleadservices.com | 2 |
www.facebook.com | 1 |
stats.g.doubleclick.net | 1 |
www.google.com | 1 |
bucket.cdnwebcloud.com | 1 |
ayuda.iberia.com | 1 |
s3.eu-central-1.amazonaws.com | 1 |
platform.twitter.com | 1 |
static.ads-twitter.com | 1 |
analytics.twitter.com | 1 |
push.services.mozilla.com | 1 |
Tabla 1: Hosts destacados de una petición a Iberia |
Salta a la vista la cantidad de hosts "ajenos" a Iberia a los que acabamos de enviar información por habernos interesado en la búsqueda de un vuelo. Solo un 36,7% de los mensajes (30/84) que enviamos en una búsqueda de vuelo van destinados a Iberia. Algunos de los hosts "intrusos" son conocidos a nivel casual: Facebook, Google, Bing, Twitter... Otros tantos son hosts de nombre autoexplicativo: el Ad Services de Google, Google Analytics, Twitter Analytics. Todos estos mensajes que enviemos, muy probablemente, afectarán al hecho de la publicidad que nos aparezca la próxima vez que naveguemos por la web (ahora no paran de anunciarme vuelos en cualquier página web).
Sin embargo, vamos a investigar quiénes son algunos de los hosts desconocidos:
-
decollector.tealeaf.ibmcloud.com
: Introduciendo este enlace directamente en un navegador web, nos aparece una interfaz de Mozilla que analiza un código de respuesta de error que nos ha devuelto el host. Este host proviene de Tealeaf, una herramienta de IBM de análisis de datos movido por inteligencia artificial con propósito de marketing. -
krxd
: Es un host que pertenece a Krux Digital, una compañía estadounidense de (otra vez) análisis de datos para generar unprofile
de intereses de los visitantes. Este host aparece en una cantidad inmensa de páginas web al ser una de las herramientas de análisis más utilizadas. El lector puede probar con cualquier página web comercial y analizar los paquetes para encontrarse con este dominio (muy probablemente). -
criteo.com
: Otra corporación de análisis de datos destinada a fines publicitarios y de comercio perfilado. Compañías como XBox, P&G, Philips, Reebok... son clientes de esta empresa. -
api.flocktory.com
: Otra compañía de marketing. Con afiliados como Media Markt, Worten, la ONCE, DIA, Burguer King... -
service.maxymiser.net
: Este host como tal forma parte de la API de Maxymiser, el cual es un servicio de Oracle de publicidad, análisis de datos, etc.
Resulta sorprendente la gran cantidad de hosts (y múltiples mensajes) con los que conectamos en el proceso de vuelo cuya finalidad es únicamente la de analizar nuestros datos para publicidad y economía. Queda bastante claro que buscando de forma normal pasamos a intervenir en estudios de un mismo mercado realizados por casi una decena de empresas distintas: Google Analytics, Facebook, Twitter Analytics, Tealeaf, Krux Digital, Criteo, Flocktory y Maxymiser.
Como experimento, probamos a realizar la misma búsqueda anterior pero bloqueando ciertos hosts (desde BurpSuite, deniego los paquetes que vayan a ser enviados) con tal de ver cuáles de ellos son realmente necesarios para saber sobre lo buscado. La búsqueda funciona pese a bloquear todo aquel host que no sea www.iberia.com y attribution.iberia.com.
Es sabido lo que es una Cookie: pequeña cantidad de información que almacenamos
(cuando un host lo pide con Set-Cookie
) para posteriormente ser usada en
otras ocasiones al comunicarnos con un host (que mostramos mediante el header
Cookie
). Ahora veamos qué puede llegar a hacer esta pequeña información en la
vida real.
De todos los paquetes, se destaca el que contiene un POST a SearchFormHome.do
.
El funcionamiento de la búsqueda en Iberia en lo que respecta a estructura de su
página web se basa en dicho recurso. De este mensaje, que es el más importante,
analizamos las cookies que contiene el mismo.
Cookie: popunderConf=1;
_fbp=fb.1.1553023523802.833910812;
_ga=GA1.2.2143141733.1553023524;
IBERIACOM_LAST_REQUEST=MAD|VGO| | | |;
IBERIACOM_LAST_SEARCHS=Madrid (MAD)#MAD#Vigo
(VGO)#VGO#31/05/2019#07/06/2019#R###INF-0|ADT-1|YTH-0|CHD-0|YCD-0;
__utmx=206024267._I8wQFOkTreS-jZYz2-Gow$0:;
__utmxx=206024267._I8wQFOkTreS-jZYz2-Gow$0:1553285810:8035200;
_gcl_au=1.1.922693830.1553023681;
flocktory-uuid=1104d3bc-9e0b-4191-9ff3-b7a96af22acb-1;
cto_lwid=eec87909-0f16-41b6-8719-a441fb4d508f;
cto_idcpy=b1921301-cee7-4c0c-a479-bb2987464133;
IBERIACOM_IDENTIFICATION=15530359988792347436957810369791;
IBERIACOM_PERSONALIZATION=ES|ES|es|MAD|VGO|ES|;
mt.v=2.420654002.1553158572927;
JSESSIONID=l7WnChFybLjGjzjEtrTt0Op9CukZgcf3j3MVlMiNuCiyy1kD3Aqv!-1889617234;
BIGipServerwww.iberia.com_SSL=1897638080.47873.0000;
rxVisitor=1553285650730KHHFITTJSESOG0M00JPCET00N43BAG0B;
dtPC=4$485805725_708h-vJAFNENAPDHPKKPLDIFPBPGAMHCADPEKO;
rxvt=1553287625748|1553285650732;
dtSa=-;
dtLatC=12;
IBERIACOM_COOKIES_ALERT=shown;
WCXSID=5553605258395349082905279166;
TLTSID=00005553605258395349082905279166;
_gid=GA1.2.849639312.1553285654;
PC_Passengers=;{"adult":1,"children":0,"infant":0};
mmapi.store.p.0={"mmparams.p":{"pd":"1584821719106|\"509263152|GA[...]AAAUU=\"",
"srv":"1584821719110|\"fravwcgeu09\"",
"uat":"1584821744482|{\"Roundtrip2plus\":\"No\",
\"Market\":\"ES\",\"Language\":\"es\",\"Log_Status\":\"Not_loggedIn\",
\"Quadrigan\":\"IBHMPA\",\"Analytics_Code\":\"es/ES/IBHMPA\",\"PAXNum_S\":\"Single\",
\"Origin\":\"MAD\",\"Destination\":\"VGO\",\"LeadTime\":\"90days\",
\"FlightType\":\"RT\",\"LOT\":\"6to8\",\"Flight_Search\":\"MAD,VGO\"}"},
"mmparams.d":{},"price_alerts_CD":{}}
mmapi.store.s.0={"mmparams.d":{},"mmparams.p":{}};
ga_flight_totalvalue=;
ga_flight_originid=MAD;
ga_flight_destid=VGO;
ga_flight_startdate=2019-05-31;
ga_flight_enddate=2019-06-07;
dtCookie=4$850F655A678ACFF6C774930C4316B786
Texto 1: Cookies traducidas en la petición principal de Iberia. Se han omitido códigos excesivamente largos y se ha traducido del URL Encode.
Destacamos lo siguiente de las cookies que fueron enviadas:
- Como era de esperar, se envía con nuestras cookies (no únicamente a Iberia) el vuelo
que acabamos de consultar con todo detalle e incluso las búsquedas anteriores. Esto
puede verse en
IBERIACOM_LAST_REQUEST
,IBERIACOM_LAST_SEARCHS
y en las dega_flight
, que pertenecen a Google Analytics. - Más destacable es el hecho de que guardamos ciertas cookies que contienen un ID de usuario e
incluso de la sesión. Se puede comprobar con, por ejemplo,
flocktory_uuid
: "Identifier of the user" según describen en su política de uso de cookies. Realizando el mismo experimento desde otros ordenadores, vemos que dicho identificador varía pero es fijado por cada "máquina" salvo que borremos las cookies.
Los objetivos de analizar la petición GET de búsqueda de un vuelo con Ryanair son los siguientes:
- Comprobar que Iberia (como es de esperar) no es la única aerolínea que envía información nuestra y distinguible a otras empresas de publicidad y análisis.
- Comprobar que buscar un vuelo con el verbo GET es más simple (de cara a ahorrar dificultad en la siguiente fase de investigación).
Host | Paquetes |
---|---|
www.ryanair.com | 24 |
app.launchdarkly.com | 4 |
d.adroll.com | 3 |
events.launchdarkly.com | 2 |
clientstream.launchdarkly.com | 2 |
ryanair.tt.omtrdc.net | 2 |
desktopapps.ryanair.com | 2 |
services-api.ryanair.com | 2 |
assets.adobedtm.com | 1 |
widget.criteo.com | 1 |
sync.outbrain.com | 1 |
Tabla 2: Hosts destacados de una petición a Ryanair |
Vemos que en cierto modo, Ryanair es "más limpio" en lo que respecta a con quién nos comunicamos. De 44 paquetes, 30 son de Ryanair (68,2%). Analicemos los hosts restantes:
-
launchdarkly
: Es una empresa de feature flags. En resumen, una feature flag es una sección de código que puede estar o no dependiendo únicamente de una flag. Esto es de gran valor para el software de una empresa, dado que pueden realizar pruebas sin temor a provocar fallos en el resto de código (y con ello de pérdidas). Una gran práctica de este recurso es el conocido como A/B testing, que consiste en tener dos versiones de una misma página web o aplicación para poder estudiar cuál de las dos versiones genera más beneficios. Es de esperar que Ryanair hace uso de Launchdarkly para A/B testing. -
d.adroll.com
: Volvemos a las empresas de marketing y análisis de mercado. -
assets.adobedtm.com
: Es la herramienta de analísis y marketing de Adobe. -
criteo
youtbrain
: Otras dos empresas de análisis de mercado y marketing.
Las cookies utilizadas por Ryanair como tal (es decir, conectando con el host
www.ryanair.com
) son pocas si bien indescriptibles:
s_nr2=1555499120838-Repeat;
agsd=0FZK3Jw_F3w6CFB61eydrLe6BJ8Xv2eeORgSxGRvAuRvfnN-;
AMCV_64456A9C54FA26ED0A4C98A5@AdobeOrg=-330454231|[...]|vVersion|3.1.2;
mkt=/gb/en/;
mbox=PC#b905573f3de84f128c828f8623[...]|session#[...]8d1e890#1555501103;
RYANSESSION=XLcF8golArkAAEwqxrAAAAAB;
check=true;
fr-correlation-id=fca328ac-8ef0-4c61-ad51-3f7c82b54511;
AMCVS_64456A9C54FA26ED0A4C98A5%40AdobeOrg=1;
s_cc=true; agso=AQ9ubMoBAPJIwikkw9ZItPmi_qiDgi8.;
agsn=iVuYdLXpKNnyt0HfFOAquzT-3uYeIzjjmsdvJdK-Nv0.;
agsy=ARQlAh4BAAxDFdkkw9ZIKNlONg..;
s_sq=%5B%5BB%5D%5D
Texto 2: Cookies traducidas en la petición principal de Ryanair. Se han omitido códigos excesivamente largos y se ha traducido del URL Encode.
No es trivial descifrar estas cookies en base 64, pero no supone problema alguno puesto que no son las únicas utilizadas. A diferencia de Iberia, hacemos uso de distintas cookies para distintos hosts en lugar de tener la mayoría de ellas en la petición principal de búsqueda. Vemos que, por ejemplo, al intercambiar tráfico con Criteo se comparte una única Cookie:
uid=b1921301-cee7-4c0c-a479-bb2987464133
Texto 3: Cookies en una petición de Criteo
Análogamente al caso de Iberia, vemos que disponemos de un identificador único para nosotros a la par que estamos enviando información del vuelo que estamos buscando.
Falta un último rasgo de las redes de comunicación entre nosotros y los hosts de aerolíneas que hemos de tener en cuenta de cara a responder a nuestra pregunta principal.
No todo es la capa de aplicación HTTPS. A nivel de capa de red, tenemos
un identificador único distinto a los uid
que encontrábamos en ciertos
paquetes: Nuestra dirección IP, lo cual da lugar al IP tracking.
El IP tracking, tal y como su nombre indica, es llevar cuenta de las direcciones IP que han contactado con nosotros. Esto aporta la gran ventaja de acabar con el anonimato de una conexión desde el nivel de capa de red. Que una aerolínea aplique IP tracking o no es cuestión de acceder a su código fuente, pero es de esperar que lo haga debido a las grandes ventajas que esto conlleva. Nos conducimos a destacar dos aspectos de esta técnica en el contexto de este trabajo:
- NAT (Network Address Translation): Estar detrás de un router supone, probablemente, que nuestra IP como tal no sea trackeada, puesto que esta es privada. Esto es ventaja y desventaja a la vez: Un host que haga uso de IP tracking no sabe que hemos sido exactamente nosotros quienes estamos interesados en X vuelo, pero probablemente en IP tracking "se corte por lo sano", de forma que entre todos los de una misma subred se están perjudicando (siempre y cuando la pregunta final sea cierta, claro).
- VPN (Virtual Private Network): Conectarnos a través de una VPN con un host que nos trackea hace que no nos rastree directamente. Sin embargo, repetir búsquedas desde dicha VPN tiene como consecuencia el mismo efecto, puesto que sería claro que estamos interesados.
Más adelante, veremos que es posible cambiar de IP constantemente y disipar los efectos del IP tracking.
Abandonamos la fase de análisis de tráfico usual con las siguiente premisas claras:
- Intercambiamos bastante información con hosts innecesarios de cara a obtener los resultados de búsqueda. Bloquear dichos dominios parece ser ideal para no formar parte de decenas de diversos estudios de mercado.
- Tenemos certeza de que existen Cookies en el tráfico usual con información del vuelo a buscar y de búsquedas anteriores; así como otras para empresas de marketing y análisis de datos que nos identifican únicamente. Hay incertidumbre en el hecho de si dicho identificador único sirve para una discriminación de primer grado.
- No sabemos si las aerolíneas hacen uso de IP Tracking, pero comentadas sus ventajas (desde el punto de vista de una empresa), es probable que sea así. Esta puede ser otra forma de identificarnos únicamente.