lunes, marzo 06, 2017

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

Tras lo escrito en la primera parte de esta serie dedicada al DirtyTooth Hack, podríamos decir que de momento hemos visto que hay varias cosas que un atacante, utilizando un dispositivo BlueTooth malicioso, podría usar en contra de un usuario de iPhone, como son: 1) El poner la conexión a un simple clic sin necesidad de utilizar Token de pareado, y 2) El poder usar el icono que se quiera que en iPhone no se ven. Son simples detalles de usabilidad que unidos a los siguientes trucos van a formar un cocktail explosivo.

Figura 10: It´s only rock'n roll ... but I like it (II de V)

El siguiente truco que se utiliza en el DirtyTooth tiene que ver con las opciones por defecto de iOS, y por tanto de iPhone, para acceder a la agenda de contactos.

Permisos de acceso a la agenda de contactos para apps

Si tienes un iPhone y has instalado alguna vez una app que desee acceder a tu agenda de contactos, como por ejemplo WhatsApp, habrás visto que lo primero que hace el sistema operativo es informarte de ello y pedir tu aprobación.

Figura 11: Apps necesitan permisos para acceder a la agenda

Esto, además, es configurable con una opción dentro de los Ajustes del sistema, por lo que en todo momento se puede quitar o conceder el permiso a la app. Es una de las ventajas de control que iOS ha tenido desde hace mucho tiempo a la hora de gestionar tu privacidad con las apps.

Figura 12: Lista de permisos de la app de WhatsApp

Por desgracia, esta forma de gestionar los permisos de acceso a la agenda de contactos para las apps no es consistente con la forma en la que se gestionan los permisos de acceso en los dispositivos BlueTooth.

Permisos de acceso a la agenda en Android

Si en algún momento, un dispositivo BlueTooth utiliza uno de los perfiles que necesita tener acceso a la agenda, es decir, un PBAP (PhoneBook Access Profile) o HFP (Hand-Free Profile), el sistema operativo de Android genera una alerta de seguridad en la que el usuario debe, explícitamente, conceder dicho permiso de acceso.

Figura 13: Alerta de seguridad de acceso a agenda por un dispositivo BlueTooth en Android

Este comportamiento de Android, similar al que utiliza iOS para las apps, no es el mismo que se utiliza en iOS para el BlueTooth, donde en ningún momento se genera esa pregunta explícita. Es decir, el DirtyTooth Trick 3 que vamos a utilizar es que no hay una alerta de seguridad cuando un un perfil BlueTooth quiere acceder a tu agenda de contactos, y eso es muy malo.

Configuración por defecto de Sincronización de Contactos en iOS

Esto es aún peor, ya que el problema no es solo que no avise, sino que además, la configuración por defecto que existe para todos los dispositivos que utilicen un perfil BlueTooth que quiera acceder a la agenda es la de compartir los contactos con el dispositivo BlueTooth. Es decir, por usabilidad, el sistema está entregando a cualquier dispositivo BlueTooth que lo solicite la agenda completa de tus contactos, además del historial de llamadas realizadas recientemente. 

Esto se puede comprobar yéndose a las opciones de un dispositivo BlueTooth con un perfil que HFP o PBAP para ver cómo el selector de permitir o no la sincronización de contactos está siempre activo. Este pequeño descubrimiento, que publicamos hace varios meses en Seguridad Apple, fue lo que motivó el estudio completo de DirtyTooth que estáis viendo en estos artículos.

Figura 14: Por defecto, el sistema iOS comparte todos tus contactos con cualquier dispositivo
BlueTooth con que te hayas conectado y lo requiera

Luego el DirtyTooth Trick 4 es que, por defecto, iOS entrega todos tus contactos a cualquier dispositivo BlueTooth al que te conectes que tenga un perfil de HFP, PBAP o similar y que requiera acceso a tu agenda. Pero esto, aún va a ser peor.

Comportamiento de Android en cambio de perfil BlueTooth

Un dispositivo BlueTooth conectado a un sistema operativo puede cambiar el perfil BlueTooth. Puede ser que el perfil BlueTooth al que te conectes sea inicialmente un A2DP y luego decida ser un PBAP. Esto es algo que se puede hacer fácilmente, y hay que proteger al usuario frente a estos comportamientos.

En el caso de Android, el comportamiento es el que veis en este pequeño vídeo. Si un dispositivo con un perfil BlueTooth de tipo A2DP trata de convertirse a un perfil de tipo PBAP, algo que se puede hacer, el sistema Android le deja, pero le pide el correspondiente permiso al usuario.

Figura 15: Comportamiento de Android ante un cambio de perfil Bluetooth de A2DP a PBAP

Éste parece el comportamiento más correcto. Sería el equivalente a que una app ha decidido, en un momento dado acceder a la agenda de contactos y el usuario no le ha dado ningún permiso aún, así que se lo solicita. En iPhone esto no funciona así con el cambio de perfil BlueTooth.

Comportamiento de iOS en cambio de perfil BlueTooth

Sorprendentemente, una nueva decisión de usabilidad parece que ha marcado este comportamiento, y en iOS, si un dispositivo BlueTooth conectado, por ejemplo un altavoz, cambia su perfil BlueTooth de tipo A2DP a PBAP, el sistema no avisa al usuario. Solo, como se puede ver en este vídeo, se podría ver en las opciones del dispositivo BlueTooth si se entra a revisar.... algo altamente improbable en un entorno normal.

Figura 16: Comportamiento de iPhone ante un cambio de perfil BlueTooth de A2DP a PBAP

Este comportamiento es muy peligroso, pues un usuario puede conectarse a un dispositivo BlueTooth confiado, y en un determinado momento el dispositivo puede cambiar a otro. Si no se está revisando, el usuario nunca será consciente de esto. Este es el DirtyTooth Trick 5, la posibilidad de cambiar de perfil BlueTooth en iOS sin que el usuario reciba ninguna información.

Ahora todo junto y tienes el cocktail explosivo

Repasando lo visto hasta aquí, nos queda que en DirtyTooth podemos sumar y combinar un buen número de tricks para atacar usuarios de iPhone con dispositivos BlueTooth maliciosos, como son los siguientes:
1) Publicar un dispositivo BlueTooth sin Token de pareo
2) Publicar un dispositivo con un icono de audio tranquilizador
2*) Ninguna información en la lista de dispositivos alcanzables
3) No se le va a requerir permiso de acceso a los contactos
4) Cambiar el perfil de audio para acceder a los contactos
5) El cambio se hace y se concede acceso a la agenda sin preguntar al usuario
Llegado a este punto, el caldo de cultivo es perfecto para hacer uso de nuestro DirtyTooth Hack por medio de un Rogue DirtyTooth Speaker. En la siguiente parte más información.

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
*********************************************************************************

No hay comentarios:

Publicar un comentario