Компания Apple активно внедряет в массы идею о том, что теперь-то с приватностью данных пользователей их продукции всё в порядке. Но исследователи из Hexway выяснили, что стандартный и активно используемый механизм Bluetooth LE (BLE) позволяет узнать довольно много о твоем айфончике.
Если Bluetooth включен, то любой человек в радиусе действия сигнала может узнать:
- состояние устройства;
- информацию о заряде;
- имя устройства;
- состояние Wi-Fi;
- доступность буфера;
- версию iOS;
- номер телефона.
Скорее всего, это связано с новой функцией «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-пакета
Nearby-сообщения
Пример типов сообщений:
0x05 — Airdrop
0x07 — Airpods
0x10 — Nearby
0x0b — Watch Connection
0x0c — Handoff
0x0d — Wi-Fi Settings
0x0e — Hotspot
0x0f — Wi-Fi Join Network
Также из Nearby-пакетов можно получить статусы:
0x0b — Home screen
0x1c — Home screen
0x1b — Home screen
0x11 — Home screen
0x03 — Off
0x18 — Off
0x09 — Off
0x13 — Off
0x0a — Off
0x1a — Off
0x01 — Off
0x07 — Lock screen
0x17 — Lock screen
0x0e — Calling
0x5b — Home screen
0x5a — Off
В результате можно создать несложный анализатор BLE-пакетов:
Wi-Fi
При попытке подключения к Wi-Fi с устройства A рассылается пакет следующей структуры, содержащий первые три байта от SHA256-хешей AppleID (5-7 байты), номера телефона (8-11 байты), email (12-14 байты):
Предположительно, Apple устройства хешируют все контакты и сравнивают с полученными в advertise-пакете. При получении устройством B пакета с совпадающими у него хешами контактов устройство B предложит пароль подключения к сети устройству A.
Если сгенерировать таблицу хешей номеров телефона для конкретного региона (около нескольких миллионов), то на первые 3 байта хеша можно получить коллизию порядка нескольких десятков номеров на хеш. Проверить корректность номеров можно двумя способами:
- Часть номеров можно исключить, проверив их через HLR (HLR Lookup — Front Page — Index).
- Так как номер должен быть привязан к AppleID, то проверить можно через iMessage.
В любом случае, полученный набор номеров позволит достаточно эффективно деанонимизировать владельца (к примеру, далее применив методы социнженерии).
AirDrop
Apple AirDrop имеет три настройки приватности:
- Receiving Off (Отключено).
- Contacts Only (Только контакты).
- Everyone (Любой).
При запуске AirDrop рассылается пакет следующей структуры, содержащий по два байта хешей AppleID, email и номера телефона:
При этом AirDrop используется только для инициации передачи, для самой же передачи данных используется peer2peer-соединение по Wi-Fi (AWDL — Apple Wireless Direct Link).
Во время аутентификации отправитель отсылает идентификационные данные sender's record data для проверки настроек приватности получателем. В этом сообщении содержится полный SHA256-хеш отправителя. Таким образом, злоумышленник может отвечать на все чужие AirDrop BLE-запросы, получая полные хеши номеров.
Схема работы AirDrop:
Резюмируя
Рассмотрена только часть утечек информации, которая возможна с использованием 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
Комментарии (23)
Rober
14.08.2019 19:06доступность буфера;
Какого буфера? Обмена? Не понял, о чём этот пункт. Поясните кто-нибудь, пожалуйста.Vovanys
14.08.2019 20:38Да, того самого. Между iPhone и маком можно копировать вставлять из буфера обмена. Просто скопировал на айфоне в маке вставил и обратно.
dipierro
14.08.2019 20:41Буфера обмена, часть функции Handoff/Continuity. Само его содержимое зашифровано.
defuz
15.08.2019 01:04Мораль простая — хочешь надежности, сиди на стабильных релизах.
А так получается что хакеры взломали софт который в общем-то предназначался для тестирования а не для реального использования.
Mana_Banana
15.08.2019 06:45По мне, это не такая большая потеря, если функция «Найти без интернета» будет действительно работать отлично.
Хотя, лучшим решением, на мой взгляд, будет передача не перечисленных данных, а уникального кода на основе этих данных т.е. почта+номер телефона+*еще что-нибудь малоповторимое* сконвертированые в определённую последовательность символов.DerRotBaron
15.08.2019 14:21В обсуждении анонса этой возможности обсуждали, как в теории можно это реализовать без разглашения лишних данных в том числе в Apple.
Пока же все выглядит как предельное упрощение фингерпрнтинга человека по айфону, что в том числе плохо и потому, что многим привили мысль мол айфон это ещё и про privacy, в отличие от остальных смартфоноа
m1rabo
15.08.2019 10:06-1Телефоны можно взломать, связь слушает правительство, соседи из дома напротив читают по губам и записывают в специальную книжечку. Шапочка из фольги уже не защищает. Почтовый голубь двойной агент. Всё тлен.
boxolega
кошмарный кошмар… люди узнают мой уровень заряда и номер версии… звоните не первый канал! срочно!!!
itsecurity
Для социальной инженерии может очень пригодиться. Не уровень заряда, конечно, хотя и тут можно пофантазировать:)
Revertis
И вычислят номер телефона, его название. Вы это пропустили при чтении?
boxolega
Нет
Sugrob
Номер телефона вычислят только если вы отправите файл или подтвердите его получение от злоумышленника.
Revertis
Ага, значит чтобы избежать проблем, просто не будем пользоваться функцией. Окей, значит никаких проблем нет, они всё выдумали.
shifttstas
А зачем принимать Файлы от незнакомцев?
deseven
Не напоминает установку вирусов из apk на андроиде?
mOlind
Так у большинства стоит настройка. «Принимать файлы только от знакомых». Все остальные запросы с мусором даже появляться не будут. Без превью, без соблазнительных картинок и т.д.
Revertis
Значит пользуемся, ничего не боимся, но при попытке отправить что-то другу отдаём кому-то свой номер.
mOlind
Нет. Не при попытке отправить, а когда хотим принять и не номер даем, а настройку приватности AirDrop открываем на 5 минут.
Revertis
Я не так выразился — рассылаем в эфир хэш телефонного номера.
mOlind
И не только номера. Любопытно будет посмотреть на проверку атаки. Кто возьмет валидное пространство номеров телефонов для страны и попробует найти там номер по 3 байтам 32 байтного хэша. Интересно сколько там будет коллизий.
Antervis
обычно если кто-то и умудряется заполнить в информацию об устройстве что-то оригинальнее «iPhone 8», то это лучше не читать, если только отладкой не занимаешься. Скажем, довелось мне как-то глянуть на низ списка версий андроида, полученных от пользователей. Ничего полезнее чем «Вася гей» (хз какой, но какой-то наверняка же?) там не было.