Авторы: Matthias Deeg и Gerhard Klostermeier
Введение
Доверие – коварная штука. Если вы доверяете неправильным людям или полагаетесь на ошибочные факты, то у вас могут возникнуть неприятности. Чтобы подобного не возникало, хорошей идеей будет периодическая ревизия достоверных связей, поскольку могут наступить такие времена, когда те гипотезы и факты, на которые вы опирались, потеряли свою актуальность или вообще были ошибочными изначально.
В этой статье будет показан пример эксплуатации достоверных соединений между двумя техническими устройствами, которые могут подвергнуть угрозе конфиденциальность данных или целостность всей компьютерной системы. Достоверное соединение, которое мы будем эксплуатировать, существует между двумя устройствами, связанными по протоколу Bluetooth. С одной стороны, у нас есть компьютерная система, которая должна оставаться защищенной (например, ноутбук или смартфон), с другой – простой Bluetooth-девайс, безопасности которого обычно не уделяется особое внимание, поскольку там не хранится никакой конфиденциальной и ценной информаций (например, наушники).
Основы безопасности Bluetooth
Беспроводная технология Bluetooth, предназначенная для обмена данными на коротком расстоянии, на самом деле описывается более, чем одним стандартом, использует несколько протоколов и существует в разных версиях, начиная с Bluetooth 1.0 и заканчивая Bluetooth 5.0.
Спецификация Bluetooth поддерживается специальной группой SIG (Bluetooth Special Interest Group) и описывается несколькими документами, как, например, Bluetooth Core Specification Version 5.0 [1] (см. раздел Ссылки).
Чтобы понять вектор атаки, рассматриваемый в этой статье, необходимо ознакомиться с некоторыми азами, связанными с архитектурой и моделью безопасности Bluetooth. Далее будут рассказаны базовые сведения в виде краткого содержания вышеупомянутого документа Bluetooth Core Specification Version 5.0 и прекрасного руководства Bluetooth Security [2], разработанного NIST (National Institute of Standards and Technology; Национальный институт стандартов и технологий).
Модель безопасности Bluetooth состоит из пяти аспектов:
1. Сопряжение (Pairing): Процесс создания одного или нескольких общих секретных ключей.
2. Привязка (Bonding): Хранение ключей, созданных во время сопряжения, для использования в последующих соединениях и создания достоверной пары устройств.
3. Аутентификация устройства: Проверка того, чтобы у обоих устройств были одинаковые ключи.
4. Шифрование: Создание конфиденциальных сообщений.
5. Целостность сообщения: Защита от подделки сообщений.
Во время эволюции технологии Bluetooth, система безопасности также развивалась, и для различных целей, как, например, аутентификация или шифрование, использовались различные криптографические алгоритмы.
В целом, между устройствами на базе технологии Bluetooth BR/EDR (Basic Rate/Enhanced Data Rate) и Bluetooth LE (Low Energy или BLE или Bluetooth Smart) существуют различия, указанные в Таблице 1, которую также можно найти в Разделе 2.1 документа Guide to Bluetooth Security [2].
Характеристика
Bluetooth BR/EDR
Bluetooth Low Energy
До версии 4.1
Версия 4.1 и новее
До версии 4.1
Версия 4.1 и новее
Физические радио каналы
79 каналов с шагом в 1 МГц
40 каналов с шагом в 2 МГц
Обнаружение / соединение
Опрос (inquiry) / разбиение (paging)
Оповещение (advertising)
Конфиденциальность адреса устройства
Отсутствует
Присутствует
Максимальная скорость данных
1-3 Мбит/с
1 Мбит/с через GFSK-модуляцию
Алгоритм сопряжения
До версии 2.1: E21/E22/SAFER+
Версия 2.1-4.0: Elliptic Curve P-192, HMAC-SHA-256
P-256 Elliptic Curve, HMAC-SHA-256
AES-128
P-256 Elliptic Curve, AES-CMAC
Алгоритм аутентификации устройства
E1/SAFER
HMAC-SHA-256
AES-CCM
Алгоритм шифрования
E0/SAFER+
AES-CCM
AES-CCM
Стандартный радиус действия
30 метров
50 метров
Максимальная выходная мощность
100 мВ (20 дБ)
10 мВ (10 дБ) / 100 мВ (20 дБ)
Таблица 1: Ключевые отличия между Bluetooth BR/EDR и LowEnergy (источник: Guide to Bluetooth
Security [2])
Чтобы взаимодействовать друг с другом, у двух Bluetooth-устройство должен быть общий секрет, представляющий собой криптографический ключ, который создается во время сопряжения. Схема создания ключа зависит от возможностей ввода/вывода, показанных в Таблице 2.
Возможность
Тип операции
Описание
NoInput
Ввод
Устройство не имеет возможности отображать сигналы «да» или «нет»
Да/нет
Ввод
У устройства есть как минимум две кнопки, которые легко могут быть привязаны к сигналам «да» и «нет», или у устройства есть механизм, при помощи которого пользователь может генерировать сигналы «да» или «нет».
Клавиатура
Ввод
У устройства есть цифровая клавиатура, при помощи которой можно вводить числа от 0 до 9. У подтверждающего устройства также есть как минимум две кнопки, которые могут быть легко привязаны к сигналам «да» и «нет», или у устройства есть механизм, при помощи которого пользователь может генерировать сигналы «да» или «нет».
NoOutput
Вывод
У устройства нет возможности отображать или передавать 6-значный десятичный номер.
Цифровой вывод
Вывод
У устройства есть возможность отображать или передавать 6-значный десятичный номер.
Таблица 2: Возможности ввода/вывода Bluetooth-устройства (источник: Bluetooth Core Specification [1])
В Таблице 3 показано соответствие возможностей ввода/вывода и метода генерации используемого ключа.
Получатель
Инициатор
Только отображение
Отображение, Да/Нет
Только клавиатура
NoInput, NoOutput
Отображение, клавиатура
Только отображение
Без аутентификации
Без аутентификации
Аутентификация при помощи ключа
Без аутентификации
Аутентификация при помощи ключа
Отображение, Да/Нет
Без аутентификации
Обычное сопряжение в LE: Без аутентификации
Безопасные соединения в LE: Аутентификация через цифровое сравнение
Аутентификация при помощи ключа
Без аутентификации
Обычное сопряжение в LE: Аутентификация при помощи ключа
Безопасные соединения в LE: Аутентификация через цифровое сравнение
Только клавиатура
Аутентификация при помощи ключа
Аутентификация при помощи ключа
Аутентификация при помощи ключа
Без аутентификации
Аутентификация при помощи ключа
NoInput, NoOutput
Без аутентификации
Без аутентификации
Без аутентификации
Без аутентификации
Без аутентификации
Отображение, клавиатура
Аутентификация при помощи ключа
Обычное сопряжение в LE: Без аутентификации
Безопасные соединения в LE: Аутентификация через цифровое сравнение
Аутентификация при помощи ключа
Без аутентификации
Обычное сопряжение в LE: Без аутентификации
Безопасные соединения в LE: Аутентификация через цифровое сравнение
Таблица 3: Соответствие возможностей ввода/вывода и методов генерации ключа (источник: Bluetooth Core Specification [1])
Чтобы понять вектор атаки, описываемый в следующем разделе, не обязательно углубляться в детали методов генерации ключа, иерархии ключей безопасности и функций, используемых для получения ключей. Важно знать, что каждое сопряженное или, если быть более точным, привязанное устройство хранит локально один или несколько общих секретных ключей, созданный во время сопряжения для последующих соединений с целью формирования достоверного соединения в паре.
Когда речь идет о Bluetooth-устройствах, работающих на базе технологии BR/EDR, этот хранимый общий криптографический ключ называется связным (Link Key; LK). В случае с технологией LE тот же самый ключ называется долговременным (Long Term Key; LTK).
Помимо криптографического ключа, связанные Bluetooth-устройства хранят как минимум адрес (BD_ADDR) устройств, использующих общий ключ.
Эксплуатация достоверного соединения
Во время исследовательского проекта, касающегося Bluetooth-клавиатур [3], мы заметили нечто, что впоследствии помогло нам реализовать интересный, по крайней мере по нашему скромному мнению, сценарий атаки, имеющий отношение к достоверному Bluetooth-соединению:
1. Криптографический ключ связанных устройств легко извлекается, если у злоумышленника есть физический доступ к девайсам.
2. В большинстве реализаций протокола Bluetooth в современных операционных системах нет соответствия специфических параметров привязанных устройств между собой.
С целью тестирования различных случаев мы разработали приложение Bluetooth Keyboard Emulator [4] с использованием общедоступного программного обеспечения, чтобы сэмулировать классическую Bluetooth-клавиатуру, работающую на базе технологии BR/EDR.
Bluetooth Keyboard Emulator использует профиль Bluetooth HID (Human Interface Device) и работает безотказно при извлечении ключей связи в тестируемых классических Bluetooth-клавиатурах и без всяких ошибок со стороны связанных устройств, работающих на базе различных операционных систем (Arch Linux, Microsoft Windows 10, Apple Mac OS X, iOS 11 и Android 8). Нам стало интересно, что произойдет, если вместо замены реальной клавиатуры на эмулятор, поменять другой тип Bluetooth-устройства на эмулятор.
Мы провели тестирование и заменили беспроводные наушники на устройство ввода (эмулятор клавиатуры), использовавшего тот же самый адрес устройства и криптографический ключ связи.
Во время тестов с Bluetooth-клавиатурами мы заметили, что большинство программных реализаций Bluetooth-стеков в современных операционных системах не учитывает тот факт, что у привязанного устройства менялись атрибуты. Например, в устройстве может измениться имя, идентификатор производителя и продукта, или серийный номер, и хост ничего не заподозрит, поскольку адрес Bluetooth-устройства и ключ связи не меняются. Еще более интересное наблюдение заключается в том, что в современных Bluetooth-стеках даже не проверяется, что стало использоваться устройство совсем другого типа. Таким образом, возможность поменять тип устройства, например, наушники на клавиатуру, которое будет сохранять достоверное соединение со связным устройством, например, смартфоном или ноутбуком, может давать очень интересные возможности для злоумышленника.
Следующие пять шагов описывают возможный сценарий атаки:
1. Жертва покупает и подключает Bluetooth-наушники к компьютеру или смартфону.
2. Злоумышленник получает доступ к наушникам (например, жертва теряет, отдает, продает, или наушники украли, или у злоумышленника появился физический доступ к девайсу на несколько минут).
3. Злоумышленник извлекает информацию, имеющую отношение к обоим устройствам (адрес и ключ связи).
4. Злоумышленник использует полученную информацию для установления корректного подключения к компьютеру или смартфону жертвы при помощи эмулятора.
5. В зависимости от софтовой реализации Bluetooth-стека на компьютере или смартфоне, эмулируемое Bluetooth-девайс может функционировать как совершенно иное устройство – например, в качестве Bluetooth-клавиатуры – что позволяет злоумышленнику выполнять вредоносные действия в системе жертвы для получения доступа к конфиденциальной информации.
Наша команда протестировала описанный сценарий, используя наушники Pioneer SE-MJ553BT-K, которые подключались к различным системам (ноутбукам или смартфонам) с различными операционными системами.
В трех из пяти тестовых случаев атака при помощи эмулятора Bluetooth-клавиатуры завершилась успешно. То есть удалось установить соединение с клиентской системой, используя криптографический ключ (ключ связи) извлеченный из наушников. Несмотря на то, что подключалось устройство совершенно другого типа в тестируемых системах на базе Android, iOS и Mac OS X не возникло никаких предупреждений на предмет того, что наушники вдруг превратились клавиатуру. Последующая работа с клиентскими системами с использованием эмулятора клавиатуры прошла без каких-либо проблем.
Этот сценарий не работает в системах на базе Windows 10 и Arch Linux. Причина неудачи в этих ОС пока не выяснена, и данный вопрос еще предстоит изучить. Возможно, в Bluetooth-стеке, который используется в Windows 10 и Arch Linux, не предусмотрена столь кардинальное изменение подключенного устройства, или из-за технических проблем и недоработок нашего эмулятора.
В Таблице 4 обобщены результаты тестирования в различных системах.
Операционная система клиента
Версия операционной система
Успешность атаки
Android
7.1.2
Да
Android
8.1.0
Да
Arch Linux
4.16.13-2-ARCH #1
Нет
Apple iOS
11.2.6
Да
Apple iOS
11.3
Да
Apple iOS
11.4
Да
Apple Mac OS X
10.13.4
Да
Apple Mac OS X
10.13.5
Да
Microsoft Windows 10
1709 (OS Build 16299.125)
Нет
Таблица 4: Успешность атаки в различных операционных системах
Схожий сценарий атаки под названием DirtyTooth [5], где также происходит эксплуатация достоверного соединение и замена устройства через Bluetooth-профили в девайсах на базе Apple iOS до версии 11.2, был опубликован командой ElevenPaths. В случае с атакой DirtyTooth к iOS-устройству жертвы подключался девайс злоумышленника, например, колонки. Трюк заключался в том, что традиционный функционал подключенных колонок на базе Bluetooth-профиля A2DP (Advanced Audio Distribution; Продвинутое аудио распределение) после сопряжения, может быть изменен переключением на другой профиль как, например, PBAP (Phone Book Access Profile; Профиль для доступа к телефонной книги).
Специалисты ElevenPaths выяснили, что iOS-устройства до версии 11.2 при смене профиля не выдавали никаких уведомлений и разрешали синхронизацию контактов по умолчанию, давая вредоносным Bluetooth-девайсам полный доступ ко всем записям телефонной книги.
После наших тестов разработанного эмулятора Bluetooth-клавиатуры выяснилось, что текущие версии iOS до сих пор разрешают смену профиля привязанных беспроводных устройств, которые легко может эксплуатировать злоумышленник. Схожее поведение установлено и в устройствах на базе Android и Mac OS X.
Далее в этом разделе будет проиллюстрирован реальный сценарий, связанный с эксплуатаций достоверного соединения между Bluetooth-наушниками Pioneer SE-MJ553BT-K и планшетом на базе Android 7.1.2.
На Рисунке 2 в меню ОС Android показано, что к планшету подключены наушники.
Рисунок 1: Наушники Pioneer SE-MJ553BT-K
Рисунок 2: Раздел меню в Android, где показаны устройства, подключенные к планшету
На Рисунке 3 показаны детальные настройки Bluetooth, имеющие отношение к наушникам Pioneer SE-MJ553BT-K. Интересный факт: по умолчанию наушники используются операционной системой Android не только в качестве аудио устройства, но и для обмена контактами. Подобное происходит потому, что наушники со встроенным микрофоном поддерживают два аудио профиля A2DP (Advanced Audio Distribution Profile) и AVRCP (Audio/Video Remote Control Profile), а также два профиля HFP (Hands-Free Profile) и HSP (Headset Profile), у которых есть функционал для доступа к телефонной книге. Сей факт позволяет злоумышленникам без особых проблем реализовать другие сценарии атак, помимо описанной выше.
Рисунок 3: Детальные настройки беспроводных наушников Pioneer SE-MJ553BT-K
В случае с наушниками Pioneer SE-MJ553BT-K эта задача решается довольно просто, поскольку вся необходимая информация хранится на серийной SPI-флешке, припаянной к печатной плате.
На Рисунке 4 показана одна сторона печатной платы, которая находится внутри левого наушника и доступна после откручивания трех винтов. Наушники Pioneer SE-MJ553BT-K используют Аудио Bluetooth-платформу на базе однокристального чипа Qualcomm CSR8635 в связке с серийной SPI-флешкой (тип 25LV512).
Рисунок 4: Печатная плата наушников Pioneer
Чтобы прочитать содержимое флешки, злоумышленник, имея физический доступ к устройству, может пойти двумя путями:
· Отпаять флешку, а затем прочитать содержимое при помощи соответствующего оборудования.
· Считать содержимое флешки прямо с платы при помощи адаптера и оборудования для чтения.
Естественно, первый метод по сравнению со вторым отнимает намного больше времени и пригоден только в случае, если есть неограниченный физический доступ к устройству.
Во время тестов нам удалось при помощи обоих методов успешно извлечь нужный адрес устройства и криптографический ключ, используемый наушниками Pioneer SE-MJ553BT-K.
В качестве примера на Рисунке 5 показана отпаянная SPI-флешка на базе микросхемы TSSOP-8 (Thin Shrink Small Outline Package; Уменьшенный малогабаритный корпус), которая припаяна к интерфейсной плате.
Рисунок 5: SPI-флешка, припаянная к интерфейсной плате
На Рисунке 6 демонстрируется первый метод, когда интерфейсная плата подключена к универсальному программатору MiniPro TL866A.
Рисунок 6: Универсальный программатор MiniPro TL866A
На Рисунке 7 демонстрируется второй метод, когда адаптер, подходящий под микросхему TSSOP-8, используется в связке с универсальным программатором MiniPro TL886A для извлечения содержимого SPI-флешки без отпаивания от печатной платы.
Рисунок 7: Адаптер TSSOP-8 для извлечения содержимого флешки без отпаивания от печатной платы
При помощи универсального программатора MinPro TL866A и приложения MiniPro v6.71 мы смогли прочитать содержимого SPI-флешки, используемой в беспроводных наушниках.
Рисунок 8: Дамп памяти, снятый с SPI-флешки, содержит адрес устройства и ключ связи
Зеленым выделен адрес Android-планшета: AC:22:0B:D6:F5:E4. Красным выделен 128-битный ключ связи. Формат адреса устройства и ключа связи, а также формат хранения в памяти EEPROM или серийной флешке, зависит от конкретного устройства и прошивки. Например, последовательность байтов ключа связи может варьироваться от устройства к устройству. То же самое касается адресов Bluetooth-устройств.
После того как извлечен ключ связи и адрес сопряженного устройства и самих наушников, теперь злоумышленник сможет воспользоваться полученной информацией для эмуляции и эксплуатации достоверного Bluetooth-соединения между наушниками и Android-планшетом.
В современных Linux-системах со стеком BlueZ версии 5 и набором утилит, например, доступных в дистрибутиве Arch Linux, злоумышленник должен создать файл info, добавить туда ключ и разметить файл в нужной директории.
В нашем примере, файл будет находиться по адресу /var/lib/bluetooth/F4:0E:11:76:71:AD/AC:22:0B:E4:D6:F5/info со следующим содержимым:
[LinkKey]
Key=03E88F84C3008E7CAB3F78FB7E61FED9
AC:22:0B:E4:D6:F5 – адрес Android-планшета, F4:0E:11:76:71:AD – адрес наушников, который нужен для спуфинга.
Теперь злоумышленник может реализовать различные сценарии атак, посредством эксплуатации достоверного Bluetooth-соединения, воспользовавшись нашим эмулятором клавиатуры, показанным на Рисунке 9.
Рисунок 9: Эмулятор Bluetooth-клавиатуры
Эмулируя клавиатуру при помощи профиля Bluetooth HID, злоумышленник может удаленно управлять Android-планшетом в радиочастотном диапазоне (см. Таблицу 1) и использовать множество функций, доступных на подконтрольном устройстве.
Описанный пример эксплуатации достоверного соединения с эмулятором клавиатуры наиболее интересен, когда экран подконтрольного девайса разблокирован. В противном случае, вне зависимости от того, с каким устройством мы работаем – смартфоном, планшетом, ноутбуком или настольным компьютером – количество доступных возможностей резко снижается. По крайней мере при использовании эмулятора клавиатуры. Однако если злоумышленник работает с разблокированным девайсом, то может отсылать любые нажатия клавиш и, например, менять настройки устройства, пересылать данные через почту, мессенджер или браузер, или выполнять операции от имени владельца устройства.
Если достоверное Bluetooth-соединение уже позволяет использовать функционал сопряженного устройства, как, например, в нашем случае, когда по умолчанию разрешены общие контакты, злоумышленник может прочитать всю телефонную книгу через профиль Bluetooth PBAP (Phone Book Access Profile). Ниже показан пример использования утилиты pbapclient [6] для считывания всей телефонной книги с Android-планшета.
Рисунок 10: Пример использования pbapclient.py
Заключение
Продемонстрированный сценарий атаки свидетельствует о том, что используемые вами Bluetooth-устройства, безопасности которых вы не уделяете должного внимания, могут стать промежуточным звеном для атак на более важные устройства, которые вы не хотите, чтобы были скомпрометированы. Таким образом, следует время от времени проверять на достоверность соединения между Bluetooth-устройствами.
Кроме того, следует учитывать, что обычно на Bluetooth-устройствах изначально хранятся различные секреты, как, например, ключи связи или ключи долговременного пользования, которые могут быть легко извлечены злоумышленником в течение нескольких минут (при наличии физического доступа) из-за ненадлежащей защиты конфиденциальной информации. Наличие криптографического ключа позволяет осуществлять различные атаки. Например, эксплуатацию достоверного соединения между двумя Bluetooth-устройствами и изменения типа устройства, как в нашем случае, когда наушники превратились в клавиатуру.
Наши тесты по замене наушников на эмулятор Bluetooth-клавиатуры также показывают, что Bluetooth-стеки различных операционных системах ведут себя по-разному и не все ОС уязвимы к тому сценарию атаки, который был описан.
Во время нашего исследования, касающегося безопасности современных Bluetooth-клавиатур [3], когда мы обнаружили описанную проблему, не на все вопросы были получены ответы и, более того, возникли новые интересные темы, которые будут изучены в последующих проектах.
Целью данной статьи является повышение осведомленности о области безопасности Bluetooth-устройств, а конкретно – в области безопасности достоверных соединений особенно с периферийными устройствами, которые обычно выпадают из поля зрения, когда речь заходит об IT-безопасности.
Если вы хотите ознакомиться более подробно с уязвимостями, угрозами, рисками, методами защиты и контрмерами в области безопасности Bluetooth, рекомендуем ознакомиться с руководством Guide to Bluetooth Security [2], поддерживаемым Национальным Институтом Стандартов и Технологий (NIST).
Ссылки
[1] Bluetooth SIG, Bluetooth Core Specification Version 5.0, https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=421043, 2016 1, 2, 3
[2] John Padgette et al., National Institute of Standards and Technology (NIST), NIST Special Publication 800-121 Revision 2, Guide to Bluetooth Security, https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-121r2.pdf, 2017 1, 2, 13
[3] Matthias Deeg and Gerhard Klostermeier, SySS GmbH, Security of Modern Bluetooth Keyboards,
https://www.syss.de/fileadmin/dokumente/Publikationen/2018/Security_of_Modern_Bluetooth_Keyboards.pd…, 2018 4, 13
[4] Matthias Deeg and Gerhard Klostermeier, SySS GmbH, Bluetooth Keyboard Emulator, https://github.com/SySS-Research/bluetooth-keyboard-emulator, 2018 4
[5] Chema Alonso et al.,ElevenPaths, DirtyTooth, http://dirtytooth.com/, 2017 5
[6] Kannan Subramani, BMW Car IT GmbH, Python implementation of Phone Book Access Profile (PBAP), https://github.com/bmwcarit/pypbap, 2018 12
Источник: