viernes, agosto 30, 2019

Google Project Zero desvela que "Lo que pasó en tu iPhone puede que no se quedara en tu iPhone"

Estos días Google Project Zero ha publicado la información y los detalles para conocer todos los exploits y vulnerabilidades utilizadas, así que no voy a centrarme en mucho en este artículo en esa parte. Sí que es relevante que la gente entienda detalles al respecto de lo que significa, de cómo está hecho, y de qué podemos esperar de aquí al futuro.

Figura 1: Google Project Zero desvela que:
"Lo que pasó en tu iPhone puede que no se quedara en tu iPhone"

Para que os hagáis una idea, si eres usuario de iPhone, desde el 2016 hasta el 2019, han estado activas direcciones en Internet que explotaban vulnerabilidades en todo la gama de dispositivos y todas las versiones de iOS y robar todos tus datos - mensajes privados y fotos -  con solo visitar una página web.  Esto tipo de ataques no son algo nuevo, y ya explicamos en detalle cómo funcionan este tipo de ataques en el libro de Hacking iOS: iPhone & iPad del que tenemos hasta dos ediciones.

Figura 2: Hacking iOS: iPhone & iPhone (2ª Edición)

Esto no es nuevo, ya hace mucho tiempo con el famoso JailbreakMe (v1, v2 y v3) se demostró que era más que posible hacerlo de manera automatizada. Al final, aprovechándose de que el ecosistema de dispositivos es muy reducido en iPhone y de que el número de versiones de sistema operativo iOS es muy corto, el trabajo de automatizar una explotación consistente, no era algo ilusorio.

La privacidad de los datos almacenados en un terminal iPhone

No quiero centrarme mucho en cómo funciona la seguridad en iOS y las formas de explotarla, en el libro de Hacking iOS: iPhone & iPad 2º Edición - permitidme que sea recurrente en esto - ya explicamos los detalles de cómo se suelen atacar estos dispositivos, y si quieres conocer las diferentes formas de hacerlo te recomiendo que te lo leas. No está actualizado a la última versión de iOS, pero sí que explica ataques se pueden hacer hoy, que se hacen, y que se harán en el futuro cambiando los exploits.

La parte fundamental de la privacidad de los datos almacenados en tu iOS es que la mayoría de las aplicaciones confían en varios sistemas de protección de iPhone que son clave para que no pase nada. El primero de ellos es que no se pueden acceder a los datos sin que el terminal iOS haya descifrado el disco de almacenamiento.

Es por eso que cuando un terminal se bloquea lo más importante es romper el passcode para lograr el descifrado del disco. Esto es lo que dio lugar al conflicto entre el gobierno de USA y Apple con el terminal iPhone del terrorista de San Bernardino. Al final, una empresa rompió el passcode haciendo un ataque muy inteligente clonando la electrónica de una placa de iPhone con un ataque precioso de NAND Mirroring.

Que los datos estén cifrados cuando el sistema está apagado intenta evitar que alguien haga un ataque local al terminal cuándo las protecciones de seguridad del sistema operativo iOS están apagadas - aunque hemos visto que existen formas de saltárselo -, pero como ya hemos visto, dependen de factores como que no se pueda manipular la electrónica y romper la "raíz de confianza", como ya se ha hecho.

El que iOS haya puesto tanto cuidado en el cifrado del disco duro llevó a que muchas apps no cifraran ninguno de sus datos que utilizaban. Caso de WhatsApp del que yo siempre me quejaba, Telegram, iMessage, etc... han guardado en texto plano, haciendo que cualquiera que accediera al sistema de ficheros pudiera llevarse los datos, y manipularlos.
Eso llevaba a que fuera fácil extraer la base de datos de WhatsApp desde un ordenador pareado, o que se pudieran manipular los mensajes que contenía, algo que hicimos hace mucho tiempo en unas demos tratando de explicar cómo funcionaba eso. Así que, el que iOS cifrara los datos incentivó a que las apps de iOS no cifraran ningún dato que utilizaban.

Por supuesto, para eso hay que tener acceso al sistema operativo, y poder hacer cosas. Pero existen muchas formas de manipular el sistema operativo desde fuera ya que un terminal iPhone es, ante todo, un terminal con hiper-conectividad. Esto es lo que explicaba en la presentación esa que se hizo tan famosa - tiene más de 1.6 Millones de visulizaciones - de "Tu iPhone es tan (in)seguro como tu Windows". Te puedes conectar a un terminal iPhone encendido vía WiFi, vía BlueTooth, vía 2G/3G/4G, vía conexión a tu ordenador Windows o MacOS, etc... Y cada tipo de conexión es una carretera de entrada de información - que puedes ser buena o mala - a tu sistema operativo.


Figura 4: Tu iPhone es tan (in)seguro como tu Windows

Así, por ejemplo, nosotros demostramos cómo era posible hacer un JavaScript Botnet con terminales iPhone con iOS a través de puntos de acceso WiFi maliciosos o servicios Proxy. Y hace un par de años demostramos cómo era posible robar la agenda de contactos de un terminal iPhone con solo poner música en un altavoz BlueTooth gracias a nuestro ataque de DirtyTooth.


Figura 5: Dirtytooh en iPhone para robar contactos de iOS

Si hay conectividad hay forma de llegar al sistema operativo, así que todas las partes del sistema que son "frontera" con el resto del mundo, deben tener un cuidado extremo con las vulnerabilidades que inyectan, ya que un fallo de seguridad explotable en una parte del sistema operativo que recibe información desde fuera puede hacer que tu terminal sea accesible remotamente por cualquiera.

Y ahora completemos el círculo. La primera capa de protección de tus datos es el cifrado del disco que hace iOS, pero cuando tienes el terminal arrancado la primera vez, el disco está descifrado y los datos disponibles. La segunda capa de protección debería estar puesta por el cifrado de las aplicaciones, pero vender que la protección de iPhone era tan robusta hizo que los desarrolladores no cifraran los datos habitualmente.

La tercera capa de protección es la robustez de las partes de tu iPhone que se conectan al mundo exterior, como el módulo BlueTooth, el modem 4G, el módulo de descubrimiento de redes WiFi o los clientes de servicios de Internet, como el navegador, el cliente de correo electrónico, o una app cualquiera de tu sistema. Y créeme, siempre van a aparecer vulnerabilidades en estos módulos. Vulnerabilidades que se inyectan en las nuevas funciones, que se descubren y se parchean... o no. 

La última capa de protección el el CodeSigning de iOS, o la necesidad de que todo el código que se ejecuta en iPhone tenga que venir firmado por un certificado digital que tenga una cadena de confianza firmada por Apple. Es decir, un desarrollador firma su software con un certificado digital de firma de código que ha sido emitido y firmado por Apple. Así, nadie que no haya pasado por los controles de calidad del software de Apple puede ejecutar un programa en iOS.

Por supuesto, como os podéis imaginar, conseguir que un programa que va a robar tus fotos, tu base de datos de WhatsApp o Telegram, consiga ser firmado para poder ejecutarse en el sistema operativo - y fuera del espacio de la app vulnerable - necesita encontrar los famosos exploits del kernel de iOS que permiten modificar dicho kernel para quitar la verificación de "Código Firmado" antes de ejecutar cualquier programa. Es decir, para hacer el famoso Jailbreak.

Cómo controlar tu iPhone completamente

Pues bien, supongamos que alguien pone foco en buscar vulnerabilidades de ejecución de código arbitrario en la aplicación que más se usa para traer código remoto, que no es nada más que el navegador de Internet. Cada URL que se visita desde un navegador es un código que se ejecuta en la app en iPhone, si alguien encuentra la manera de explotar una o varias vulnerabilidades para llegar a ejecutar código en el sistema operativo, habría pasado la primera protección.

Pero hay que conseguir pasar la segunda puerta, hay que romper el CodeSigning en el sistema iOS, y para eso se necesitan las famosas vulnerabilidades de Jailbreak. Estos exploits han sido codiciados habitualmente por analistas forenses - llegando a valer dos millón de dólares - e investigadores de seguridad. Apple incentivo que se buscaran estas vulnerabilidades al prohibir a "security researches", analistas forenses y cuerpos de seguridad que pudieran acceder al terminal iPhone en una investigación. Así que, la única forma de conseguir el acceso era haciendo el "jailbreak".
Ahora, Apple se ha dado cuenta de que los Security Researchers se han profesionalizado tanto en el jailbreak - por pura necesidad - que se ha vuelto en su contra. Por eso ahora Apple va a dar a los investigadores terminales iPhone con iOS "capado" para que puedan probar y buscar vulnerabilidades en otras partes sin necesidad de preocuparse por el "jailbreak".

Volviendo al objetivo de controlar el terminal iPhone completamente, primero deberíamos encontrar las vulnerabilidades en el navegador más usado - Apple Safari o Google Chrome -, después deberíamos encontrar las vulnerabilidades de jailbreak para explotarlas desde una página web. Esto lo hicieron hace mucho tiempo en "jailbreakme", una web a la que los usuarios iban con su navegador para liberar los primeros iPhone, y que abrió el camino a jailbreakme v2, y v3.

Como ya he dicho antes, como parte fundamental de la seguridad de los iPhone, en el libro de Hacking iOS: iPhone & iPad describimos este proceso en detalle, y cómo se podían empaquetar esos exploits para usarlos en otros entornos como hizo el investigador español José Selvi con JailOwnMe.

Llegados a este punto, ya tenemos una carretera desde un servidor de Internet al corazón de tu terminal iPhone para ejecutar cualquier programa, por ejemplo uno que busque todas las bases de datos de tus apps como WhatsApp, Skype, Telegram, iMessages, Photos, e-Mail, etcétera, y se lleve todos los datos a la nube. Si las bases de datos estuvieran cifradas sería un poco más complicado para el programa - debería localizar las claves de descifrado en las apps y robarlas también - pero al estar en claro, es bastante cómodo llevarse todo.

¿Y el cifrado del disco de iOS en tu iPhone? Pues como estás navegando por Internet, significa que tu terminal está arrancado y por lo tanto el disco duro descifrado - pusiste el passcode para iniciar sesión - así que tus datos están disponibles para cualquier app que se ejecute, esté firmada o no, ya que se ha hecho un jailbreak.

¿Y qué ha descubierto Google Project Zero?

Pues que desde el año 2016 hay sitios en Internet que tienen automatizado exploits e implants (los programas que se meten dentro de tu terminal para robarte los datos) para romper la seguridad de todos los terminales iPhone según van saliendo y robar todos los datos. Así que con hacer campañas de spear-phishing (mensajes de e-mail con direcciones URLs maliciosas enviadas a objetivos clave), se pueden llevar los datos de una persona cualquiera con solo hacer un click en la URL.

Figura 7: Línea temporal de los exploits usados en las diferentes versiones

Esto, desde luego, deja por tierra la campaña de Apple de este año en Las Vegas de "Lo que pasa en iPhone se queda en tu iPhone", que fue una campaña clara y directa contra el negocio de los datos en Google, y se suma a que haya tenido que pedir perdón públicamente al saberse que las grabaciones de voz de Siri - de lo que ya sabíamos que podía pasar - estaban siendo escuchadas por empresas terceras a Apple sin mucho control.
La descripción de todos los exploits en iOS, en el navegador, y la arquitectura del implant que hacen para robar todos tus datos están en estos artículos del blog de Project Zero.

¿Y qué podemos hacer contra esto?

Pues por desgracia es el mundo en el que estamos y no vamos a poder hacer demasiado. Hay que tomar precauciones infinitas. Actualizar el sistema operativo, ser cuidadoso con las URLs que se abren, pero ... podríamos caer cualquiera en este tipo de ataques, así que lo que tenemos que exigir a las compañías que hagan todo lo que sea posible por evitar esto. 
Que inviertan más en las pruebas de seguridad, que la ventaja competitiva del tiempo no justifica que un fallo de estas características acabe con la vida de una persona por ver expuesta toda su privacidad. No es solo decir "I am sorry", es hacer más, que podemos hacer muchas más cosas, y estar más cerca de los mejores "Security Researchers" para evitar al máximo posible estas situaciones que, lamentablemente, volveremos a vivir una y otra vez en este mundo digital en el que vivimos.

Saludos Malignos!

jueves, agosto 29, 2019

El día que conocí a Richard Stallman... y se dejó el portátil sin vigilancia (a mí alcance).

Siempre he pensado que un día tendré mucho tiempo para estar sentado delante de mi portátil un día, y otro día, y otro día. Muchos días seguidos con tiempo para escribir. Para escribir muchas cosas. Cuentos, aprendizajes, pensamientos, libros técnicos, y hasta aventuras personales. Y por supuesto, entre ellas, muchas anécdotas que me han pasado con gente genial a la que he tenido la suerte de conocer.

Figura 1: El día que conocía Richard Stallman... y se dejó el portátil sin vigilancia (a mi alcance).

Os he contado muchas a lo largo de los años por aquí. Muchas. Y otras las tengo anotadas para que no se me olviden. Tal vez algún día escriba un libro con la gente de mi tiempo a la que he tenido la suerte de conocer, y cómo fue para mí - que es lo único que realmente cuenta. 

Hoy os quiero contar una curiosidad, no, más bien una anécdota del día que conocí a Richard Stallman en persona. El pasado 12 de Noviembre de 2018. El día que daba una conferencia en el Espacio de la Fundación Telefónica, y donde entre muchas cosas, yo pujé por el peluche que rifa al final con Phillippe Lardy - fundador de OpenExpo Europe - que me lo ganó.  En la próxima conferencia lo consigo sí o sí.


El resumen de la conferencia está en la web, aunque no he encontrado el vídeo de la presentación - lo mismo no quería que quedase grabado Richard, que también nos prohibió subir fotos a Instagram o Facebook suyas durante su presentación -.

Figura 3: RMS dando su presentación en el Espacio de la Fundación Telefónica

El caso es que al final de la charla nos fuimos a comer un grupo, y yo tuve la suerte de sentarme a su lado y charlar largo tiempo. Richard es encantador en el corto, habla español de maravilla y le encantan los chistes con juegos de palabras, del tipo "Yo te amo, como diría Yoda". Me lo pasé genial con él, y sí, os puedo confirmar que me regañó, me adoctrinó para usar software libre y crear todo el software bajo licencias libres. 

Pero lo curioso es que, durante un momento de la comida él quería hacer una llamada para organizar su próxima parada en el mundo. Sacó su portátil, inició sesión, abrió su editor de texto y empezó a leer y editar el correo en formato de texto plano. Y le surgió un imprevisto.

Figura 4: RMS y yo en la hora de la comida. Se puede ver el portátil en la mesa.

Algo le obligaba a cambiar el billete que tenía comprado, y tuvo que hacer una llamada de teléfono. Sí, había sacado el portátil en la mesa donde estábamos comiendo, había leído el correo y ahora tenía que hacer una llamada de teléfono a un compañero para algo.

Los que ya conocéis la leyenda sobre Richard Stallman sabéis que suele hacer llamadas desde terminales de otros, que eso de tener un dispositivo de espionaje no va con él, así que le pidió el teléfono a otro de los comensales y salió a llamar. Y... sí, se dejó a mi lado la sesión abierta de su portátil.

¿Os lo podéis creer? Al lado mismo de El Maligno. Era el momento de hacerle un ataque David Hasselhoff en toda regla. Pero... pensé que era más bonito inmortalizar el momento histórico con una fotografía que tengo guardada. Eso sí, os la dejo por aquí pero un poco censurada. Como podéis ver, en sus correos deja un mensaje a NSA al principio, para dejar claro cuál es su posición respecto del espionaje. 

Figura 5: El portátil "Libre"

Después de ese momento, donde lógicamente le regañé por dejar la sesión abierta, le subí a mi Malignomóvil 3 - del que os garantizo que no le fue fácil ni subir ni bajar por culpa de lo incómodo que es mi coche - y le llevé a la estación de Chamartín a hacer su gestión. 

Al final, fueron unas tres o cuatro horas las que estuve con él, entre la charla, la comida, y el viaje, pero me guardo para mis memorias esos momentos juntos y esta anécdota con dejarse el portátil abierto... ¿os imagináis que le hubiera metido un troyano en ese momento? La verdad, me encantó pasar esos ratos con él, y espero poder recibirle en el futuro.

Saludos Malignos!

miércoles, agosto 28, 2019

¿Sabías que las grabaciones de voz que hace Google en Google Home y Android están en la nube? Mucha gente no lo sabe.

No es una información oculta, pero mucha gente no sabe que Google graba los audios por defecto cada vez que utilizas el micrófono en el teclado o cada vez que dices "OK Google". Hasta aquí todo normal, pero también están las grabaciones de todo lo que hay alrededor en esos momentos, y todo lo que se capturó cuando se activó sin querer en tu bolsillo o en tu casa.

Figura 1: ¿Sabías que las grabaciones de voz que hace Google en Google Home
y Android están en la nube? Mucha gente no lo sabe.

Mucha gente lo tiene grabado en su cuenta porque no a ido a desactivarlo en las opciones de cuenta de Google, y por supuesto, si alguien consigue acceso a tu cuenta puede ir y repasarlo. Yo lo he hecho con Mi Hacker, y con amigos y conocidos, y es increíble la cantidad de cosas que salen.

Figura 2: Configuración para que no se graben los audios. Revisa la tuya.

No solo están todas las búsqueda y todas las grabaciones, sino también las voces de las personas de fondo, conversaciones de cosas que se dicen por detrás, tonos de voz, etcétera. Y desde el día uno que se buscó. Créeme que cuando lo revisas con alguien, todo el mundo siente su privacidad vulnerada.

Figura 3: Accediendo a la lista de grabaciones desde Android

Haciendo esta sencilla prueba con las personas cercanas a mí - basta con ir a la configuración de Android, entrar en los "Ajustes" de la "Cuenta de Google", "Datos y Personalización" y lo que veis en la Figura 3 "Gestionar Actividad" - me sorprende la cantidad de ellos que no se imaginaban que cada vez que dicen algo se queda grabado en la "cloud" asociado a su cuenta. Pero lo más impresionante: Sus reacciones.

Figura 4: Grabaciones hechas por Google. Tienes el botón de Reproducir para oirlas.

Cuando la gente ve que están todas sus grabaciones y que se pueden escuchar con solo darle a "Reproducir" y que hay grabaciones que ellos ni sabían que se habían hecho - porque le dieron por error -, porque no sabían que se había activado Google Home por error o Google Assistant en su terminal, o porque le dieron en el teclado al micrófono cuando iban a teclear, y se grabó el ruido ambiente, las caras que ponen son un poema. De cada grabación, tienes todos los detalles.

Figura 5: Detalles de la grabación

Por supuesto, es necesario tener acceso a la cuenta, por lo que te recomiendo que pongas un Segundo Factor de Autenticación basado en tu número de teléfono o con TOTP que puedes gestionar con nuestro mismo Latch.


Figura 6: Proteger tu cuenta de Google con Latch Cloud TOTP

Si no lo tienes, y alguien consigue entrar en tu cuenta, puede buscar las grabaciones hechas en rangos de fechas, por tipo de dispositivo (Android, Google Home, etcétera) y escuchar pedazos de tu vida, lo que puede afectarte personalmente.

Figura 6: Opciones de búsqueda de grabaciones en tu cuenta

Lo más curioso es que como no es un servicio regulado como las comunicaciones de voz, por defecto la grabación de los mensajes de voz se activa cuando aceptas los Términos y Condiciones del servicio y debes ir a desactivarlo a tus opciones de cuenta, así que mucha gente no sabe que trocitos de su vida en forma de audios esta en la web. ¿Te gusta que se grabe tan fácilmente? 

Haz un experimento, entra a ver qué audios hay grabados en tu cuenta de Google, y ayuda a familiares, amigos y conocidos a que lo comprueben ellos. Y luego cuéntame en los comentarios cuáles fueron sus reacciones.

PD: Aura y Movistar Home

Aunque no tiene nada que ver con el artículo, pero como supongo que alguno me preguntará si nosotros en Aura y Movistar Home hacemos lo mismo y grabamos los audios de la gente me veo a añadir esto: La respuesta es que NO. El diseño de Aura y Movistar Home está hecho para que a los servidores de Telefónica no llegué ningún audio que se genere con "OK Aura" o dando clic en el icono de Aura en las aplicaciones.


Figura 7: Gestión de los contenidos de la televisión con Movistar Home

Hacemos la transcripción de audio con Cognitive Services utilizados en el dispositivo y al backend de Aura llega solo la transcripción. Esa transcripción se traduce al comando de voz, y después se anonimiza para quedarnos los comandos que se envían (sin saber su procedencia ni quién los dijo) y evolucionar el servicio con las cosas que nos piden que aún no tenemos en las características.

¿Por qué hicimos esto? 

Pues porque desde el principio hemos querido diseñar Movistar Home y Aura como un sistema que ayude a hacer cosas con nuestras tecnologías en el hogar y en los servicios de Telefónica, y no para capturar datos, por lo que la privacidad está en nuestra mente en todas las fases de la concepción, diseño y evolución. Pero ya le dedicaré un artículo largo a esto.

Esto quiere decir que tampoco vamos a generar algoritmos, renunciamos a esto cuando decidimos no grabar los audios, que extraigan insights de los sonidos, como si es una casa ruidosa, tranquila, si hay discusiones familiares,... y muchas cosas más que que se podrían extraer de audios grabados analizando tonos, ruidos de fondo, etcétera - que no quiero asustaros con lo que se puede obtener de ahí -.

Saludos Malignos!

martes, agosto 27, 2019

La Casa de Papel Temporada 3: El pacto de ficción, los hackers y el WhatsApp del CNI

Las normas de la netiquette dictan que hay que avisar si va a haber información de algo que sucede en una serie con un anuncio de "SPOILER ALERT" antes de cualquier explicación que cuente cosas de un capítulo para que los que no hayan visto aún esa serie puedan decidir si seguir leyendo o no, así que aquí queda puesto, ya que voy a hablar de una pequeña escena de "La Casa de Papel" Temporada 3 que tiene que ver con hackers y el pacto de ficción con el que visualiza la serie.

Figura 1: La Casa de Papel Temporada 3: El pacto de ficción, los hackers y el WhatsApp del CNI

Dicho esto, hoy quería hablaros de una escena de apenas 15 segundos en la que se da una explicación muy somera de cómo El Profesor y su equipo consigue acceso a todos los teléfonos móviles de todo el mundo y a la red del ejercito para conseguir entrar en el Banco de España donde van a intentar robar el oro de la cámara acorazada que nadie ha intentado llevarse antes.

Figura 2: Descripción de la cámara acorazada del Banco de España por ABC

Ni que decir tiene que a mí me gustaron las dos primeras temporadas de la serie - y esta tercera también - y como espectáculo de entretenimiento es una serie que te engancha desde el primer capítulo. El intentar robar cosas como La Fabrica Nacional de Moneda y Timbre o el Banco de España son guiones dignos de una buena ficción de aventuras. Así que pueden contar conmigo para disfrutar esas aventuras.


Figura 3: Vídeo del acuerdo entre Telefónica y Netflix

La serie nos encanta, y fue una de las elegidas para anunciar el acuerdo entre Telefónica y Netflix junto con Las chicas del cable. De hecho, cuando se produjo la presentación de El Embarcadero, fui como buen fan a hacerme una foto con Álvaro Morte, que ejecuta a la perfección el papel de El Profesor en la serie de "La Casa de Papel", así que no os debe quedar ninguna duda de que:
1) Me encanta la serie 
2) La recomiendo siempre que puedo.
Dicho esto, hay una cosa que se llama el pacto de ficción entre el escritor de una obra y el lector o el observador en este caso. Cuando vemos DeadPool, nos encanta que rompa la famosa "Cuarta Pared" y nos hable directamente de vez en cuando para contarnos cosas. O en una serie damos por bueno el poder oír los pensamientos narrados de uno de los protagonistas. Al final, nos están contando una historia con hechos imaginados y lo damos por bueno.


El problema del pacto de ficción es que cuando comienza la narración se establecen unas normas dentro de ese mundo imaginado. Se establecen las normas que dejan claro que los animales hablan, que las hadas  existen, o que los superhéroes tienen poderes. Yo comienzo a ver Daredevil y asumo que tiene un radar. Está firmado a fuego al principio de la historia entre el narrador y el observador. Está dentro del pacto de ficción.

En el caso de "La Casa de Papel", el pacto es que son ladrones y que todas las explicaciones son técnicas y basadas en principios más o menos reales. Entiendo que todo lo que hacen con tecnología que no tiene que ver con la realidad, y es inventado, pero yo no lo sé. Para mí, como no experto en explosivos, armas, procedimientos quirúrgicos, etcétera, todo lo que cuentan me vale.
"¿Que hay que meter Diacepam para que no dé un paro cardiaco? Me lo creo."
El problema que tengo yo con el pacto de ficción es que cuando me hacen una explicación técnica de un hacking de seguridad me cuesta más no romper durante esos instantes el pacto de ficción. Porque descubro el cartón piedra de la obra. Me doy cuenta conscientemente de que me están contando algo que no cuadra. Esto me pasó con la Trilogía de Millenium con uno de los hackeos de Lisbeth Salander, que os dejé en el artículo "Lisbeth, ¿Que has hecho qué?".


En el caso de La Casa de Papel Temporada 3, hay un momento en el que se ve a un grupo de hackers pakistaníes en Islamabab y el texto del narrador - que lo hace Tokio -, dice lo siguiente:
“Cuando tienes dinero para invertir en I+D puedes hacer cosas maravillosas. Tres semanas antes del robo ya estábamos dentro de los móviles del CNI y de la Policía a través de aplicaciones como WhatsApp. Podíamos activar sus micrófonos, su cámara y su geolocalización. Hacernos con las telecomunicaciones del Estado Mayor de la Defensa nos llevó menos de una hora. “
Y me salí del pacto. Por cosas que tampoco son muy complicadas de saber. Por ejemplo, el texto dice que lo hacen a través de aplicaciones como WhatsApp, pero la Policía ha puesto un sistema basado en ImBox para reemplazar WhatsApp con los que trabajamos en ElevenPaths, ya que invertimos en esta empresa vía Wayra.

Figura 6: ImBox, un sistema de mensajería para cuerpos de seguridad

Pero podría ser que hubiera policías con su WhatsApp incumpliendo las normas, o con sus teléfonos personales llevándolos al trabajo como segundo móvil. Lo que me dejó fuera es que controlaran todas las Telecomunicaciones del Estado Mayor de la Defensa en una hora, y los terminales móviles del CNI... también vía WhatsApp, que como os podéis imaginar no tienen instalados ni de broma.

Entiendo que es una ficción, y que por supuesto todo vale, pero me rompe el pacto de ficción que me digan un grupo de 65 hackers pakistanies comiendo hamburguesas y tomando Red Bull en una sala a oscuras para quedarse ciegos, desde el otro rincón del mundo rompen en 1 hora una red con la seguridad que aplica un país OTAN.

Figura 7: El ambiente de trabajo de los hackers que tumban la red en 1 hora
en Islamab mientras hackean el WhatsApp de todos los miembros del CNI

Vamos, en ese tiempo no me ha dado tiempo a mí a estudiarme las topologías e interconexiones de la red de telecomunicaciones, las medidas de seguridad que pudieran tener, ni empezar a buscar las posibles vulnerabilidades en todos y cada uno de los sistemas de seguridad. Pero... vale. Me lo creo que es una serie. Vamos a imaginar que tienen un 0 day mágico previamente, o mejor, una base de datos de 0-days ya listos para explotar, que se valen hasta para hackear un Atari 500 "air gapped". Fine! Me lo creo. Pero lo de que el CNI usa WhatsApp...

Saludos Malignos!

lunes, agosto 26, 2019

La generación exacta o inexacta de insights o cómo me llegan anuncios sobre mi sexualidad

Cuando se tienen datos en bruto, de ellos se puede sacar conocimiento. A partir de una serie datos de por dónde se mueve una persona se puede conocer muchas cosas de su vida, sus gustos o su forma de ser. A partir de lo que busca en Internet, de qué vídeos ve en la red o de qué páginas web visita también se puede sacar conocimiento. Ese conocimiento es lo que se llama "insight" que no es más que una forma de comprender o conocer más una cosa en función de un análisis de la información que se tiene. En el mundo del análisis de datos es el equivalente a inferir conocimiento a partir de datos en bruto.

Figura 1: La generación exacta o inexacta de insights o cómo me llegan anuncios sobre mi sexualidad

Se puede inferir conocimiento a partir de los datos obtenidos de forma puntual de una persona. También se puede inferir conocimiento distinto si en lugar de datos puntuales se cuenta con una serie de datos temporales de una sola persona. O se pueden generar esos insights porque los datos de una persona se parezcan a los de un grupo concreto, llamado cluster, ya que todos los insights que se tengan de ese cluster se le podrían aplicar a ese individuo en particular.

Insights de individuos

En cualquier caso, estos "insights" se generan a partir de datos recogidos en bruto, pero lo más importante que quiero que entendáis de esta larga introducción que voy a hacer a partir de ahora es que estos "insights" pueden ser ciertos totalmente o solo en un porcentaje de los casos. Os voy a poner unos ejemplos, y luego hablamos de la importancia de controlar su seguridad.

Antes de comenzar dejadme que os ponga en situación. A lo largo de estos puntos voy a explicaros en el lenguaje más didáctico posible cómo se pueden generar insights a partir de tres conjuntos de datos de diferente manera. En primer lugar cruzando un único dato de una persona que releva información. En segundo lugar generando conocimiento a partir de series temporales de datos de esa persona para entender su comportamiento. En tercer lugar a partir de datos dispersos de esa persona que se asemejan a grupos catalogados que ya se conocen.

Hay que tener en cuenta que cuando hablamos de inferir "insights" o generar conocimiento a partir de datos estamos hablando de generar atributos informativos más cercanos a la comprensión humana. Podríamos determinar que una persona tiene el insight de "nervioso" a partir de datos que se recogen del uso que hace de su smartphone o el insight de "embarazada" a partir las páginas que vista en la web y los búsquedas que realiza en la red. Y esta es información que puede acabar en una base de datos como un atributo más asociado a un individuo y del que deberemos preocuparnos doblemente. Por si ese insight es verdad, o por si ese insight es falso.

Generando insights de una persona

Supongamos que en mi smartphone se ha instalado una app que dentro del largo texto de los Terms & Conditions ha puesto que va a acceder a mi localización y va a compartir esos datos con terceros si quiero que la app funcione. Probablemente lo ponga en un lenguaje enrevesado, tal vez en inglés, y lejos de estar al alcance de todos los usuarios que puede que ni comprendan la totalidad de los términos utilizados en la redacción, ni las implicaciones de ellos puestos de esa forma en las frases del texto.

Ahora supongamos que cruza mi localización con un PoI (Punto de Interés), por ejemplo, de una cárcel. Algo que puede pasar perfectamente si visitas una cárcel, si estás en la cárcel, si acompañas a alguien a ella, si manipulas la información origen que sirve para calcular tu ubicación, o si pasas cerca de esa ubicación. En cada app instalada la generación del dato de ubicación, y en cada PoI, puede ser diferente el cálculo, la exactitud y la veracidad de esa información por muchos motivos que van desde el tipo de terminal móvil y la configuración del mismo, al tipo de cálculo que se haga para obtener el dato de de la ubicación. 

Pensemos por ejemplo que la persona que ha instalado esa app que captura nuestros datos como forma de pago por su uso, ha dado permisos de acceso a la ubicación GPS a dicha app. Y ahora pensemos en que esa persona tiene un móvil de cuatro años de antigüedad, con poca batería y con la red WiFi desactivada para que no se le gaste más batería de la necesaria cuando no hace uso de ninguna red inalámbrica. En ese caso, el cálculo de la ubicación GPS de ese terminal será bastante inexacto, ya que ,como se sabe, los terminales móviles usan todas las capacidades a su alcance para conocer la ubicación, y estas van desde el análisis de redes WiFi cercano, hasta los puntos de conexión a la red móvil y el acceso a Internet.

Si has utilizado un navegador como Google Maps, o Waze, o Apple Maps,  habrás notado que a veces tarda en "situarte bien en el mapa". Pues bien, haz una prueba muy sencilla. Desactiva la red WiFi y úsalo como navegador. Será bastante inexacto. Ahora activa la red WiFi - no hace falta que te conectes a ninguna red, basta con que esté activada la tarjeta WiFi para que el terminal pueda ir "espiando" todos los "Access Point" que hay a tu alcance y con qué potencia de señal se reciben -. Ahora la navegación será mucho más exacta.

Esta captura de datos de redes WiFi por parte de tu sistema operativo le ha permitido a Apple y Google tener las bases de datos más fiables de redes WiFi en el mundo, así como usarlas como forma de ubicar todos y cada uno de los terminales móviles que tienen con mayor exactitud aprovechando la ubicación física de puntos de acceso WiFi que no cambian.

Luego, cuando una app accede a la información de ubicación GPS en la que te encuentras, esta puede ser más o menos exacta en función de muchos parámetros. Y por tanto puede que estés o no ese Punto de Interés. Aún así, en el mundo en el que nos movemos hoy en día, ese dato se va a procesar y puede que se utilice para generar un insight sobre ti. Es decir, un insight sobre ti basado en una ubicación GPS que puede ser más o menos exacta.


Figura: 2 You are where you are

Esto es algo que, como os conté en la charla de "You Are Where You Are", puede pasar tranquilamente en cualquier momento. Un dato de una ubicación cruzado con un PoI que puede ser una cárcel. Ahora bien, ¿qué insight debería sacarse? Pues puede que ninguno, ya que puede ser un error. O puede que es que tenga amigos en la cárcel, y eso podría ser un insight interesante para alguien que pudiera comprar esta información para utilizarla. La interpretación de ese dato depende de la que dé el Data Scientist, y puede que sea correcta, pero también cabe la posibilidad de que sea errónea, o en algún caso inexacta.

Supongamos que eso se cruza con un PoI que tiene que ver, en lugar de con una cárcel, con un bar de una orientación sexual concreta. Por ejemplo un bar frecuentado y promocionado para personas de la comunidad LGTB, que ha sido marcado como tal en una base de datos de PoI de una ciudad. Y tú pasas por ahí con tu smartphone, o pasas cerca. Porque eres de esa comunidad, porque vas con un amigo/a, o por casualidad paseabas por allí cerca, te gustó, y entraste a tomar algo. Algo muy común que sucede muy habitualmente.

¿Debería esa app sacar un insight sobre mí, asociado a mi cuenta de Google, a mi número de teléfono o a mi dirección de e-mail? Pues tal vez no, porque el grado de exactitud no es del cien por cien ni en el cálculo de la ubicación GPS como ya he descrito al principio, ni en el motivo por el que se está en esa ubicación. Pero os aseguro que sí tiene una eficiencia un poco mayor ese insight en el resultado de descubrir gente que sea objetivo de una campaña de publicidad, probablemente se generará un insight.

Podríamos pensar que un insight de ese tipo no se puede generar, y menos guardar dentro de la base datos, pero tampoco será necesario si se puede utilizar en bruto sin calcular. Son lo que yo llamaba los datos Semi-Personales en la web. Se podría hacer un conjunto de bares objetivos y marcar a la gente que visita esos bares y enviarles publicidad vendida a terceros sin tener nunca almacenado un insight de ese tipo.

Esto mismo pasa con generación de insights basados en series de datos. Hasta el momento hablaba del caso puntual en el que se cruza un PoI de carácter muy marcado, es decir, una ubicación en el mapa en el que las personas que van conscientemente lo hacen por un motivo bastante claro. Supongamos que un día a una hora en un PoI de un estadio de fútbol hay un partido entre dos equipos. Si la persona va a ese estadio en el espacio de tiempo durante el cual se juega el partido, quiere decir un alto grado de probabilidad de que le gusta el fútbol, y se pueda generar ese insight.

Pero si en lugar del insight que se genera al cruzar un dato con un PoI de carácter muy marcado, utilizamos una serie de datos, la cosa cambia. Supongamos que tenemos que una persona está en la ubicación de la cárcel todas las semanas el mismo día en una franja de horas parecidas. O que una persona va a un hospital todas las semanas. O que una persona va a un PoI de un gimnasio la mayoría de los días o va a PoI de una fábrica de cerveza de lunes a viernes en horario laboral.

Como os podéis imaginar, esas series de datos dan insights bastante precisos de que una persona esté visitando a alguien en la cárcel, o de que esté en un tratamiento médico crónico, o de que sea una persona deportista o un trabajador de una empresa en concreto. Pero aún así no son cien por cien exactos. ¿Podríamos asegurar que esos insights son exactos para todos los que tengan esos patrones? La respuesta es no.

Podría ser que la persona que vaya a la cárcel periódicamente sea un trabajador de mantenimiento de una máquina de café que hay en la sala de espera y se ocupe de recargar de vasos, cucharillas y azucar en la máquina expendedora y tenga una ruta pre-establecida. O que la que visita el hospital sea una persona que cuida a otra persona mayor y le acompañe a la revisión de su enfermedad crónica. O que la que va al gimnasio simplemente sea para limpiar los baños. Y que el que visita la fábrica de cerveza sea una persona que trabaja en la oficina de paquetería que está en la planta de arriba del mismo edificio y que nada tiene que ver con la fábrica de cerveza.

Pero, seguramente, en la mayoría de los casos en los que se saquen insights sobre series de datos, estos serán acertados. Solo hay un porcentaje de personas a los que se asociará insights erróneos. Sin embargo con la mayoría acertarán, y podrán producir un incremento de negocio para la empresa que hace publicidad dirigida y cobra  por ventas. O para la empresa que vende un determinado producto a un grupo de personas que tengan varios insighs concretos.

Y aún nos queda el último caso del que quería hablaros. Supongamos ahora que se sabe que el grupo de personas que tiene una determinada app con un marcado insight visita determinados contenidos en Internet - que no son nada más que PoI virtuales en la red - , o que visita determinados PoI en el mundo físico tiene un determinado insight. Por ejemplo, que un Data Scientist define que las personas que tienen instalada la app de clasificaciones deportivas de Karate "KaCla" significa que implica el insigth de "le gustan las artes marciales". 

Es decir, a partir de un insight muy marcado generado por un dato muy concreto, hemos generado un cluster de navegación web con las páginas webs más visitadas por el colectivo de usuarios KaCla. Ahora podríamos inferir a partir de la navegación web que una persona tiene instalada esa app o que directamente tiene ese insight. Esto es algo muy común que se basa en una transitividad muy directa que usa en el mundo de los negocios para muchos fines.

Si yo analizo los clientes que más usan mi app y veo donde navegan o como se comportan, podría tener un cluster de navegación y comportamiento que defina el perfil de a qué personas de la sociedad le resulta más útil mi producto. Con esa info, podría ir a un proveedor de Data-Driven Advertising y pedirle que promocionara mi app entre gente que tuviera ese patrón de navegación.

En nuestro caso, supongamos que la gente que tiene "KaCla" instalada ve vídeos de Bruce Lee, y de campeonatos de karate en Youtube, y visita un número concreto de páginas con mayor asiduidad. Luego ya no necesitamos saber que tiene instalada la app KaCla para saber que "le gustan las artes marciales" si somos capaces de saber que direcciones en la red visita. Es más, como ya hemos dicho, sería un buen objetivo para nuestra aplicación "KaCla".

Supongamos ahora que una persona que tenga una app con un insight marcado, como sería Grindr de contactos para el colectivo gay. Y  de ellos se genera el cluster de PoI de navegación que tienen. Qué tipos de páginas web visitas, qué tipo de vídeos ven en Youtube, etcétera. Así, una empresa que tenga el cluster de navegación de esas apps con insights tan marcados, podrán saber, a partir del patrón de navegación de esas personas si tienen o no ese insight.

Piensa ahora en todos los patrones de navegación con clusters que se pueden sacar con todo tipo de apps o PoIs en la ciudad que existan. Por ejemplo, apps de cocina, de deporte, de religión, de pesca, de hacking, de sexo, de arte, de música, etc.... Si tienes todos los patrones de navegación de Internet, eres perfecto para ofrecer como servicio un grupo de personas que pertenece al cluster concreto que te interesa para promocionar tu app.

Exactitud de los insights

Pero volvamos a la pregunta. ¿Es esto siempre 100% exacto? Por supuesto que no. Habría que garantizar que ese patrón de búsqueda de vídeos en Youtube, ese patrón de búsqueda de URLs o ese patrón de búsqueda de términos en un buscador es correcto y está hecho por la misma persona. Y en segundo lugar, habría que asegurar que ese insight asociado a ese cluster de URLs es correcto, y no solo una mera coincidencia.

Supongamos que una persona visita 75 URLs que están incluidas en el cluster de navegación de personas que tienen y hacen uso de Grindr. La primera pregunta que hay que hacerse es si el cluster de direcciones ha sido hecho correctamente por el Data Scientist, ya que una dirección como www.gooogle.com seguramente está en todos los cluster posibles y debe ser eliminada de cualquier cluster. Es decir, la relevancia de las URLs que están en ese cluster es importante.

La segunda consideración que hay que tener presente es si el cluster de personas de KaCla tiene 1.000 URLs  o 150 URLs, o si el número de estas URLs en el total de navegación es grande o pequeño, lo que marcará lo marcado que es el insight que se puede generar. Un cluster muy marcado es aquel en el que con pocos datos implica directamente el insight, lo que significaría que las personas que tienen ese insight mantienen un comportamiento muy similar, mientras que si el cluster tiene muchas direcciones de navegación, es decir, un grado de dispersión alto, implicaría que hay múltiples comportamientos entre las personas con ese insight.

Esto es no es más que la generación de conjuntos definidos por un centro y un grado de dispersión que se utilizan en algoritmos de clasificación. Si tenemos clusters solapados porque son muy dispersos o comparten elementos, tendremos un mal conjunto de datos para generar el insight.

Al final, el trabajo de un buen Data Scientist es precisamente todo esto, generar insights correctos a partir de datos correctos, pero por desgracia no siempre se encuentran hechos de manera correcta. Esto, que podría ser un gran problema, normalmente no lo es, ya que si un insight aporta una mejora de un 5% en el objetivo de negocio, a pesar de haber generado de forma inexacta el insight para el 80% de los individuos, supondrá una mejora sobre no utilizar ningún insight. Esto fomenta que se utilicen en procesos de negocio algoritmos que generan insights que distan mucho de ser perfectos. No importa. Son mejores que nada.

Mi caso con Youtube

El ejemplo concreto que me motivó a escribir todo este artículo - perdón por la extensión - fue el que me llegara en un vídeo de Youtube el anuncio de una nueva app de contactos gay. Y no entendía por qué había generado ese anuncio para mí. Dejando atrás que pudiera ser que esté usando Análitica Predictiva sobre mi futuro, y dándome información que yo desconozco hoy en día, lo cierto es que me quedé a reflexionar sobre cuáles habrían sido los motivos por lo que me hubieran mostrado ese anuncio a mí.

Podría ser que el anunciante hubiera elegido clusters muy básico "Hombres entre 20 y 50 años en Madrid". Esto podría ser un motivo, pero seguro que no hubiera elegido yo ese cluster para gastar mi dinero en una campaña de anuncios. Si yo tuviera que elegir cómo gastar mi dinero en una campaña de promoción de mi app para contactos gay, probablemente hubiera buscado "Hombres *gay* de entre 20 y 50 años", por ejemplo.

Figura 3: Anuncio dirigido a mí en Youtube

Por supuesto, para generar ese cluster necesitas tener todos los insights. Necesitas saber que es hombre, entre 20 y 50 años y que es gay. Suponiendo que este fuera el objetivo que buscaba el anunciante, y teniendo claro que una empresa como Google no tiene un insight como el de "gay" entre la lista de los clusters objetivos que comercializa, ¿cómo podría obtenerse algo similar? Pues buscando el cluster de navegación de o visualización de vídeos que podrían indicar que una persona tuviera ese insight.

Como hemos visto antes, podríamos generar un cluster de navegación en Internet, búsquedas de vídeos de Youtube y búsqueda de términos en Internet a partir de una app con un insight muy marcado (nuestra app de contactos gay). A partir de esos datos, algún Data Scientist podría llegar a la conclusión, correcta o no, de que las personas "gay" en sus plataformas ven determinados conjuntos de vídeos en Internet. Unos concretos, o una mezcla de ellos.

Así, en mi caso, donde Mi Survivor de 6 años me quita el smartphone para ver vídeos en Youtube desde que tenía 3 o 4 años (ella quiere ser "Youtuber") para ver vídeos de juguetes, los contenidos que se visualizan en mi terminal son muy "mezclados". Por un lado vídeos de hacking, por otro vídeos musicales de Despistaos o 30 Seconds to Mars, y por otro vídeos de niños y niñas jugando. Lo que ha generado una mezcla de vídeos visualizados un tanto extraña en mi historial que Google seguro que tiene bien guardados en forma de insights de algún tipo. Algo como "videos de niños", "vídeos musicales de rock", o "vídeos de hacking".

Figura 4: Recomendaciones en mi canal Youtube

Y puede que alguna combinación de esos vídeos de Jared Leto mezclados con vídeos de juguetes en ruso - Mi Survivor ve los vídeos muchas veces sin volumen porque no le dejo que lo tenga alto y el idioma le da un poco igual; esto ha hecho que se haya hecho fan de la Pantera Rosa -, ha lanzado algún insight definido por algún Data Scientist que estaba diseñando la campaña de Data-Driven Advertising que ha llevado esta publicidad hasta mí. ¿Por qué? Pues porque alguien no ha tenido en cuenta que un terminal móvil a veces es compartido entre papaete y su nenita.

¿Y todo esto para qué?

Como os podéis imaginar, los Data Scientist profesionales hacen bien su trabajo y ponen todo el cuidado en la generación de esos insights. Espero que me perdonen por haber dejado de lado los términos matemáticos de la profesión para intentar llegar a más personas con el texto. Sin embargo, no siempre tenemos la garantía de que la generación de insight se haya hecho correctamente en todos los casos, y esto es muy importante porque nuestra información se guarda en insights - al igual que en datos en bruto - en muchos sitios de Internet.

También hay que tener en cuenta que, como hemos dicho con anterioridad, el impacto de una campaña con un insight regular es mucho mayor que el impacto de una campaña no basada en insights, lo que fomenta que se premie más los aciertos que se penalicen los falsos positivos, así que muchos sistemas están en funcionamiento aún sabiendo que no son ni de lejos perfectos.

Como hemos visto pueden suceder múltiples situaciones en las que un insight sea asociada a una persona sin ser correcta, como todos los caso que he citado. Os los resumo aquí:
- Inexactitud en la captura del dato en bruto: Como en los ejemplos de ubicación basada en GPS. 
- Inexactitud en la atribución de quién genera el dato en bruto: Como en el caso de navegación por Youtube en la que yo comparto el terminal con mi hija. 
- Inexactitud en la interpretación de los datos: Como en el caso del hombre que cambia el café en la máquina expendedora de la cárcel. 
- Inexactitud en la generación del cluster: Como en el ejemplo de tener un cluster de insights poco marcados o con datos poco relevantes. 
- Inexactitud en la asignación de un cluster a una persona: Como en el caso de asignar un insight a una persona cuando la relevancia de los datos del cluster es muy pequeña por culpa del caso anterior.
Estos son algunos problemas que puede tener la generación de insights pero el modelo funciona. O al menos lo hace desde el punto de vista de negocio y empresarial. Y por eso las empresas lo utilizan masivamente. Pero... ¿y desde el punto de vista personal? ¿Qué pasa si una persona recibe una asignación de un insight que no tiene?

Pues a día de hoy no nos preocupamos mucho, pero si resulta que esos insights se almacenaran en una base de datos no controlada, o en un país donde la regulación de datos no es tan severa y restrictiva como la que tenemos en la Unión Europea, y el día de mañana esa base de datos se hiciera pública, podría suponer un daño para la persona. Por supuesto, mientras que el insight esté mal generado, también debería sufrir las molestias de ser tratado por lo que no es en sistemas que hagan uso de esos insights erróneos, que pueden ir desde Contact Centers, hasta aplicaciones de negocio como las que dan las valoraciones crediticias, o las que predicen cual Minority Report cualquier comportamiento.

A día de hoy no tenemos mucha regulación sobre la generación de insights erróneos sobre personas, pero estoy convencido de que este es un debate que vamos a tener que acelerar pues a medida que los sistemas de Big Data e Inteligencia Artificial se meten en nuestras tecnologías, más situaciones peligrosas, ofensivas o discriminatorias vamos a enfrentarnos por simplemente haber calculado imprecisamente un insight.

Saludos Malignos!

Entrada destacada

Seis recomendaciones personales de libros de @0xWord para disfrutar y aprender

Este verano pude disfrutar de la lectura de un libro que me encantó. El libro de Factfulness que me había regalado mi compañera Beatriz Ce...

Entradas populares