
BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
BLESuite — это python-пакет, который делает взаимодействие с устройствами Bluetooth Low Energy (BLE) более удобным и позволяет проводить быстрое тестирование BLE-устройств. Версия 2 BLESuite устраняет зависимость от PyGattlib и BlueZ и вместо этого использует модифицированную версию PyBT (https://github.com/mikeryan/PyBT) для реализации и управления собственным BLE-стеком. Эта версия повышает надёжность связи, увеличивает гибкость взаимодействия, улучшает сканирование устройств и обеспечивает возможность фаззинга устройств на хост-уровнях стека Bluetooth. Стек, используемый BLESuite, намеренно позволяет отправлять устройствам некорректные запросы/ответы для обеспечения тестирования устройств.
Возможности:
blesuite и ble-replayПримечание для читателя:
Для доступа к функциям Bluetooth Low Energy необходимо иметь Bluetooth-адаптер, который их поддерживает.
Цель BLESuite — предоставить упрощённый способ быстрой разработки сценариев взаимодействия с целевыми BLE-устройствами для оценки безопасности. Благодаря переходу с PyGattlib и BlueZ на PyBT мы теперь можем лучше контролировать BLE-стек и использовать его для тестирования различных уровней BLE-стека целевого устройства.
Кроме того, BLESuite больше не ограничивается только ролью Central. Теперь BLESuite поддерживает роль Peripheral и позволяет пользователям быстро настраивать и разворачивать GATT-сервер, который можно использовать для тестирования BLE-устройств в роли Central (или устройств с двумя ролями).
Ниже приведены инструкции по установке Python-пакета BLESuite.
Поддерживаемые операционные системы:
BLESuite разрабатывался и тестировался на Debian 9.3. Библиотека может поддерживаться другими дистрибутивами Linux, однако в настоящее время поддержка не гарантируется.
Примечание: Недавние попытки использовать BLESuite с Fedora 28 были осуществлены путём установки следующих компонентов:
С Fedora 28 сообщалось об одной невоспроизводимой проблеме с BLESuite, связанной с TypeError, которая отсутствует в установках Debian 9.3, при попытке обработки входящего ATT-запроса.
Исправления приветствуются!
Необходимое программное обеспечение
Для использования BLESuite требуются следующие компоненты:
После установки libbluetooth-dev, libpython-dev и python-sphinx выполните следующую команду для установки остальных Python-зависимостей:
pip install -r requirements.txt
Из папки docs выполните:
make html
Затем в docs/_build/html будет доступен полный комплект документации и справочных руководств.
Выполните следующую команду для установки python-пакета:
python setup.py install
Если вы не хотите устанавливать Python API BDADDR или у вас возникают проблемы с его установкой, закомментируйте следующую строку в setup.py и повторно выполните приведённую выше команду:
ext_modules = [c_ext],
На данный момент BLESuite поддерживает только сопряжение LE Legacy JustWorks. Security Manager в основном спроектирован, однако остальное криптографическое программирование для LESC и альтернативных моделей ассоциации всё ещё необходимо реализовать.
Операция подписанной записи ATT в настоящее время не поддерживается BLESuite. Это нечасто используемая операция, однако для поддержки режима безопасности 2 она должна быть реализована.
В настоящее время BLESuite поддерживает только публичные (Public) и случайные (Random) статические адреса. Однако случайные адреса могут быть двух подтипов: статические (Static) или частные (Private). Частный случайный адрес также может быть разделён на два подтипа, которые в настоящее время не поддерживаются BLESuite: неразрешимый частный адрес (Non-resolvable Private address) и разрешимый частный адрес (Resolvable Private address) (разрешается с помощью IRK, обмененного во время сопряжения).
Соответственно, возможность установки таких типов адресов для адаптера хоста в настоящее время не предоставляется BLESuite. Кроме того, возможность разрешения случайных разрешимых адресов пирингового устройства на основе обмененного IRK ещё не реализована.
После создания библиотеки следующим шагом является создание инструментов оценки безопасности, использующих эту библиотеку.
Одним из таких примеров, включённых в эту библиотеку, является ble-replay, который может принимать захваченные BLE-пакеты и воспроизводить GATT-трафик целевому устройству. ble-replay может быстро помочь выявить уязвимости безопасности прикладного уровня, связанные с атаками повторного воспроизведения (replay).
Такие инструменты сокращают время, затрачиваемое на ручной анализ захваченных пакетов и ручную разработку тестовых сценариев BLE-взаимодействия.