Captura de una conexión Bluetooth

Esta técnica consiste en la captura de una conexión con el mismo dispositivo con el que se realiza la conexión Bluetooth. En resumen, el proceso consiste en capturar los paquetes intercambiados entre el “Host” y el “Controller” de un dispositivo mientras este se conecta a otro. El protocolo usado para intercambiar mensajes entre el controlador y el “Host” es HCI (Host Controller Interface). Todas las herramientas listadas a continuación sirven para capturar y/o almacenar paquetes del protocolo HCI en uno u otro formato.

Dado que esta técnica solo captura el protocolo HCI, muchos de los paquetes de la capa “Link Layer” intercambiados entre controladores no estarán presentes en la captura. Existen mecanismos de depuración mediante los cuales es posible capturar estos paquetes, pero solo están disponibles en hardware específico. Consulte BSAM-RES-06 (Modo depuración en controladores Bluetooth) para más información.

Esta técnica requiere herramientas y procedimientos que dependen del sistema operativo en uso. A continuación, se listan algunas alternativas para los sistemas operativos más comunes.

Captura Bluetooth en Linux

En Linux existen distintas alternativas para capturar paquetes de conexiones establecidas con nuestra máquina. Casi todas las máquinas Linux con soporte para Bluetooth tienen la pila BlueZ instalada por lo que la herramienta btmon es una buena alternativa para hacer capturas sin necesidad de instalar muchas dependencias. Wireshark es una de las alternativas más atractivas ya que cuenta con la posibilidad de diseccionar paquetes gráficamente. Para los casos en los que es necesario interactuar de manera programática con los paquetes o realizar capturas automatizadas, Scapy es una buena alternativa.

Referencias:

Captura Bluetooth en Windows

Windows también ofrece una herramienta nativa para el volcado de paquetes de Bluetooth conocida como BTVS o Bluetooth Virtual Sniffer con capacidad para volcar en formato Wireshark para su posterior análisis. Wireshark también soporta hacer un volcado de paquetes Bluetooth directamente en Windows.

Referencias:

Captura Bluetooth en MacOS, iOS, tvOS & watchOS

En las plataformas de Apple, el único método soportado para el volcado de paquetes Bluetooth es la herramienta de depuración PacketLogger. Es compatible con todas las plataformas de Apple y permite exportar las capturas posteriormente a un formato compatible con Wireshark.

Referencias:

Captura Bluetooth en Android

Android soporta de manera nativa la exportación de logs de comunicaciones mediante un mecanismo conocido como btsnoop o registro de Bluetooth HCI. Existen scripts de Frida como Frida BLEMon que permiten instrumentar llamadas del API de Bluetooth para generar volcados de comunicaciones Bluetooth.

La obtención de los registros btsnoop difiere para cada dispositivo Android y para cada fabricante, aunque algunos pasos pueden ser comunes.

Opciones para desarrolladores

En la mayoría de dispositivos Android, el registro de Bluetooth HCI es una funcionalidad para desarrolladores, por lo que hay que activar las opciones para desarrolladores para poder utilizarlo.

Para ello, se accede a Ajustes > Información del teléfono y se pulsa sobre Número de compilación repetidamente hasta que aparezca una notificación indicando que las opciones para desarrolladores están activadas.

Obtención de registros btsnoop en OxygenOS 11.1.2.2

Con las opciones para desarrolladores activadas, se accede a Ajustes > Sistema > Opciones para desarrolladores y se pulsa sobre Habilitar registro de Bluetooth HCI para habilitar el registro. Luego, pausa y vuelve a iniciar la función Bluetooth del teléfono. A partir de ahora, todos los mensajes HCI se registran en archivos de log mientras la opción Habilitar registro de Bluetooth HCI permanezca habilitada.

Para extraer los archivos de log del teléfono, se accede a Ajustes > Sistema > Opciones para desarrolladores > Obtener registros y se inicia la captura Bluetooth Exception, pulsando sobre NOT REBOOT para evitar reiniciar el terminal. Este paso sólo sirve para extraer los logs previamente generados, no es necesario repetir las pruebas con la captura de Bluetooth Exception activa.

Después de unos segundos, se detiene la captura de Bluetooth Exception y se espera a que el informe sea generado. Cuando haya terminado, se pulsa sobre SHARE y se selecciona la carpeta btsnoop. Luego, se pulsa sobre el menú (...) y sobre Share para enviar la carpeta btsnoop, que contiene todos los registros de Bluetooth HCI, a alguna otra ubicación donde analizarlos.

Referencias: