
Швейцарский нож для Bluetooth с низким энергопотреблением
BtleJack: новый швейцарский нож для Bluetooth Low Energy #####################################################
Btlejack предоставляет всё необходимое для сниффинга, глушения и перехвата устройств Bluetooth Low Energy. Он использует одно или несколько устройств BBC Micro:Bit <http://microbit.org/>. с прошивкой. Вы также можете использовать Adafruit's Bluefruit LE sniffer <https://www.adafruit.com/product/2269> или nRF51822 Eval Kit <https://www.waveshare.com/wiki/BLE400>_, так как мы добавили поддержку этих устройств.
Текущая версия инструмента (2.0) поддерживает BLE 4.x и 5.x. Поддержка BLE 5.x ограничена: поддерживается только 1Mbps Uncoded PHY и не поддерживается обновление карты каналов.
Вам потребуется система на базе UNIX (например, Raspberry Pi). Если вы используете BBC Micro:Bit, вам понадобится от одного до трёх устройств Micro:Bit (рекомендуется три) и для каждого устройства один свободный USB-порт. Энергопотребление Micro:Bit довольно низкое, поэтому вы можете использовать один USB-порт и пассивный хаб для питания трёх рекомендуемых устройств.
Если подключить 3 microbit одновременно к вашему компьютеру, Btlejack сможет сниффить на всех рекламных каналах и будет иметь гораздо больше шансов захватить запрос на соединение.
Сначала установите клиентское ПО Python3 btlejack с помощью Pip:
::
$ sudo pip3 install btlejack
Затем подключите устройство Micro:Bit к компьютеру через USB-кабель, смонтируйте соответствующее устройство массового хранения (точка монтирования должна содержать MICROBIT) и выполните следующую команду:
::
$ btlejack -i
Это запрограммирует каждое устройство Micro:Bit, подключённое к вашему компьютеру, и подготовит их к использованию с Btlejack. Будет использоваться правильная версия прошивки для текущего клиентского ПО, поэтому настоятельно рекомендуется выполнять эту процедуру установки прошивки каждый раз при обновлении Btlejack.
Если вы используете Bluefruit LE sniffer или nRF51822 Eval Kit, используйте внешний программатор SWD для прошивки устройства с помощью этой прошивки <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_.
Оставьте устройства подключёнными, и всё готово!
ПРИМЕЧАНИЕ Это работает только с системами, совместимыми с POSIX.
Использовать Btlejack довольно просто. Btlejack может:
Btlejack обычно пытается автоматически обнаруживать и использовать подключённые совместимые устройства (пока только Micro:Bit), но поскольку прошивку можно взломать или изменить для работы с другими платами на nRF51822, он предоставляет специальные опции для обеспечения совместимости с этими устройствами.
Опция -d позволяет указать одно или несколько устройств для Btlejack. Обратите внимание, что эта опция отключает автоматическое обнаружение устройств, и вы должны добавить столько устройств, сколько вам нужно:
::
$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s
Сначала найдите существующее соединение для атаки с помощью btlejack:
::
$ btlejack -s BtleJack version 1.1
[i] Enumerating existing connections ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2
Первое значение (в дБм) показывает мощность сигнала; чем больше это значение, тем лучше будет снифферное соединение.
Второе значение (шестнадцатеричное) — это связанный адрес доступа, 32-битное значение, идентифицирующее связь между двумя совместимыми устройствами Bluetooth Low Energy.
Последнее значение — количество пакетов, увиденных с этим адресом доступа. Чем выше это значение, тем более вероятно, что используется соответствующий адрес доступа.
Затем используйте опцию -f, чтобы отслеживать конкретное соединение:
::
$ 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
Если вы используете более одного microbit, Btlejack распараллелит некоторые операции сниффинга, чтобы ускорить восстановление параметров соединения!
Опция -c, поддерживаемая btlejack, позволяет указать целевой BD-адрес, или вы можете использовать any для захвата любого нового созданного соединения.
::
$ 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
или вы также можете указать целевой BD-адрес:
::
$ btlejack -c 03:e1:f0:00:11:22
После того как соединение идентифицировано по его адресу доступа, вы можете заглушить его с помощью опции -j:
::
$ btlejack -f 0x129f3244 -j̀
Btlejack также может перехватывать существующее соединение; для этого используйте опцию -t. После перехвата Btlejack выдаст приглашение, позволяющее взаимодействовать с перехваченным устройством.
Сначала перехватите существующее соединение:
::
$ 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>
Затем используйте следующие команды для взаимодействия с устройством:
discover command ^^^^^^^^^^^^^^^^^^
Команда discover отправляет и получает пакеты Bluetooth LE и извлекает все UUID служб и параметры, а также UUID характеристик и параметры:
::
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
Characteristic UUID: 2a01 | handle: 0017 | properties: read (02) \ value handle: 0018