Sniffar el emparejamiento de dispositivos Bluetooth

Tabla de contenidos

Bluetooth y el emparejamiento de dispositivos
Sniffar el emparejamiento de dispositivos Bluetooth
Romper el emparejamiento de dispositivos Bluetooth

Bluetooth y el emparejamiento de dispositivos


El emparejamiento de dispositivos en Bluetooth se entiende como una relación de confianza. El objetivo es que dos dispositivos Bluetooth se puedan comunicar si están emparejados, si hay una relación de confianza entre los mismos.

La primera vez que dos dispositivos intentan comunicarse, tiene lugar el procedimiento denominado emparejamiento que permite crear una clave de enlace común de una forma segura. Este procedimiento requiere que el usuario de cada dispositivo introduzca un código de seguridad Bluetooth (código PIN, Personal Identification Number) de hasta 16 bytes de longitud que debe ser el mismo en los dos casos.

   


A partir del código PIN, se obtiene la clave de enlace común a través del siguiente algoritmo:

1) Se genera una clave de inicialización común Kinit de 128 bits usando el algoritmo E22 a partir del código de seguridad Bluetooth (PIN), la longitud del mismo, la dirección BD_ADDR de 48 bits y un número aleatorio IN_RAND.


2) Se genera la clave de enlace Kab usando el algoritmo E21. Los dispositivos usan la clave de inicialización Kinit para intercambiar dos nuevos números aleatorios, conocidos como LK_RAND A y LK_RAND B. Cada dispositivo genera un número aleatorio y se lo envía al otro dispositivo previamente XOReado bit a bit con Kinit. Dado que ambos dispositivos conocen Kinit, cada dispositivo conoce ambas LK_RAND. A partir de la dirección BD_ADDR y LK_RAND, se genera la clave de enlace Kab.



3) Una vez que los dispositivos emparejados disponen de la clave de enlace Kab, utilizan esta clave común para autenticarse automáticamente en las sucesivas conexiones.


En realidad ...


Es posible crackear el algoritmo de emparejamiento de dispositivos por fuerza bruta. En 2005 Yaniv Shaked y Avishai Wool publicaron Cracking the Bluetooth PIN, un procedimiento criptológico teórico para crackear el algoritmo del emparejamiento Bluetooth. Básicamente, consiste en ir probando entradas por fuerza bruta hasta que las claves temporales generadas durante el desarrollo del algoritmo coincidan con aquellas que se han capturado sniffando el emparejamiento de dos dispositivos.

En principio, se necesitan los siguientes requerimientos de entrada del algoritmo:

A lo largo del desarrollo del algoritmo de emparejamiento, los dispositivos participantes se intercambian ciertas claves temporales que un atacante puede capturar si es capaz de sniffar el tráfico de la piconet a la que pertenecen dichos dispositivos. Comparando dichas claves temporales con las obtenidas crackeando el algoritmo por fuerza bruta (probando sucesivos códigos PIN) es posible llegar a obtener el PIN y la clave de enlace que comparten los dispositivos emparejados.

En 2006, Thierry Zoller desarrolla la primera implementación práctica, BTCrack, una herramienta para Windows que permite crackear por fuerza bruta la clave de enlace a partir de las claves temporales capturadas sniffando el emparejamiento de dos dispositivos Bluetooth. Su tiempo de respuesta para un P4 3.6GHz es de 0.25 secs en crackear un PIN de 4 dígitos y 42 mins en crackear un PIN de 8 dígitos.

También en 2006, David Hulton publica btpincrack para el proyecto OpenCiphers en Linux.

En 2007, Thierry Zoller en colaboración con David Hulton anuncia BTCrack con soporte para FPGA. Los tiempos de respuesta disminuyen considerablemente, 0.001 secs en crackear un PIN de 4 dígitos y 10 secs en crackear un PIN de 8 dígitos.

En 2009, Eric Sesterhen y Thierry Zoller liberan el código fuente de la versión OSS de BTCrack para Linux.

Sniffar el emparejamiento de dispositivos Bluetooth


Como ya demostré, es posible construir tu propio sniffer Bluetooth a partir de un adaptador USB Bluetooth convencional. Entre todas las cosas que podrías hacer con un sniffer, resulta interesante poder sniffar durante el emparejamiento de dos dispositivos Bluetooth y obtener la clave de enlace que comparten.




En primer lugar, necesitamos haber construido nuestro propio sniffer Bluetooth.




A continuación debemos detectar dos dispositivos cualesquiera que estén a punto de iniciar el proceso de emparejamiento.




Andrea Bittau publicó hace tiempo la herramienta frontline
que permite enviar comandos a un sniffer hardware. Sin embargo, en su lugar utilizaré una versión modificada por drgr33n y publicada bajo una suite de auditoría de seguridad Bluetooth llamada Blue Smash.




Empezamos a sniffar...




En este punto, los dispositivos Bluetooth remotos pueden comenzar el proceso de emparejamiento, los paquetes generados serán capturados por el sniffer.









Entre todos los paquetes capturados, podemos encontrar las claves temporales creadas durante el proceso de emparejamiento para generar la clave de enlace y, por consiguiente, llegar a obtener la misma.


Podemos utilizar el Bluetooth Pin Cracking Core de OpenCiphers o el BTCrack PIN Cracker de Thierry Zoller para crackear la clave de enlace Bluetooth a partir de las claves temporales capturadas.




Es fácil comprobar si la clave crackeada corresponde con la clave de enlace, Kab, que realmente comparten los dispositivos remotos.




Una vez que la clave de enlace Bluetooth está en nuestra posesión, podemos llevar a cabo el ataque BD_ADDR spoofing y utilizar esta clave para acceder a perfiles que requieran autorización/autenticación en cualquiera de los dispositivos, como por ejemplo el perfil de OBEX FTP para Transferencia de Archivos, que permite enviar y descargar archivos del teléfono móvil así como listar directorios.






Y el perfil de Acceso Telefónico a Redes, que permite enviar comandos AT al teléfono móvil.






Con esto se ha conseguido romper definitivamente la seguridad en Bluetooth. No obstante, resulta casi imposible reproducir este ataque en el mundo real. Necesitaríamos encontrar dos dispositivos en un estado anterior al proceso de emparejamiento y saber de antemano cual de los dos juega el papel de maestro en la piconet. Es una Prueba de Concepto que únicamente puede ser reproducida en un entorno de laboratorio, con todos los dispositivos bajo nuestro control.


Romper el emparejamiento de dispositivos Bluetooth


Únicamente es posible crackear la clave de enlace compartida si el atacante puede sniffar el emparejamiento de dos dispositivos Bluetooth con éxito. Esto significa que no es posible obtener la clave de enlace si los dispositivos ya se encuentran emparejados previamente, ya que seguirán el esquema Desafío-Respuesta del proceso de autenticación.

Si nos encontramos con este escenario, sería interesante poder romper la relación de emparejamiento entre ambos dispositivo y forzar el re-emparejamiento de los mismos. A partir de ese momento, tendremos ocasión de sniffar y crackear la nueva clave de enlace.


El ataque de re-emparejamiento de Shaked y Wool, la teoría.


En 2005 Yaniv Shaked y Avishai Wool publicaron Cracking the Bluetooth PIN, un procedimiento criptológico teórico para crackear el algoritmo del emparejamiento Bluetooth. Cito textualmente:

5.2 Attack details

Assume that two Bluetooth devices that have already been paired before now intend to establish communication again. This means that they don't need to create the link key Kab again, since they have already created and stored it before. They proceed directly to the Authentication phase (...). We describe three different methods that can be used to force the devices to repeat the pairing process. The efficiency of each method depends on the implementation of the Bluetooth core in the device under attack. These methods appear in order of efficiency:

  1. Since the devices skipped the pairing process and proceeded directly to the Authentication phase, the master device sends the slave an AU_RAND message, and expects the SRES message in return. Note that Bluetooth specifications allow a Bluetooth device to forget a link key. In such a case, the slave sends an LMP_not_accepted message in return, to let the master know it has forgotten the link key (...). Therefore, after the master device has sent the AU_RAND message to the slave, the attacker injects a LMP_not_accepted message toward the master. The master will be convinced that the slave has lost the link key and pairing will be restarted (...). Restarting the pairing procedure causes the master to discard the link key (...). This assures pairing must be done before devices can authenticate again.

  2. At the beginning of the Authentication phase, the master device is supposed to send the AU_RAND to the slave. If before doing so, the attacker injects a IN_RAND message toward the slave, the slave device will be convinced the master has lost the link key and pairing is restarted. This will cause the connection establishment to restart.

  3. During the Authentication phase, the master device sends the slave an AU_RAND message, and expects a SRES message in return. If, after the master has sent the AU_RAND message, an attacker injects a random SRES message toward the master, this will cause the Authentication phase to restart, and repeated attempts will be made (...). At some point, after a certain number of failed authentication attempts, the master device is expected to declare that the authentication procedure has failed (implementation dependent) and initiate pairing (...).

The three methods described above cause one of the devices to discard its link key. This assures the pairing process will occur during the next connection establishment, so the attacker will be able to eavesdrop on the entire process, and use the method described in Section 3 to crack the PIN.


Suplantar una clave de enlace errónea, la práctica.


El ataque de Shaked y Wool parece inteligente, pero el método 3 se puede explicar de un modo más simple: Sólo hace falta suplantar la dirección BD_ADDR de uno de los dispositivos emparejados y proporcionar una clave de enlace errónea a la hora de autenticarse en un perfil Bluetooth del otro dispositivo emparejado. La relación de emparejamiento se romperá por razones de seguridad y la clave de enlace almacenada será eliminada.

Veámos un ejemplo:

Supongamos que descubrimos dos dispositivos Bluetooth, un teléfono móvil y una PDA. Nos gustaría obtener la clave de enlace secreta compartida, pero ambos dispositivos ya se encuentran emparejados.







Si uno de los dispositivos establece una conexión con el otro, seguirán el esquema de Desafío-Respuesta que verifica el proceso de autenticación.

Para ser capaces de romper el emparejamiento, en primer lugar tenemos que suplantar la dirección BD_ADDR de uno de los dispositivos, por ejemplo, el teléfono móvil.




A continuación, hace falta instalar una clave de enlace errónea en el sistema.




De ahora en adelante, si intentamos conectarnos a cualquier Perfil Bluetooth que requiera autenticación (por ejemplo, el Perfil de Transferencia de Archivos) en el otro dispositivo, la PDA, proporcionaremos la clave de enlace instalada para el procedimiento de Desafío-Respuesta.

Dado que la clave de enlace instalada es errónea, el procedimiento de Desafío-Respuesta fallará y no lograremos la autenticación con éxito.




Por razones de seguridad, la relación de emparejamiento se romperá y la clave en enlace almacenada en la PDA será eliminada.




A partir de este momento, si el teléfono móvil intenta establecer una conexión con la PDA, los dispositivos no podrán seguir el proceso de autenticación, sino que deberán realizar el emparejamiento de nuevo.




Y entonces, tendremos ocasión de sniffar el emparejamiento y crackear la nueva clave de enlace.

© 2005 - 2009 Alberto Moreno Tablado