Ну Apple, BLEee

Компания Apple активно внедряет в массы идею о том, что теперь-то с приватностью данных пользователей их продукции всё в порядке. Но исследователи из Hexway выяснили, что стандартный и активно используемый механизм Bluetooth LE (BLE) позволяет узнать довольно много о твоем айфончике.

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


  • состояние устройства;
  • информацию о заряде;
  • имя устройства;
  • состояние Wi-Fi;
  • доступность буфера;
  • версию iOS;
  • номер телефона.

m9qz-do9oa75iyybzwvj4du78cu.png

Скорее всего, это связано с новой функцией «Find my», анонсированной в этом году (Apple’s 'Find My' Feature Uses Some Very Clever Cryptography | WIRED). Ее суть заключается в создании экосистемы Apple устройств, обменивающихся друг с другом информацией по BLE для возможности отслеживания украденных и потерянных устройств без использования GPS и мобильных каналов связи даже в выключенном состоянии. Хотя и было заявлено, что


…it built the feature on a unique encryption system carefully designed to prevent exactly that sort of tracking—even by Apple itself
Перевод: [Find my] использует уникальную криптосистему, разработанную для предотвращения отслеживания [другими людьми], в том числе и Apple.


Примеры актуальных векторов атак


AirDrop

Эта технология позволяет обмениваться файлами между устройствами Apple без интернет-соединения. При каждом «расшаривании» устройство посылает хеш твоего телефона в SHA256. Таким образом, создав базу номеров телефонов (хеш: номер телефона), можно заняться вполне эффективной ловлей телефонов в многолюдных местах… и отправлять их владельцам персонализированные сообщения через iMessage (имя владельца можно получить через TrueCaller или из имени устройства). Профит для магазинов более чем очевиден: рассылка спама всем мимо проходящим.


Получение Wi-Fi-паролей

При подключении к Wi-Fi-сети Apple устройство отправляет широковещательный запрос, и «дружественное» Apple устройство может помочь тебе получить доступ к данной сети, если этого захочет пользователь. Если получить по 3 байта хешей одного сотрудника и при попытке подключения к корпоративной сети сделать бродкаст с полученными данными, то, возможно, другой сотрудник окажется очень добрым и, увидев знакомое имя в запросе, поделится с тобой паролем.


Как это работает


Анализ BLE-пакетов

Модифицировав скрипты из пакета py-bluetooth-utils, можно просмотреть сниффер BLE-трафика. Apple использует ADV_IND-сообщения для отправки статуса устройства.

Структура advertise-пакета

qnartgyw8poy82dp28fuyrmwtqm.png


Nearby-сообщения

Пример типов сообщений:
0×05 — Airdrop
0×07 — Airpods
0×10 — Nearby
0×0b — Watch Connection
0×0c — Handoff
0×0d — Wi-Fi Settings
0×0e — Hotspot
0×0f — Wi-Fi Join Network

Также из Nearby-пакетов можно получить статусы:
0×0b — Home screen
0×1c — Home screen
0×1b — Home screen
0×11 — Home screen
0×03 — Off
0×18 — Off
0×09 — Off
0×13 — Off
0×0a — Off
0×1a — Off
0×01 — Off
0×07 — Lock screen
0×17 — Lock screen
0×0e — Calling
0×5b — Home screen
0×5a — Off

В результате можно создать несложный анализатор BLE-пакетов:

yb46hphbjtrmnws1ll1b2njgek4.png


Wi-Fi

При попытке подключения к Wi-Fi с устройства A рассылается пакет следующей структуры, содержащий первые три байта от SHA256-хешей AppleID (5–7 байты), номера телефона (8–11 байты), email (12–14 байты):

895cww-dhaj6v9kvfjmxhcsjii8.png

Предположительно, Apple устройства хешируют все контакты и сравнивают с полученными в advertise-пакете. При получении устройством B пакета с совпадающими у него хешами контактов устройство B предложит пароль подключения к сети устройству A.

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


  1. Часть номеров можно исключить, проверив их через HLR (HLR Lookup — Front Page — Index).
  2. Так как номер должен быть привязан к AppleID, то проверить можно через iMessage.

В любом случае, полученный набор номеров позволит достаточно эффективно деанонимизировать владельца (к примеру, далее применив методы социнженерии).


AirDrop

Apple AirDrop имеет три настройки приватности:


  1. Receiving Off (Отключено).
  2. Contacts Only (Только контакты).
  3. Everyone (Любой).

При запуске AirDrop рассылается пакет следующей структуры, содержащий по два байта хешей AppleID, email и номера телефона:

gszpebo9vd4ndcd9volhmxudpea.png

При это AirDrop используется только для инициации передачи, для самой же передачи данных используется peer2peer-соединение по Wi-Fi (AWDL — Apple Wireless Direct Link).

Во время аутентификации отправитель отсылает идентификационные данные sender’s record data для проверки настроек приватности получателем. В этом сообщении содержится полный SHA256-хеш отправителя. Таким образом, злоумышленник может отвечать на все чужие AirDrop BLE-запросы, получая полные хеши номеров.

Схема работы AirDrop:

bdtwpldckibjre2qd2nrltpkuti.png


Резюмируя

Рассмотрена только часть утечек информации, которая возможна с использованием BLE. На данный момент сложно назвать это уязвимостью, скорее, плохо продуманной реализацией новой экосистемы Apple. О чем в принципе они и сами заявили:


Apple warns that it’s still a somewhat simplified version of the Find My protocol, and that the system is still subject to change before it’s actually released in MacOS Catalina and iOS 13 later this year. ©
WIRED
Перевод: Apple предупредила, что на данный момент используется упрощенная версия Find My протокола и она подлежит доработке в будущих релизах ближе к концу года.

На данный момент нет каких-либо способов предотвращения данных утечек информации, кроме как отключения Bluetooth. При этом такое поведение свойственно iOS версий 10.3.1 и выше (включая iOS 13 beta). Более старые устройства (до iPhone 6s) также используют данный функционал, но с ограниченным числом сообщений, возможно, для экономии заряда батареи.


Ссылки

GitHub — hexway/apple_bleee: Apple BLE research
Apple bleee. Everyone knows What Happens on Your iPhone — hexway

© Habrahabr.ru