Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
btlejack — Швейцарский нож для Bluetooth с низким энергопотреблением | Kitploit
Инструменты/GitHubGitHub/virtualabs/btlejack
Безопасность BluetoothЭксплуатацияБезопасность беспроводных сетейТестирование на Проникновение
GitHubvirtualabs/btlejack

btlejack

Швейцарский нож для Bluetooth с низким энергопотреблением

Репозиторий
2.1k2092 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

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 может:

  • использовать различные устройства
  • сниффить существующее BLE-соединение
  • сниффить новые BLE-соединения
  • глушить существующее BLE-соединение
  • перехватывать существующее BLE-соединение
  • экспортировать захваченные пакеты в различные форматы PCAP

Указать используемые устройства

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̀

Перехват BLE-соединения

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: выполняет перечисление служб и характеристик, предоставит всю информацию о службах и характеристиках
  • write: записывает данные в определённый дескриптор значения
  • read: читает данные из определённого дескриптора значения
  • ll: отправляет необработанный пакет канального уровня (для ниндзя)

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

Service UUID: 1824 Characteristic UUID: 2abc | handle: 0029 | properties: write indicate (28) \ value handle: 002a

read command ^^^^^^^^^^^^^^

Команда read принимает один параметр — дескриптор значения, соответствующий характеристике, из которой вы хотите прочитать:

::

btlejack> read 0x16 read>> 4c 47 20 77 65 62 4f 53 20 54 56

write command ^^^^^^^^^^^^^^^

Команда write принимает три параметра:

::

btlejack> write

Поддерживаемые форматы данных:

  • hex: шестнадцатеричные данные (например, "414261")
  • str: текстовая строка, может быть заключена в двойные кавычки

ll command ^^^^^^^^^^^^

Эта последняя команда позволяет отправлять блоки данных канального уровня Bluetooth Low Energy в шестнадцатеричной форме, как указано в томе 6, части B, главе 2.4.

Экспорт в файл PCAP

Одна из интересных возможностей Btlejack — возможность экспортировать захваченные данные в файл PCAP.

Btlejack поддерживает следующие форматы DLT:

  • DLT_BLUETOOTH_LE_LL_WITH_PHDR (тот же)
  • DLT_NORDIC_BLE (используемый сниффером Nordic)
  • DLT_BLUETOOTH_LE_LL (поддерживается в последних версиях Wireshark)

Выходной файл может быть указан с помощью опции -o, а формат вывода — с помощью опции -x. Допустимые значения формата: ll_phdr, nordic или pcap (по умолчанию).

::

$ btlejack -f 0xac56bc12 -x nordic -o capture.nordic.pcap

Тип экспорта ll_phdr полезен при сниффинге зашифрованного соединения, так как он также поддерживается crackle <https://github.com/mikeryan/crackle>_. Так что если вы хотите сниффить и взламывать зашифрованные соединения, это то, что нужно.

Возможно, вам также потребуется указать crackle использовать определённую стратегию взлома с помощью опции -s:

::

$ crackle -i some.pcap -s 1

Кэш соединений

Btlejack использует кэш соединений для хранения некоторых значений, связанных с соединением, чтобы немного ускорить работу. Этот кэш может вызывать некоторые проблемы, особенно если адрес доступа уже был замечен ранее.

Этот кэш можно очистить с помощью опции -z:

::

$ btlejack -z

Дамп пакетов в реальном времени с помощью Wireshark

Btlejack 2.0 представляет новую опцию -w, которая позволяет указать путь FIFO (существующий или нет) для анализа пакетов в реальном времени:

::

$ btlejack -c any -w /tmp/blepipe

Вы даже можете использовать FIFO и выходной файл одновременно:

::

$ btlejack -c any -w /tmp/blepipe -o blepackets.pcap

Совет по использованию btlejack на Raspberry Pi

Если вы ранее включали виртуальный Ethernet через USB (RNDIS), например, для настройки Raspberry Pi Zero W через USB, вам нужно снова отключить это (т.е. удалить dtoverlay=dwc2 из boot/config.txt и modules-load=dwc2,g_ether из boot/cmdline.txt, затем выполнить sudo reboot), потому что иначе это будет мешать USB-соединениям снифферов.

Поддержка Bluetooth LE 5 и 5.1

Эта версия поддерживает Bluetooth Low Energy версий 5 и 5.1, и особенно новый алгоритм выбора канала, введённый в версии 5 (CSA #2). Однако, поскольку используемое оборудование не поддерживает два новых PHY, добавленных в версии 5, он сможет только сниффить, глушить и, возможно, перехватывать соединения, использующие 1Mbps uncoded PHY.

Также обратите внимание, что текущая реализация CSA #2 в Btlejack пока не поддерживает обновление карты каналов.

Сниффинг нового BLE 5 соединения

Btlejack автоматически определяет используемый алгоритм выбора канала, поэтому вам не нужно беспокоиться — просто захватывайте пакеты как обычно.

Сниффинг существующего BLE 5 соединения

Сниффинг существующего BLE 5 соединения (которое использует 1Mbps uncoded PHY, и только этот PHY) не так сложен. Сначала вы должны указать, что хотите атаковать BLE 5 соединение, используя опцию -5. Обратите внимание, что нет способа определить, использует ли существующее соединение CSA #2 или CSA #1, поэтому вам придётся попробовать обе техники, пока одна не сработает.

::

$ btlejack -f 0x11223344 -5

Затем Btlejack восстановит используемую карту каналов и значение интервала перескока:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160

Затем он попытается восстановить значение счётчика PRNG этого соединения:

::

$ btlejack -f 0x11223344 -5 [i] Synchronizing with connection 0x11223344 ... ✓ CRCInit: 0x40d64f ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 160 ✓ CSA2 PRNG counter = 5137 [i] Synchronized, packet capture in progress ...

После этого Btlejack синхронизируется с этим соединением и будет обрабатывать пакеты как обычно.

Глушение существующего BLE 5 соединения

Здесь нет ничего нового, за исключением того, что вы должны указать, что атакуете BLE 5 соединение, используя опцию -5.

Обратите внимание, что вы можете оптимизировать эту атаку, указав также карту каналов и значение интервала перескока с помощью флагов -m и -p соответственно. Оба они ДОЛЖНЫ быть указаны, иначе это не сработает.

Перехват существующего BLE 5 соединения

На данный момент мне не удалось перехватить BLE 5 соединение, так как эта атака чувствительна ко времени. Мои BLE 5 устройства используют задержку 0, что не допускает задержки и приводит к сбою атаки.

Когда мне удастся заполучить некоторые легальные BLE 5 устройства, я улучшу это.

Скачать инструмент