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

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

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

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

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

Категории

Все категории
Loading categories
blur — BLURtooth: Exploiting Cross-Transport Key Derivation in Bluetooth Classic and Bluetooth Low Energy [CVE-2020-15802] [CVE-2022-20361] | Kitploit
Инструменты/GitHubGitHub/francozappa/blur
Bluetooth SecurityVulnerability AnalysisExploitationWireless SecurityPapers & ResearchLearning & Education
GitHubfrancozappa/blur

blur

BLURtooth: Exploiting Cross-Transport Key Derivation in Bluetooth Classic and Bluetooth Low Energy [CVE-2020-15802] [CVE-2022-20361]

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

Популярное

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

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

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

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

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

ПРОЧТИ МЕНЯ

Репозиторий об атаках BLUR, представленных на AsiaCCS'22 в статье под названием: BLURtooth: Exploiting Cross-Transport Key Derivation in Bluetooth Classic and Bluetooth Low Energy.

Полезные ссылки: pdf, видео, слайды, веб-сайт.

Запись BibTex:

root@kitploit:~
@inproceedings{antonioli22blur,
    author={Antonioli, Daniele and Tippenhauer, Nils Ole and Rasmussen, Kasper
    and Payer, Mathias},
    title={{BLURtooth: Exploiting Cross-Transport Key Derivation in
    Bluetooth Classic and Bluetooth Low Energy}},
    booktitle={Proceedings of the  Asia conference on computer and
    communications security (ASIACCS)},
    month={May},
    year={2022}
}

Атакам BLUR были присвоены CVE-2020-15802 и CVE-2022-20361.

Инициализация

В оставшейся части README мы обозначаем Bluetooth Classic (также известный как BR/EDR) как BT, Bluetooth Low Energy как BLE, а также Cross-Transport Key Derivation как CTKD. Мы также предполагаем, что атакующее устройство и жертвы поддерживают BT, BLE и CTKD. Это означает, что устройства поддерживают Bluetooth 4.2+ и BT/BLE Secure Connections (безопасные соединения).

Самый простой способ выполнить атаки — использовать одно устройство одновременно в качестве жертвы и атакующего устройства. Например, мы рекомендуем использовать ноутбук с Linux в качестве жертвы/атакующего устройства, а любое другое устройство — в качестве другой жертвы.

Мы используем машину с Linux, работающую с bluez и bluez tools. Мы полагаемся на инструмент btmgmt, и может быть полезно просмотреть его исходный код. В частности, мы используем его подкоманду pair, которая, помимо прочего, позволяет отправлять произвольные запросы на сопряжение через BT/BLE, объявляя произвольные возможности ввода-вывода.

root@kitploit:~
Usage: pair [-c cap] [-t type] <remote address>

Если вы хотите воспроизвести точный сценарий атаки, представленный в нашей статье, вам необходимо проделать дополнительную работу. В частности, вам нужно воспроизвести настройку, представленную в атаке BIAS. Когда ваша настройка будет готова, вы сможете использовать плату разработки в качестве вашего BT/BLE-контроллера, а ноутбук с Linux — в качестве хоста. Более того, вы сможете перехватывать пакеты канального уровня от хоста (например, трафик BT LMP) и динамически патчить прошивку платы разработки во время выполнения с помощью internalblue.

Выполнение атак BLUR

Жесткое задание возможностей NoInputNoOutput (без снятия флага MitM)

Этот шаг является опциональным и требует патча вашего собственного ядра Linux.

При использовании btmgmt -c 3 bluez автоматически снимает флаг защиты MitM, например, устанавливает байт AuthReq в 0x02 вместо 0x03. Однако атаки BLUR не требуют снятия этого флага, а только требуют объявления возможностей NoInputNoOutput, когда удаленное устройство поддерживает возможности ввода-вывода. Выполняя этот трюк, процедура сопряжения понижается до Just Works без снятия флага MitM.

Реализация этой настройки требует минимальной модификации ядра Linux. В частности, в /net/bluetooth/hci_event.c мы меняем:

root@kitploit:~
cp.authentication = conn->auth_type;

на:

root@kitploit:~
cp.authentication = 0x03;

Таким образом, мы жестко задаем наш флаг AuthReq равным 0x03 независимо от объявляемых возможностей ввода-вывода.

Легитимное сопряжение

Сопрягите устройства-жертвы как обычно. Например, если вы нацелились на смартфон, сопрягите его с вашим ноутбуком (выступающим одновременно в роли жертвы и атакующего устройства). Для сопряжения может потребоваться взаимодействие с пользователем (например, Numeric Comparison).

Открытие оболочки btmgmt

  • Запомните Bluetooth-адрес жертвы, обозначаемый как REMOTE-BTADD
  • Откройте терминал
  • Выполните hciconfig и запомните ваш индекс hci, например 0
  • Выполните sudo btmgmt -i 0
  • Вы должны увидеть синее приглашение терминала, содержащее [hci0] #

Атака центральной подмены через BLE, [пере]запись ключа сопряжения BT

Здесь я предполагаю, что жертва использует публичный BLE-адрес. Если используется случайный, измените опцию -t на 2

Из CLI btmgmt выполните:

root@kitploit:~
pair -t 1 REMOTE-BTADD

Если вам также нужно понизить ассоциацию до Just Works, выполните:

root@kitploit:~
pair -c 3 -t 1 REMOTE-BTADD

Флаг -c устанавливает возможности ввода-вывода атакующего, при этом значение 0x3 соответствует NoInputNoOutput, тогда как значение по умолчанию для ноутбука/смартфона — 0x1, соответствующее Display Yes/No.

Атака периферийной подмены через BT, [пере]запись ключа сопряжения BLE

В этом случае, даже если мы выдаем себя за BLE-периферийное устройство, мы выполняем сопряжение через BT в качестве центрального.

Из CLI btmgmt выполните:

root@kitploit:~
pair -t 0 REMOTE-BTADD

Если вам также нужно понизить ассоциацию до Just Works, выполните:

root@kitploit:~
pair -c 3 -t 0 REMOTE-BTADD

Непреднамеренные атаки сессий

Повторите описанные выше атаки, выдавая себя за устройство, которое в настоящее время неизвестно (т.е. не сопряжено) жертве.

Вопросы и ответы (Bluetooth, CTKD, Linux, bluez, Wireshark)

Как сделать мое BT/BLE устройство обнаруживаемым/подключаемым/готовым к сопряжению?

Из CLI bluetoothctl вы можете установить discoverable в on или off и pairable. Из CLI btmgmt вы также можете установить флаг connectable.

Как я могу контролировать, как долго мое устройство будет обнаруживаемым?

Из bluetoothctl вы можете контролировать тайм-аут обнаруживаемости с помощью discoverable-timeout, например, если установить его в 0, устройство будет всегда обнаруживаемым.

Как я могу проверить, поддерживает ли мое BT/BLE устройство сопряжение или готово к сопряжению?

Для BT, во время сопряжения с удаленным устройством в качестве центрального или периферийного, вы получите следующий LMP-пакет: LMP not accepted ext (opcode: 0x02) с кодом ошибки «сопряжение не разрешено» (error code: 0x18)

Для BLE, во время сопряжения с удаленным устройством в качестве центрального или периферийного, вы получите следующий SMP-пакет: SMP Pairing Failed Command (opcode 0x05) с Pairing Not Supported (reason 0x05).

Как я могу проверить, поддерживает ли мое BT/BLE устройство Secure Connections?

Для BT, во время сопряжения с удаленным устройством проверьте поддержку Secure Connections для хоста и контроллера в пакетах функций LMP, например, используя следующий фильтр отображения Wireshark: btbrlmp.efeat.scc or btbrlmp.efeat.sch.

Для BLE, во время сопряжения с удаленным устройством в SMP Pairing Request или Response проверьте байт AuthReq, содержащий флаг Secure Connection, например, используя следующий фильтр отображения Wireshark: btsmp.sc_flag == 1.

Как я могу проверить, поддерживает ли мое BT/BLE устройство CTKD?

Для BT, во время сопряжения с удаленным устройством трафик BLE SMP туннелируется через L2CAP. Поэтому, используя фильтр Wireshark btl2cap.payload, вы должны увидеть один пакет от центрального к периферийному устройству, содержащий полезную нагрузку, начинающуюся с 0x01 (SMP Pairing Request), и другой пакет в обратном направлении с полезной нагрузкой, начинающейся с 0x02 (SMP Pairing Response). Затем вы также должны увидеть другие сырые L2CAP-пакеты, кодирующие фазу распространения SMP-ключей.

Для BLE, во время сопряжения с удаленным устройством в SMP Pairing Request или Response проверьте, что и центральное, и периферийное устройство готовы отправлять и получать ключ связи во время распространения SMP-ключей, например, используйте следующий фильтр Wireshark: btsmp.key_dist_linkkey or btsmp.key_dist_linkkey.

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