jueves, marzo 09, 2017

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

Visto el funcionamiento del Rogue DirtyTooth Speaker, toca explicar un poco más en detalle cómo se puede construir este dispositivo de ataque. En nuestra Prueba de Concepto - que utilizamos para las demostraciones realizadas durante la charla de RootedCON 2017 -, usamos como BlueTooth Speaker el modelo Kilburn de la popular marca de amplificadores para guitarras eléctricas Marshall, por tratarse de un modelo portátil alimentado por baterías recargables y disponer de espacio adicional suficiente para el montaje de todos los elementos. Además de ser un bonito regalo que ningún CEO amante de la música iba a rechazar para tener en su despacho.

Figura 25: It is only Rock'n Roll.. but I like it (IV de V)

Para poder explicar el proceso, primero vamos a ver el funcionamiento del Rogue DirtyTooth Speaker, para luego centrarnos en el hardware montado dentro del sistema módulo a módulo.

Objetivos de funcionamiento del Rogue DirtyTooth Speaker

Como ya se ha explicado en las partes anteriores, el objetivo del ataque exige, en primer lugar emular el funcionamiento real del altavoz Kilburn, tanto en el manejo de sus controles e indicadores luminosos, como en sus características sonoras, bien por entrada directa de audio a través del minijack INPUT, como a través de la conexión Bluetooth mediante los perfiles A2DP y AVRCP, cuyo emparejamiento se realiza sin la necesidad de intercambiar un Token de pareado.

Figura 26: BlueTooth Speaker Marshall Killburn

Una vez establecida una conexión BlueTooth, se hace una verificación extra para ver si el dispositivo enlazado presenta una dirección MAC correspondiente al fabricante Apple, y en tal caso solicitar la apertura del perfil PBAP. Si la apertura es exitosa, se trata entonces de un terminal iPhone, al cual podremos solicitar la descarga mediante un proceso de "pull", tanto de la agenda principal de contactos, como de la relación de llamadas, realizadas, recibidas y perdidas. Todo ello normalizado mediante el formato de contactos VCARD 2.1.

Figura 27: Almacenamiento y envío de ficheros al backend desde la SD Card

Para no depender de la conectividad con el servidor de Backend al que se le van a enviar todos los contactos, las agendas descargadas se almacenan en una tarjeta SD incluida dentro del Rogue DirtyTooth Speaker, para posteriormente enviarlas al servidor en Internet mediante una conexión GSM/GPRS que también se va a incorporar dentro del altavoz.


Figura 28: Esquema general de los componentes del Rogue DirtyTooth Speaker

Todo este proceso se debe realizar sin permitir que el usuario perciba ningún tipo de funcionamiento diferente al original de altavoz Kilburn, incluyendo su elevada calidad de audio, por lo que la elección del hardware y el código que debe implementar el Rogue DirtyTooth Speaker debe ser medido con estos conceptos de calidad.

Hardware empleado en la PoC de nuestro Rogue DirtyTooth Speaker

La primera de las elecciones a realizar es la del módulo BlueTooth. Se necesita un módulo de BlueTooth que permitan los perfiles de A2DP (Advanced Audio Distribution Profile), AVRCP (Audio/Video Remote Control Profile) o HSP (HeadSet Profile), pero que tengan la implementación también del PBAP (PhoneBook Access Profile), lo que reduce bastante el número de posibilidades.

Módulo BlueTooth

Las implementaciones en hardware del perfil PBAP (Phone Book Access Profile), se limitan a un reducido número de fabricantes, ya que este perfil suele estar asociado al manejo completo del stack BlueTooth, con la consiguiente complejidad de su firmware.

De los los poco fabricantes que comercializan módulos hardware de propósito general que implementan el perfil BlueTooth PBAP, se pueden citar:
• La serie LM740 de LM Technologies
• La serie Bluetopia de Texas Instruments
• La serie Gigablue de Silicon Labs
• La serie BC127 de Blue Creation
De todos ellos, es el BC127 de Blue Creation el más accesible y mejor documentado, al haber sido el empleado por el conocido fabrícate de módulos electrónicos Sparkfun, en dos de sus tarjetas de desarrollo para audio BlueTooth. Originalmente el módulo BC127 está precargado con una versión de firmware Melody Audio v5, el cual es necesario actualizar a una versión v6 para utilizar las características avanzadas del perfil PBAP.

Figura 29: Módulo BlueTooth BC127 de Blue Creation

Como requisito adicional, cumple con la especificación v2.1 del protocolo BlueTooth, soportando la opción de emparejamiento de dispositivos sin necesidad de utilizar un Token de pareado. Posee salidas y entradas de audio analógico (diferencial) y digital, junto con un pequeño número de entradas y salidas digitales (GPIO), que acompañan a la interface Serial TTL como vía principal de comunicación.

Modem GSM/GPRS

La conexión con Internet se realiza mediante un módulo genérico GSM/GPRS con chip SIMCOM800C, por ser uno de los más populares gracias a su accesibilidad y facilidad de utilización.

Figura 30: Módulo GSM/GPRS SIMCOM800C

Igualmente cuenta como medio principal de comunicación una interface Serial TTL. Cabe destacar que el slot para la tarjeta SIM es de tipo “micro SIM”, así que será necesario conseguir una tarjeta de estas características para conseguir la comunicación a Internet mediante GPRS.

Figura 31: Incorpora una tarjeta Micro SIM para su conexión a Internet

Módulo de Debug Remoto

Se ha sumado un tercer dispositivo que permite establecer una conexión remota de forma opcional, para poder supervisar el funcionamiento en tiempo real, establecer variables de configuración e interactuar mediante una serie de comandos disponibles.

Figura 32: Módulo de Debug Remoto que permite acceso serie sobre BlueTooth

Se trata de un módulo BlueTooth HC-05, en cual mediante el perfil SPP (Serial Port Profile) permite extender su interface de comunicación Serial TTL. Realizando una conexión serie sobre él desde el terminal, se implementan las funciones que nos permiten, en caso de necesitarlo, monitorizar el estado de cada uno de los otros módulos.

Figura 33: Una vez conectado a la conexión BlueTooth se abre una conexión serie y se pueden lanzar los comandos de monitorización de cada módulo o acceder al contenido de la memoria SD.

Esto es muy cómodo, porque desde ella podemos saber el estado del módulo BlueTooth, acceder al contenido de la SD o saber si hay conectividad GSM/GPRS.

Figura 34: Comando mstat ejecutado en el módulo Debug da info de cómo está la conexión GSM/GRPS

Es un módulo de especial utilidad que emite la señal BlueTooth. Esa conexión de monitorización remota se podría controlar para que no estuviera siempre activa y que solo se activara ese perfil, por ejemplo, cuando no hubiera conexión GSM/GPRS o cuando un Latch estuviera abierto. Así, el dueño del Rogue DirtyTooth Speaker podría controlar la difusión de este perfil BlueTooth SPP.

Core del módulo Hardware

El núcleo central del procesamiento por hardware se implementa sobre una tarjeta de desarrollo Teensy v3.2, la cual dispone de una CPU 32Bits ARM Cortex-M4 a 96Mhz con 64Kbytes de memoria RAM y 256 Kbytes de almacenamiento en memoria Flash. Este es un módulo muy popular que ya se ha utilizado en otros ataques a iOS en el pasado.

Figura 35: Módulo Teensy v3.2

Entre sus principales características cada resalar que dispone de tres UARTs lo que permite establecer por hardware, tres conexiones Serial TTL simultáneas, junto a una interface SPI que facilita la conexión de una tarjeta de almacenamiento SDCard. Para la programación de su firmware se puede utilizar el framework Teensyduino, el cual permite utilizar de manera prácticamente directa la colección de librerías Open Source del proyecto Arduino.

Integración en el altavoz original

La parte más compleja de este proyecto final consiste en anular la señal BlueTooth original y sustituirla por este módulo nuevo diseñado por nosotros. El no disponer de los planos originales obliga a hacer análisis de señales para ver cómo funciona en cada uno de los altavoces que se quieran utilizar.

Figura 36: Módulo BlueTooth original en el altavoz

En nuestro caso, el módulo BlueTooth implementado por el altavoz Killburn de Marshall se trata de un BTM8630, pero acompañado de electrónica adicional, entre la que destaca un doble amplificador operacional JRC NJM4560M.

Figura 37: Circuito final construido para reemplazar al circuito original

Para poder hacer la sustitución del módulo original por el nuestro, fue necesario crear un circuito similar que cumpliera los requisitos de diseño que tenía el altavoz Killburn de Marshall. El trabajo es un poco más complejo que sacar un módulo y poner otro, y hubo que hacer un poco de ingeniería inversa. Os publicaremos en un documento aparte de cómo se diseñó ese circuito, pero en cada altavoz el trabajo sería diferente.

Una vez reemplazado, ya tendríamos nuestro Rogue DirtyTooth Speaker listo para regalar a la persona adecuada.

Saludos Malignos!

*********************************************************************************
- Dirtytooh hack site
- Libro de Hacking iOS: iPhone & iPad [2ª Edición]
- Conferencia DirtyTooth Hack en OpenExpo 2017
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (I de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (II de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (III de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (IV de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (V de V)
- DirtyTooth Hack: Reemplazar el módulo Bluetooth en Marshall Killburn
- DirtyTooth Hack: Seminario en Vídeo
- DirtyTooth para Raspberry Pi
*********************************************************************************

1 comentario: