Thursday, August 16, 2007

Avances en sniffing Bluetooth

Esta semana se han producido dos grandes avances en relación con la capacidad para sniffar comunicaciones Bluetooth.

Recordemos que sniffar comunicaciones Bluetooth es un tema bastante complicado debido a que:

1) La técnica de salto de frecuencias impide a cualquier dispositivo que no forme parte de la piconet (que no esté emparejado con el maestro) escuchar las comunicaciones, ya que no tiene acceso a la tabla de saltos utilizada para la transmisión de paquetes.

2) Los adaptadores USB Bluetooth convencionales no se pueden poner en modo promiscuo (como las tarjetas Ethernet o Wi-Fi). Hasta el momento, existían adaptadores hardware especiales, pero su precio rondaba los $10,000 en el mercado.

Durante el pasado evento 23C3, Thierry Zoller publicó la herramienta BTCrack para Windows. BTCrack es un programa que permite crackear el PIN y la clave de enlace compartidos por dos dispositivos a partir de las tramas capturadas durante el emparejamiento de ambos. El software existía, lo dificil y caro era conseguir el hardware que sniffara esas tramas. En aquel momento, Zoller hizo un llamamiento para encontrar una técnica que permitiera construir un sniffer Bluetooth de bajo coste.

Max Moser acudió al llamamiento y publicó un paper en el que desmontaba el mito de que conseguir un sniffer Bluetooth sólo era posible adquiriendo carísimos productos propietarios. Realizando ingeniería inversa de un producto comercial (que no conviene nombrar) fue capaz de flashear un adaptador USB Bluetooth convencional con el firmware de este sniffer comercial. La aplicación reconocía el hardware como parte del paquete comercial y permitía sniffar.

El procedimiento de construir un sniffer Bluetooth a partir de un adaptador USB Bluetooth convencial podía desarrollarse en Linux, pero para enviar comandos al hardware y sniffar con él hacía falta el producto comercial para Windows.

Pues bien, la primera noticia es la publicación de una herramienta que permite enviar comandos al adaptador hardware y utilizarlo para sniffar. El nombre de esta herramienta es BTSniff y está disponible para Linux. El autor es Andrea Bittau @ http://darkircop.org/.

BTSniff consta de dos partes:

- Ensamblador para construir tu propio firmware
- Frontline para envío de comandos: sincronizar con el maestro, sniffar tramas, ...

En principio, BTSniff sólo funciona con adaptadores USB Bluetooth con chipset CSR que han sido flasheados con el firmware del sniffer comercial.

Gracias a estos dos avances, el sniffing de comunicaciones Bluetooth está más cerca de ser una realidad y estar al alcance de cualquiera. (Aunque, ¿eso es bueno?). En cualquier caso, la nueva especificación 2.1 de Bluetooth que acaba de ser publicada por el SIG introduce algunas mejoras en seguridad. No obstante, de aquí a que la especificación 2.1 domine el mercado de los teléfonos móviles aún quedan años de diversión :)

¿Y para qué sirve todo esto? Diréis lo no iniciados en seguridad Bluetooth...

Os cuento: Gracias a BTSniff, un atacante podrá sincronizarse con el maestro de una piconet y sniffar las tramas transmitidas durante una comunicación Bluetooth con otro dispositivo. Lo interesante sería llevarlo a cabo durante el emparejamiento de dos dispositivos Bluetooth. Capturando estas tramas, el atacante tendría acceso a las keys generadas en el proceso de emparejamiento y podría obtener la clave de enlace Bluetooth a partir de las mismas con ayuda de BTCrack. Con la clave de enlace en su poder, el dispositivo atacante podría acceder de forma transparente a cualquiera de los dos dispositivos suplantando la BD_ADDR del otro dispositivo y utilizando la clave de enlace crackeada. El acceso transparente implica poder conectarse a cualquier perfil del dispositivo objetivo saltándose los mecanismos de seguridad de Bluetooth de autenticación y autorización, tal y como se explica en el ataque BD_ADDR Spoofing. Las posibilidades: muy "interesantes"... como el acceso a los comandos AT (realizar llamadas de teléfono, gestión de la agenda de contactos, gestión de mensajes SMS, ...) o el acceso al servicio OBEX para el robo de archivos del teléfono móvil.

Ya era hora de que apareciese alguna novedad en el mundo de la seguridad Bluetooth, después de que la cosa haya estado parada durante un año. ¡Buenas noticias!

Saludos

Monday, June 18, 2007

Pocket Bluesnarfer

Pocket Bluesnarfer es una herramienta para Pocket PC que permite enviar comandos AT a teléfonos móviles a través de Bluetooth e Infrarrojos.

Básicamente, Pocket Bluesnarfer permite
- Ejecutar comandos AT personalizados.
- Obtener información general del teléfono móvil comprometido: marca, modelo, IMEI, cobertura y nivel de batería.
- Extraer la agenda de contactos almacenada en SIM.
- Extraer la bandeja de entrada de mensajes SMS.

La aplicación envía los comandos AT a través de un puerto COM virtual establecido previamente con el perfil de Puerto Serie del teléfono. También debería poder funcionar sobre una conexión con el perfil de Acceso Telefónico a Redes. Dependiendo de la configuración Bluetooth del teléfono objetivo, la conexión a cualquiera de estos perfiles puede solicitar autenticación (emparejamiento) y autorización del dispositivo atacante.

Publiqué esta herramienta hace más de un año y pasado un tiempo la dejé de mantener. Existe cierta documentación no oficial (extraída del tutorial que publiqué en elhacker.net), aunque el funcionamiento es bastante sencillo (ver video demo @ YouTube)

Algunas especificaciones de Pocket Bluesnarfer:
- El proyecto Pocket Bluesnarfer está basado, adapta y extiende el proyecto IrDAMobile de Daniel Strigl @ http://www.codeproject.com/ce/irdamobile.asp
- La aplicación está desarrollada en eMbedded Visual C++ 3.0 con el SDK Windows Mobile 2002 - 2003, lo que no quiere decir que no pueda funcionar también en Windows Mobile 5.0 o Windows Mobile 6. El proyecto compila para PDAs con arquitectura Pocket PC ARM / Strong ARM / XScale.
- En principio, la aplicación es totalmente compatible con dispositivos Pocket PC 2003 y con pila de protocolos Bluetooth Widcomm (por ejemplo, Dell Axim x30). Sin embargo, es posible que la aplicación pueda llegar a funcionar también en dispositivos Pocket PC con Windows Mobile 5.0 y con pila de protocolos Bluetooth Widcomm (por ejemplo, Asus p525) o pila de protocolos Bluetooth de Microsoft (por ejemplo, cualquier HTC).
- Se distribuye libremente el código fuente del proyecto bajo licencia GNU Lesser General Public License. Por tanto, cualquiera es libre de modificar el código fuente y adaptarlo a otros SDKs (como Windows Mobile 5.0), a otras arquitecturas (como MIPS, SH3...) o a otras pilas de protocolos Bluetooth (como la de Microsoft).

Descargas:
- Proyecto eVC++ 3.0: http://gospel.endorasoft.es/bluetooth/seguridad-bluetooth/Files/PocketBluesnarfer.zip
- Ejecutable compilado para arquitecturas Pocket PC ARM / Strong ARM / XScale: http://gospel.endorasoft.es/bluetooth/seguridad-bluetooth/Files/PocketBluesnarfer.ARM.XScale.zip

Video Demo en Youtube:



No preguntéis por versiones del código. El proyecto no sigue manteniéndose. Para eso se distribuye el código libremente. No obstante, es posible que un día me de por volver a tocarlo ;)

Saludos