Bluetooth

Bluetooth

@anon_polka

Итак, в этой статье я бы хотел рассказать немного теории о Bluetooth и способах его взлома, поехали...


На текущий момент, bluetooth встроен почти во все наши гаджеты: смартфоны, компьютеры, плееры, наушники, геймпады, клавиатуры, мышки и многие другие устройства. В данной статье внимание будет сосредоточено на взломе мобильных устройств, планшетов и телефонов, поскольку они являются наиболее распространенной целью взломов. Возможность взлома Bluetooth может подвергнуть опасности почти любую информацию на устройстве(фотографии, тексты, переписки, электронные письма, списки контактов и т.д.). Кроме этого взломщик может получить контроль над устройством и отправлять на него нежелательные данные. Но перед тем, как мы приступим к взлому, для начала нужно понять основные принципы этой технологии, её термины, и разобраться с системами безопасности использующимися в Bluetooth.

Немного теории:

Bluetooth - универсальный протокол связи ближнего действия с низким энергопотреблением, работающий в диапазоне 2,4-2,485 ГГц расширенного спектра. Несущая частота сигнала скачкообразно меняется со скоростью 1600 скачков в секунду в целях безопасности. Протокол был разработан в 1994 году в Швеции компанией Ericsson и назван в честь короля Дании Харальда Синезубого(На тот момент Дания и Швеция были одной страной). Минимальной рабочей дистанцией Bluetooth является 10 метров, но производители ничем не ограничены и могут менять дальность работы в своих устройствах, как в меньшую так и в большую сторону. Некоторые устройства способны общаться даже на расстоянии ~100 метров, а воспользовавшись специальными антеннами, мы можем еще больше расширить рабочий диапазон.

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

  • Имя
  • Класс устройства
  • Список сервисов
  • Техническую информацию

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

Каждое устройство имеет уникальный 48-рязрядный идентификатор(что-то вроде MAC адреса), а также свое имя.

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

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

Основные инструменты Linux для работы с Bluetooth

Реализация стек проколов Bluetooth в Linux называется BlueZ. В большинстве дистрибутивов, она установлена по умолчанию, в том числе и в Kali Linux. В крайнем случае, её всегда можно найти в своём репозитории.

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

  • hciconfig - Этот инструмент работает почти так же, как и ifconfig в linux, за исключением того что передает информацию только об устройствах Bluetooth
  • hcitool - Это инструмент для запроса данных. Он может сообщить нам имя устройства, его идентификатор, класс и сигнал тактирования
  • hcidump - Этот инструмент позволяет нам перехватывать коммуникации Bluetooth

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

Стек протоколов Bluetooth выглядит вот так:


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

  • Основные протоколы Bluetooth: SDP, LMP, L2CAP
  • Протокол замены кабеля: RFCOMM
  • Протокол управления телефонией: AT-Commands, TCS Binary
  • Заимствованные протоколы: OBEX, vCard, PPP, WAP, vCal, UDP/TCP/IP, WAE, IrMC

В дополнение к слоям протоколов спецификация Bluetooth также определяет интерфейс хост-контроллер(HCI). Он обеспечивает командный интерфейс для связи с контроллером базовой полосы, менеджер канала связи, а также доступ к данным о состоянии оборудования и управляющим регистрам, отсюда и название вышеприведенных инструментов: hcitool, hciconfig и hcidump


Безопасность Bluetooth

Система безопасности Bluetooth базируется на нескольких техниках. Во-первых, скачкообразным изменением частоты, алгоритм которого известен обоим устройствам, но не третьим лицам. Во-вторых. секретный ключ, обмен которым происходит при сопряжении. Он используется для аутентифицаии и шифрования (128-разрядного). Существует три режима безопасности Bluetooth:

  • Режим безопасности №1: Активная защита отключена
  • Режим безопасности №2: Защита на уровне сервисов. Авторизацией, аутентификацией и конфигурацией занимается централизованный менеджер безопасности. Не может быть активирован пользователем, защита на уровне устройства отсутствует.
  • Режим безопасности №3: Защита на уровне устройства. Аутентификация и шифрование на основе секретного ключа. Всегда включен. Принудительно активирует защиту для низкоуровневых подключений

Инструменты для взлома Bluetooth в Kali

В Kali встроено несколько инструментов для взлома Bluetooth. Кроме этого, нам потребуется скачать и установить другие инструменты. Чтобы ознакомиться со списком установленных инструментов для работы с Bluetooth, откройте: Приложения-> Kali Linux -> Беспроводные атаки -> Инструменты Bluetooth

Здесь вы найдете несколько инструментов для выполнения атак на Bluetooth. Давайте кратко их рассмотрим.

  • Bluelog - Инструмент для обнаружения устройств bluetooth. Он сканирует окружающее пространство в поисках видимых устройств и заносит их в файл.
  • Bluemaho - Набор инструментов с графическим интерфейсом для тестирования безопасности Bluetooth устройств
  • Btscanner - Этот инструмент с графическим интерфейсом сканирует видимые устройства в пределах видимого диапазона
  • Spooftooph - Инструмент для Спуфинга Bluetooth
  • Blueranger - Простой скрипт, написанный на Python, использующий i2cap сигналы для обнаружения Bluetooth устройств и примерного расстояния до них
  • Redfang - Инструмент для нахождения скрытых Bluetooth устройств

Некоторые атаки на Bluetooth

  • Blueprinting - Процесс футпринтинга(получения карты сети)
  • Bluebugging - Атакующий получает полный контроль над телефоном цели. Для автоматического исполнения этой атаки было разработано приложение Bloover
  • Bluemask - DoS атака против устройств Bluetooth, позволяет разсоединить устройства одной сети
  • Bluesnarfing - Эта атака крадет с устройств поддерживающих Bluetooth данные, такие как: текстовые сообщения, изображеия, чаты, SMS, адресная книга и информация календаря
  • Bluejacking - Атакующий отправляет жертве "визитку"-текстовое сообщение, и если пользователь добавит её в список контактов, взломщик получит возможность отправлять дополнительные сообщения

ВНИМАНИЕ! КРАЙНЕ РЕКОМЕНДУЮ К ПРОЧТЕНИЮ ТЕОРИЮ, ПЕРЕД ТЕМ КАК ЧИТАТЬ ДАЛЬШЕ, ДЛЯ ПОЛНОГО ПОНИМАНИЯ!!!

Практика:

Взлом с помощью электронного ключа MultiBlue

Данный электронный ключ способен подключиться к любому устройству Bluetooth и позволяет нам использовать клавиатуру своего компьютера для управления им. Данный ключ был разработан для того, чтобы пользователи могли управлять своими мобильными устройствами с помощью клавиатуры и мыши(Да, именно так, и я знаю что можно подключить клавиатуру и мышь к телефону при помощи otg кабеля и usb хаба, если телефон android'овский). Но, ему можно найти и другое применение... Купить данный ключ можно во многих магазинах, он стоит ~14$. Для взлома с помощью данного ключа нам нужен физческий доступ к устройству, но по мере увеличения наших знаний(и по мере чтения статьи), мы постепенно перейдем к управлению Bluetooth устройствами без физического доступа. И хотя рабочая дистанция ограничена 10-100 метрами, этого более чем достаточно для покрытия большинства домов, школ, офисов, кофеен, библиотек и прочих зданий, да и покрытие всегда можно увеличить при помощи антенны. Ну а теперь рассмотрим подключение к устройству android и управление им.

И так, hid(human interface display, устройство с человеческим интерфейсом) - это протокол для устройств, взаимодействующих напрямую с людьми, таких как клавиатуры, мониторы, микрофоны, и п.р.. С пмощью MultiBlue мы воспользуемся HID протоколом для отправки сигналов клавиатуры и мыши через Bluetooth в систему, являющуюся нашей целью.

И так, перейдем к взлому

MultiBlue поддерживает Windows и Mac OS X. Если у вас Linux, то им можно воспользоваться через Wine. Я буду использовать 7 окна, так как они мне больше по душе.

Этот электронный ключ не требует драйвера, и все что нужно, уже есть в самом ключе. По факту, ключ - это usb флэш-накопитель 4ГБ со встроенным bluetooth, и его нужно просто подключить к usb вашего ПК.

После подключение к ПК, он появится в системе как флэш-накопитель. Открыв его, вы увидите перед собой выбор - Win и Mac, выберите в зависимости от вашей системы, для Linux через Wine, соответственно выбираем Win. После этого произойдет запуск приложения MultiBlue

Теперь нужно перевести наше мобильное устройство-цель в режим видимости, в моем случае мобильное устройство будет видимо в течении 2 минут, этого хватит для соединения с лихвой

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

Так же можно было обратить внимание, что ключ называет себя "MultiBlue Dongle", что выглядит подозрительно, в дальнейшем мы рассмотрим как подделывать это имя, заменяя его чем-то менее подозрительным, чтобы пользователь думал, что подключается, например, к собственным устройствам.

И так, после того, как мы ввели ключ с телефона в нашу программу, MultiBlue покажет, что мы подключены к устройству

Теперь, мы можем управлять устройством посредством клавиатуры и мыши, то есть мы получили контроль над устройством, и можем делать с ним почти все что хотим. Например устаноовить вредоносное и/или шпионское ПО, а также можно открыть терминал в фоновом режиме, чтобы мы могли им пользоваться, когда устройство будет поблизости. Теперь надо найти способ управления устройством без физического доступа, и без MultiBlue.

Разведка

И так, чтобы взломать устройство без физического доступа, и не зная о нем почти ничего, необходимо произвести разведку. Мы будем использовать BlueZ для разведки.

BlueZ - стандартный стек протоколов Bluetooth, присутствующий почти во всех версиях Linux, в том числе и в Kali. До недавнео времени, BlueZ также являлся стандартным стеком протоколов Bluetooth для Android и Mac OS X.

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

И так, приступим.

Для начала пересядем с Windows на Linux машину, я буду использовать Kali Linux. Нам потребуется совместимый с Linux адаптер Bluetooth.

Теперь нам необходимо проверить, распознан ли наш адаптер, и включить его, для этого вводим команду "hciconfig".

Теперь, мы можем управлять устройством посредством клавиатуры и мыши, то есть мы получили контроль над устройством, и можем делать с ним почти все что хотим. Например устаноовить вредоносное и/или шпионское ПО, а также можно открыть терминал в фоновом режиме, чтобы мы могли им пользоваться, когда устройство будет поблизости. Теперь надо найти способ управления устройством без физического доступа, и без MultiBlue.

Разведка

И так, чтобы взломать устройство без физического доступа, и не зная о нем почти ничего, необходимо произвести разведку. Мы будем использовать BlueZ для разведки.

BlueZ - стандартный стек протоколов Bluetooth, присутствующий почти во всех версиях Linux, в том числе и в Kali. До недавнео времени, BlueZ также являлся стандартным стеком протоколов Bluetooth для Android и Mac OS X.

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

И так, приступим.

Для начала пересядем с Windows на Linux машину, я буду использовать Kali Linux. Нам потребуется совместимый с Linux адаптер Bluetooth.

Теперь нам необходимо проверить, распознан ли наш адаптер, и включить его, для этого вводим команду "hciconfig".

Как вы можете видеть на скриншоте, у нас есть Bluetooth адаптер с MAC адресом 10:AE:60:58:F1:37. BlueZ дал ему имя "hci0". Теперь включим его, введя команду "hciconfig hci0 up". Теперь наш адаптер готов к работе.

BlueZ включает в себя множество отличных инструментов для поиска устройств Bluetooth. Они входят в состав hcitool. Сначала воспользуемся функцией сканирования и найдем устройства Bluetooth в режиме Broadcast(режиме обнаружения). Для этого введем команду "hcitool scan"

На скриншоте вы можете видеть, что мы нашли два устройства: SCH-I535 и ANDROID BT, сейчас нам известны их имена и MAC адреса. Теперь получим больше информации, введя команду "hcitool inq"

К этим данным также относится смещение часов(часовой пояс) и класс устройства. Со списком кодов можно ознакомиться тут - https://www.bluetooth.org/en-us/specification/assigned-numbers/service-discovery

В дальнейшем, некоторые инструменты сделают это за нас.

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

Узнав Mac адрес устройства с помощью HciTool, мы можем воспользоваться протоколом обнаружения сервисов(SDP) для поиска сервисов у нашей цели. В BlueZ для этого есть инструмент sdptool, чтобы им воспользоваться, вводим команду "sdptool browse MAC_АДРЕС"

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

И так, после того, как мы потратили время, разбираясь в сканировании, наше устройство могло покинуть пределы рабочей станции, а также отключить режим обнаружения. Чтобы это проверить, воспользуеся командой "l2ping MACАДРЕС"

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


Также в Kali есть инструмент с графическим интерфейсом, такой как BTScanner, чтобы им воспользоваться, наберите в терминале команду "btscanner", после чего у вас откроется интерфейс программы. Чтобы подключиться к устройству, надо нажать клавишу "i" на клавиатуре.

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

Как вы можете заметить, BTScanner нашел еще одно устройство - "MINIJAMBOX by Jawb". Это устройство все это время находилось в зоне досягаемости, просто это колонка, которая уже была подключена к устройству, и поэтому она не отображалась на предыдущих сканерах, но BTScanner смог её обнаружить.

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

Можно обратить внимание на то, что данный инструмент показал класс этого устройства как "Phone/Smartphone", расшифровав код 0x5a020c.

Сниффинг Bluetooth с помощью BlueMaho

В Kali есть еще один инструмент с графическим интерфейсом, который можно использовать для сканирования Bluetooth. Он называется BlueMaho, и является встроенным инструментом для сканирования и взлома Bluetooth, сейчас мы будем использовать его только для сканирования. Для запуска инструмента необходимо ввести команду "bluemaho.py" На экране компьютера появится окно как на скриншоте

Нажимаем на кнопку "получить информацию SDP", а затем самую левую верхнюю кнопку.

BlueMaho произвел сканирование и нашел два Bluetooth устройства, а также отобразил информацию о них в нижнем окне

Можно обратить внимание, что инструмент показывает имя перовго устройства "MINIJAMBOX", а затем описывает его как "Аудио/Видео, профиль гарнитуры". Второе устройство называется "SCH-I535", и, как нам уже известно, относится к типу "Телефон/Смартфон"

Взлом Bluetooth Клавиатуры

Вернее, мы притворимся Bluetooth клавиатурой, для доступа к ПК.

Для данного взлома нам потребуется запустить сервис Bluetooth, при помощи команды "service bluetooth start".

Затем при помощи, например, BTScanner'а сканируем устройства.

Получаем такую картину.

Теперь, чтобы осуществить взлом, нам потребуется подменить MAC и Имя устройства, на данные нашей клавиатуры. Для этого используем утилиту spooftooph.

Теперь подменим наши данные при помощи команды вроде этой "spooftooph -i hci0 -a A0:02:DC:11:4F:85 -n Car537", с помощью аргумента "i" указываем имя интерфейса нашего bluetooth адаптера, с помощью аргумента "a" мы укзаываем MAC адрес устройства, и с помощью "n" мы указываем нужное нам имя Bluetooth устройства.

После этой команды, наш ПК будет транслировать Имя и MAC адрес такие же, как и у нашей клавиатуры. Теперь, чтобы подключится как клавиатура, нам потребуется Ключ соединения(Linking Key), который был получен ПК-целью и клавиатурой во время первого соединения. Можно подобрать его(очень долго), или взломать. Так же, есть такой вариант, что можно устроить DoS атаку на клавиатуру, и в момент её отключение подать запрос на подключение к ПК-цели с нашего ПК. И если вы успеете, то вы подключитесь к ПК, и, соответственно, можете управлять им, имитирую запросы Мыши, клавиатуры и Микрофона, ну и разумеется прослушивать оттуда звук, имитирую гарнитуру. Ну и разумеется мы можем передать файл по Bluetooth. Единственный минус, это то - что владелец клавиатуры не поймет, почему она не работает, и может решить заменить батареи у нее(на что нам все равно), а затем подключиться заново/заново воткнуть донгл клавиатуры/bluetooth адаптера(что вызовет у нас отключение, и придется ждать, когда он опять подключит клавиатуру к пк, и заново делать DoS атаку и подключаться, ну а если владелец сейчас не использует клавиатуру и/или ПК, то мы можем делать все, что хотим!

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


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


Так же, если цель не совсем уж старая, лучше изменять класс устройства нашего ПК с помощью команды "hciconfig АДАПТЕР class КОД_КЛАССА", вместо "АДАПТЕР" вы указываете имя своего адаптера, а вместо "КОД_КЛАССА" мы вставляем код из таблицы, приведенной выше.


Кстати для озабоченных, и не ищущих простых путей людей, можно произвести DoS атаку с помощью l2ping(пинга), только отправляю более тяжелые пакеты, при помощи команды "l2ping -i ИНТЕРФЕЙС -s 600 -f MACАДРЕС"(В аргументе "-i" мы указываем имя bluetooth адаптера, в аргументе "-s" задаем размер пакета, и в аргументе "-f" указываем MAC Адрес, который мы завалим пакетами)(При размере 600, вместо 44 бит мы посылаем 48 байт, что позволяет нам "Задудосить" устройство.


Кстати так же можно прослушать звук с Bluetooth гарнитуры с помощью утилиты CarWhisper.

Так же, если ваша цель - далеко не новый смартфон, а что-нибудь по старее, в виде, например, кнопочного телефона с поддержкой Bluetooth, то тут можно воспользоваться инструментом bluesnarfer, который с вероятностью 99% будет там работать(он работает не на всех новых устройствах). Например чтобы получить список адресной книги(телефонной), необходимо ввести команду "bluesnarfer -r 1-100 -b MACАДРЕС", чтобы получить имена контактов с первого по сотый(причем в том порядке, в котором контакты записаны)(В аргументе "-r" можно указать другой диапазон контактов), а затем ввести команду "bluesnarfer -s RC -r 1-100 -b MACАДРЕС", и получить все номера телефонной книги в том порядке, в котором они записаны(Так же можно в аргументе "-r" указать другой диапазон контактов), а затем сопоставить номера телефонов и имена. Так же можно в принципе и удалить любой/все номер(а) адресной книги, при помощи команды "bluesnarfer -w 1-100 -b MACАДРЕС"(Вместо 1-100 можно указать другой диапазон контактов для удаления).

Report Page