domingo, marzo 05, 2017

DirtyTooth Hack: It´s only Rock'n Roll but I like it (I de V)

Hace ya un tiempo, participé en unas jornadas en Barcelona con una conferencia en la que recopilé todos los hacks conocidos hasta ese momento para atacar terminales iPhone. La llamé Protege tu iPhone: Es tan (IN)Seguro como tu Windows y generó mucho ruido. El título y la charla en sí, venían motivados por la ideas de que, por muy seguro que fuera el sistema de cifrado que iPhone utiliza para almacenar los datos en él, si el terminal estaba encendido y conectado con algo - por ejemplo un Windows -, existían muchas formas posibles de atacarlo.

Figura 1: It's only Rock'n Roll... but I like it (I/V)

El número de sitios por los que se puede atacar la vida digital de un usuario de iPhone va desde el acceso físico con el terminal apagado - con ataques como el de NAND Mirroring -, ataques utilizando Siri y el Control de Voz, ataques para saltarse el passcode, formas de meterle un troyano a iPhone, ataques a los sistemas de comunicación GPRS, 2G, EGGE, 3G, ataques a las conexiones WiFi, ataques de man in the middle por IPv6, ataques de Juice Jacking por el conector, explotación de bugs para hacer Jailbreak o simplemente conseguir vulnerar la seguridad de apps que el usuario libremente se ha instalado.

Figura 2: Conferencia "Tu iPhone es tan (in)seguro como tu Windows"

Tantas formas de atacar un iPhone existen como puntos de contactos en los que se pueda manipular el comportamiento de uno de los elementos. Fue por eso que escribimos uno de los libros de más éxito de 0xWord titulado "Hacking iOS: iPhone & iPad" con una lista de todos los ataques recopilados y clasificados por niveles de contacto con el dispositivo. Es decir desde ataques con contacto físico hasta ataques remotos vía conexiones móviles o WiFi, usando JavaScript Botnets.

Figura 3: Libro de 0xWord sobre Hacking iOS: iPhone & iPad

En el caso de DrityTooth, es una vez más un ejemplo similar a ese. Es una forma de atacar un sistema iPhone utilizando una de las conexiones más típicas para los usuarios del mismo. Las conexiones BlueTooth para conectarse a algo tan común como unos altavoces inalámbricos, como podrían ser los nuevos AirPods o como cualquiera de los muchos que se regalan en conferencias para que la gente los disfrute.

Estos altavoces son un dispositivo magnífico de marketing, ya que las personas los pueden poner en cualquier lugar de su casa, como por ejemplo el cuarto de aseo para escuchar música mientras uno se da un baño relajante, o en el despacho para disfrutar algunos minutos de relax. Además, son un dispositivo portable muy cómodo que todo el mundo se puede llevar de viaje en la maleta, para llevarse la música a cualquier lugar y poder compartirla con amigos. Yo tengo media docena de estos altavoces que me han regalado en diferentes conferencias.

Figura 4: BlueTooth Speaker de la marca Marshall

El funcionamiento de estos dispositivos es bastante sencillo, se encienden y se publican automáticamente en el medio como Bluetooth Speakers. Cualquier iPhone, Android, Windows o macOS solo tiene que explorar el espectro BlueTooth para descubrirlos y hacer clic en ellos para conectarse. Para extremar la sencillez, se puede hasta evitar solicitar ni un Token de pareado. A partir de ese momento, la música que emita el iPhone será enviada vía BlueTooth al altavoz para que la reproduzca. Y este funcionamiento es el que abre las posibilidades al DirtityTooth Hack.

El Token de pareado en las conexiones BlueTooth

Para ir entendiendo en detalle el funcionamiento del DirtyTooth Hack, hay que entender algunos elementos que lo facilitan por encima de todo. En primer lugar la no existencia de un esquema de pareado con Token para acceder a estos altavoces BlueTooth

El valor positivo del Token de pareado está en que permite a un usuario que no se conecte, sin darse cuenta, a un dispositivo que no sea el suyo. Imaginemos el caso en el que existan dos dispositivos BlueTooth con el mismo nombre. La primera conexión que se haga será con uno de ellos, y es necesario tener una verificación visual de que es el dispositivo correcto. Tal vez a priori, cuando estamos hablando de un altavoz no parezcan peligrosas las consecuencias de conectarse a un dispositivo que no sea el correcto, pero si estamos hablando de un dispositivo BlueTooth como un manos libres Parrot que permite acceder a la agenda de contactos y hacer llamadas en tu nombre, tal vez la cosa pueda ser más peligrosa. 

Figura 5: Con el Token de pareado se exige una verificación visual del dispostivo

Peor aún, si el dispositivo puede acceder a toda la información de tus contactos, reescribir tu agenda o acceder al contenido de tus mensajes. En esos esquemas tal vez la severidad del riesgo sea mayor. Aún así, es cierto que exigir un Token de pareado en todos los esquemas posibles puede que no sea lo más usable, por lo que a partir del estándar de BlueTooth 2.1 del año 2007 se deja elegir a los elementos si quieren establecer un esquema de pareado con Token sí o no, esperando que los creadores de tecnología sean lo suficientemente sensatos como saber en qué entornos existe un riesgo y se debe exigir y en qué entornos no existe ese riesgo y debe primar la usabilidad.

Figura 6: Fechas de aparición de las distintas versiones del estándar BlueTooth

En iPhone, por supuesto, existe la posibilidad de estableces este tipo de conexiones BlueTooth sin necesidad de utilizar el Token de pareado, y deja a elección del dispositivo si se debe o no solicitar el Token o no a cada fabricante. Esto quiere decir qué, si el dispositivo no exige el Token de pareado, iPhone no se lo va a exigir al usuario. Una opción de usabilidad que puede llevar a algún usuario a sufrir alguno de los riesgos por los que se pensó en utilizar el Token si existen dispositivos maliciosos en el espectro. Esto nos lleva al primer truco que se puede usar "DirtyTooth Trick 1 - Conexiones BlueTooth sin tokens de pareado".

Los perfiles BlueTooth y sus iconos

La tecnología BlueTooth permite realizar conexiones inalámbricas en entornos de proximidad para conectar dispositivos físicos. Dispositivos que pueden ser utilizados para muchas cosas diversas, como el caso de un altavoz, un teclado, un ratón, el manos libres del coche, etcétera. Para ello, sobre el protocolo BluetTooth se definen estándares para hacer "cosas". Son los llamados BlueTooth Profiles. Estos perfiles definen cuál es la función y la interacción que pueden tener dos elementos que implementen cada uno de ellos.

En el caso de los BlueTooth Profiles para audio tenemos diversos, con características diferentes, como son:
- A2DP: Advanced audio Distribution Profile
- AVRCP: Audio-Video Remote Control Profile
- HSP: HeadSet Profile
- HFP:  Hand-Free Profile
Cada uno de ellos implementa un estándar, que deja utilizar más o menos funciones. Por ejemplo subir o bajar el volumen, avanzar canciones, configurar equalizadores, etcétera. Por supuesto, cuando uno de estos dispositivos está anunciando un BlueTooth Profile de estas características en la red, el icono que se ve en los sistemas operativos Windows o macOS es identificativo de que es un perfil de estas características.

Figura 7: Iconos mostrados en el explorador BlueTooth de macOS

En iPhone, como se puede ver, no es así antes de conectarte, así que no hay información visual que permita saber al usuario si se va a conectar a un determinado tipo de perfil o si se emite un icono concreto. Si a esto le sumamos el DirtyTooth Trick 1, la elección puede ser inmediata. Es decir, que nada más aceptar la conexión con el dispositivo estén pasando cosas. Así que el DirtyTooth Trick 2 permite aprovecharse de que no hay información visual ni escrita del BlueTooth Profile que se está ofreciendo desde un determinado dispositivo.

Figura 8: Dispositivos BlueTooth disponibles en el espectro. Solo aparece el nombre en iPhone.

Eso sí, una vez realizada la conexión, en los dispositivos iPhone se puede ver un icono en la esquina superior derecha que muestra información del perfil BluetTooth del dispositivo al que se está conectando.

Figura 9: Icono de BlueTooth Speaker y opciones del mismo en iOS

Además, si es un dispositivo con un BlueTooth Profile de audio, es decir, alguno de los que se han mencionado previamente, se puede ver cómo en las opciones de Información que tenemos en iOS se muestran solo las posibilidades de Desconectar y Omitir el dispositivo. Esto implica que el usuario debe ser consciente de que, por ejemplo, este dispositivo no está accediendo a su agenda de contactos.... por ahora.

BlueTooth Profiles que sí que tocan tus datos y hacen cosas en tu iPhone

Lógicamente, existe una buena cantidad de otros perfiles BlueTooth que, para enriquecer la experiencia del usuario, comparten datos y hacen cosas en el terminal iPhone. Por ejemplo, es posible marcar un número de teléfono desde el sistema de manos libres de tu auto porque el terminal iPhone ha compartido con él la agenda. En otros sistemas se pueden incluso mandar mensajes y, por supuesto, realizar llamadas.

Para eso, la industria ha ido definiendo algunos perfiles BlueTooth con un mayor número de funciones, algunos de ellos son los siguientes:
- PBAP: Phone-Book Access Profile
- PAN: Personal Area Network
- HID: Human Interface Device
- MAP: Message Access Profile
Existen muchos más, y cada día la industria innova creando nuevos estándares al respecto. En el caso de iPhone se van incorporando nuevos versión tras versión. En la siguiente tabla tenéis una lista de los que se soportan en los diferentes dispositivos.

Figura 10: Perfiles Bluetooth disponibles en los dispositivos iOS

Como se puede ver, se soportan perfiles BlueTooth para dispositivos de audio y para sistemas de manos libres con acceso a la agenda de contactos en todos los dispositivos, lo que nos va a dar mucho juego en las siguientes partes de este artículo.

No hay comentarios:

Entrada destacada

Tu Latch "Hack Your Innovation Contest": Haz un PoC & Hack por 1.000 €

El pasado Telefónica Innovation Day 2024 lanzamos oficialmente el " Tu Latch Hack Your Innovation Contest " en el que repartimos ...

Entradas populares