
Фреймворк для экспериментов с Bluetooth для чипов Broadcom и Cypress.
Broadcom чипы используются примерно в миллиарде устройств, таких как все iPhone, MacBook, серия Samsung Galaxy S, более старые Google Nexus, старые ThinkPad, Raspberry Pi, различные IoT-устройства и другие. В 2016 году Cypress приобрела IoT-подразделение Broadcom. С тех пор варианты прошивок несколько разошлись, поскольку Broadcom сохранила не-IoT клиентов, таких как Apple и Samsung. Однако механизм взаимодействия с прошивкой и её обновления остался прежним. Мы провели обратную разработку того, как операционные системы пропатчивают эту прошивку и взаимодействуют с ней. На основе этого мы разработали экспериментальный фреймворк для Bluetooth, который умеет пропатчивать прошивку. Это открывает различные возможности, которые иначе были бы возможны только при полноценной реализации на программно-определяемом радио, например инъекцию и мониторинг пакетов на канальном уровне.
InternalBlue использовался не только для наших собственных исследований в Secure Mobile Networking Lab (SEEMOO). Также прототипы атак KNOB и BIAS были реализованы с использованием LMP-сообщений InternalBlue, а атаки SweynTooth также экспериментировали с InternalBlue для создания LCP-сообщений. Обратите внимание, что в отличие от таких инструментов, как btlejack или Ubertooth, InternalBlue не нацелен на выполнение атак типа Machine-in-the-Middle. Однако устройство, на котором работает InternalBlue, может отправлять произвольные пакеты, а также внедрять их в существующие соединения. При мониторинге все пакеты, принимаемые устройством с InternalBlue, захватываются без потерь пакетов. InternalBlue не имеет проблем с анализом зашифрованных соединений или Bluetooth Classic. Если вам нужны особые функции для ваших исследований в области безопасности, не стесняйтесь открыть тикет.
В дополнение к исследованиям безопасности InternalBlue также открывает возможности для дальнейшего анализа, такого как статистика производительности Bluetooth Low Energy и её улучшение. Всё, что можно улучшить в Bluetooth-стеке, можно напрямую протестировать на готовых устройствах.
Наши недавние исследования включают Frankenstein, который эмулирует прошивку, включая переключения потоков и виртуальный ввод модема. Эмулированную прошивку можно подключить к хосту с Linux. Таким образом, подход является полностековым. Мы в основном использовали его для фаззинга и находили уязвимости, которые требуют ответных действий хоста. Frankenstein находится в отдельном репозитории, но зависит от InternalBlue для создания снимков состояния и т. д. на физическом устройстве.
Кроме того, мы только что опубликовали Polypyus. Он позволяет выполнять диффинг исключительно бинарных файлов, независимо от IDA и Ghidra. При этом он встраивается в этот рабочий процесс, определяя хорошие отправные точки для дальнейшего анализа. Мы уже опробовали его на различных прошивках Broadcom для Wi-Fi и Bluetooth.
Ищете наши измерения генератора случайных чисел, которые мы сделали в рамках анализа CVE-2020-6616? Вы можете найти их здесь.
Есть также несколько более динамических хуков для HCI с помощью Frida на iOS и Android. Мы использовали это для изучения поведения предупреждений в пользовательском интерфейсе при MitM-атаках. Впрочем, вероятно, это полезно и для многих других экспериментов.
Из-за Spectra 👻🌈 команды записи и чтения ОЗУ отключаются после инициализации драйвера. Обходные пути для этого описаны в соответствующих инструкциях для Android и iOS, обходы для других устройств будут добавлены при необходимости.
Авторские права 2018-2021 The InternalBlue Team
Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и сопутствующих файлов документации (далее — «Программное обеспечение»), без ограничений использовать Программное обеспечение, включая без ограничения права использовать, копировать, изменять, объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставляется данное Программное обеспечение, делать это при соблюдении следующих условий:
Указанное выше уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, УБЫТКАМ ИЛИ ИНОЙ ОТВЕТСТВЕННОСТИ, БУДЬ ТО В СИЛУ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИМ ИЗ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМ ОБРАЩЕНИЕМ С НИМ.