Синхронизация мессенджера с контактами из адресной книги (contact discovery) — очень удобная функция. Когда новый человек ставит приложение, то в него автоматически добавляется большой список контактов, а если кто-то впервые установил мессенджер, то уведомление об этом приходит всем его знакомым. К сожалению, данную функцию могут использовать государственные службы и другие злоумышленники для выслеживания людей. Существующие методы защиты пока не очень эффективны.
Масштаб утечек оценили специалисты из Вюрцбургского университета и Дармштадтского технического университета (Германия), который провели самое масштабное в истории исследование с краулингом телефонных номеров в трёх мессенджерах: WhatsApp, Telegram и Signal. Результаты неутешительные: WhatsApp и Signal сливают номера пользователей в большом масштабе.
Хотя у Telegram очень жёсткие лимиты на количество запросов к API, он тоже не полностью защищён.
Протоколы пересечения закрытых множеств
Для поиска по контактам без раскрытия информации предназначены криптографические протоколы пересечения закрытых множеств (private set intersection). Эта техника вычисляет пресечение входного множества одной стороны («клиент») с входным множеством второй стороны («сервер»), так что клиенту известен только набор пересечений, а серверу известен только размер входного набора клиента.
Однако эти протоколы в настоящее время недостаточно эффективны для мобильных приложений с миллиардами пользователей. Кроме того, PSI всё равно не решает абсолютно всех вопросов конфиденциальности, поскольку не может предотвратить атаки методом перебора номеров.
Утечка социального графа
На прошлогодней конференции по компьютерной безопасности USENIX Security 2019 был представлен доклад с доказательством, что многие мобильные мессенджеры (в том числе WhatsApp) облегчают обнаружение контактов, загружая на сервер все контакты из адресной книги пользователя, и впоследствии хранят их на сервере, даже если совпадение не найдено. Благодаря этому сервис может уведомлять пользователя о новых зарегистрированных контактах, а также строить полный социальный граф каждого человека. Эти графы дополняются информацией из других источников. Главная проблема конфиденциальности заключается в том, что контактные данные могут утечь в открытый доступ и использоваться для мошенничества, дискриминации, шантажа, вреда репутации или полицейского расследования. Сервер также может быть скомпрометирован, что приводит к раскрытию конфиденциальной информации, даже если разработчики мессенджера сами не продавали накопленную базу.
Чтобы защититься от этой угрозы, некоторые мобильные приложения (включая Signal) хэшируют контакты. К сожалению, низкая энтропия телефонных номеров позволяет легко обратить (расшифровать) хэши, поэтому такая защита неэффективна.
Краулинг
Но основной метод сбора контактных данных — это краулинг. Поскольку в сервисах обычно нет ограничения на регистрацию новых пользователей, то вы можете зарегистрировать любое количество фейковых аккаунтов со случайным набором контактов в адресной книге. Таким образом вы проверяете наличие в базе каждого телефонного номера — и собираете доступную информацию на их владельцев.
Полностью блокировать такую атаку сервисы не в состоянии, поскольку у пользователей должна быть возможность запрашивать с сервера информацию о контактах. Единственный метод защиты — ограничение количества запросов (см. таблицу ниже в разделе с описанием атаки).
С помощью краулинга собирается база пользователей. Кроме телефонного номера, эта база может включать и другую информацию, которую пользователь указал о себе и открыл для всеобщего обозрения. Какие именно сведения попадут в базу — зависит от настроек приватности. Поскольку абсолютное большинство пользователей не изменяет настройки по умолчанию, этот аспект тоже находится под контролем разработчиков мессенджера.
Предыдущие научные работы показали, что отслеживая метаданные пользователей в мессенджерах (время появления в онлайне), можно построить точные модели поведения.
Сопоставление такой информации с другими социальными сетями и общедоступными источниками данных позволяет третьим лицам построить ещё более детальные профили.
В коммерции такие знания используются для таргетированной рекламы или мошенничества, с персональной точки зрения — для шантажа или планирования преступления, а с точки зрения государства — для преследования граждан. Так власти Гонконга вычисляли пользователей, которые состоят в протестных группах Telegram. Данные нескольких тысяч пользователей телеграм-канала были опубликованы в России в 2019 году (как показало расследование, источником данных является МВД).
Известно, что для краулинга российских пользователей работает программа-деанонимизатор Insider Telegram. Разработчики говорят, что перебор номеров позволил составить базу из более чем 10 млн пользователей. Сервис якобы показывает, какой номер телефона соответствует аккаунту Telegram.
Insider Telegram работает в составе системы «Демон Лапласа» (только для юрлиц и государственных органов), ходят слухи об аналогичной системе «Криптоскан» и других разработках.
Есть свидетельства, что силовые структуры Беларуси тоже начинают использовать аналогичные техники краулинга, как в России, поскольку сейчас Telegram стал основным инструментом общения у граждан.
Атака на мессенджеры: результаты
Немецкие исследователи в своей научной работе продемонстрировали два вида атак на мессенджеры:
- обращение хэша: создание больших словарей со всеми возможными значениями хэшей для всех телефонных номеров в мире, брутфорс в hashcat, радужные таблицы новой конструкции.
- краулинг: в течение нескольких недель исследователи смогли проверить 10% всех номеров мобильных телефонов США в WhatsApp и 100% в Signal. Результаты показаны в таблице ниже.
Сравнение мессенджеров
Signal | Telegram | ||
---|---|---|---|
Метод раскрытия контактов | Чистым текстом | Хэш | Чистым текстом |
Лимиты сканирования | 60 тыс. в день | 120 тыс. в день | 5 тыс. + 100 в день |
Метод краулинга | UI Automator | (Старые) API | API |
Проверено американских номеров | 46,2 млн | 505,7 млн | 0,1 млн |
Доля от общего количества американских номеров | 10% | 100% | менее 0,02% |
Процент успеха для случайного номера | 9,8% | 0,5% | 0,9% |
Найдено американских пользователей | 5,0 млн | 2,5 млн | 908 |
Всего американских пользователей (оценка) | 49,6 млн | 2,5 млн | 4,6 млн |
Настройки приватности по умолчанию: | |||
Картинка профиля | Публичная | Явная команда поделиться | Публичная |
Статус | Публичный | — | Публичный |
Последний раз в онлайне | Публичный | — | Публичный |
Опция скрыть нахождение в онлайне | Нет | Есть | Есть |
Опция отключить поиск по контактам | Нет | Нет | Есть |
Для краулинга исследователи использовали скромные ресурсы:
- бесплатное приложение Hushed для регистрации клиентов с новыми телефонными номерами;
- подписка VPN для смены IP-адресов;
- один ноутбук с эмуляторами нескольких Android-устройств.
Для краулинга контактов WhatsApp в эмуляторе запускалось официальное приложение, с интерфейсом которого взаимодействовал фреймворк UI Automator. В адресную книгу устройства для начала вставили 60 000 телефонных номеров. Если кто-то из них зарегистрирован в WhatsApp, то извлекались данные его профиля. Новые аккаунты WhatsApp регистрировались в ручном режиме через фейковые телефонные номера Hushed.
Коммуникация с Telegram производилась через официальную библиотеку TDLib, которая выпускается для многих языков и платформ. Любое приложение можно выдать за клиент Telegram, если интегрировать библиотеку TDLib и получить аутентификационный токен, что делается с минимальными усилиями.
Для Signal был написан скрипт Python для отправки запросов на регистрацию и поиска контактов.
Исследователи выяснили лимиты на количество запросов в каждом мессенджере, а также ряд других интересных фактов. Например, что Telegram API раскрывает конфиденциальные метаданные, в том числе о телефонах, не зарегистрированных в Telegram и о количестве пользователей, у которых в адресной книге есть этот незарегистрированный номер (см. описание переменной
importer_count
в документации Telegram API).WhatsApp и Telegram передают контактную информацию открытым текстом (по зашифрованным каналам). WhatsApp хранит номера зарегистрированных пользователей на серверах в открытом виде, а номера незарегистрированных пользователей хэширует в MD5.
Signal не хранит контакты из адресных книг пользователей на сервере. Вместо этого каждый клиент периодически отправляет на сервер хэши всех своих контактов для сверки с базой зарегистрированных пользователей. Но эти хэши легко расшифровать.
Выводы
В научной работе исследователи количественно оценили усилия, злоумышленникам для сбора конфиденциальных данных пользователей в большом масштабе. К сожалению, это по-прежнему возможно даже с относительно скромными ресурсами для атаки.
Сейчас у 50% пользователей WhatsApp фотография аккаунта выложена в открытый доступ, а у 90% открыта информация «О себе». Интересно, что у 40% пользователей защищённого и приватного мессенджера Signal имеются полностью открытые профили в WhatsApp.
До публикации этой работы результаты были отправлены в WhatsApp, Signal и Telegram. Компания Signal признала проблему, уменьшила лимиты на количество запросов и пообещала внедрить другие методы защиты от краулинга. Facebook выплатил исследователям вознаграждение за найденные уязвимости и развернул улучшенную защиту для синхронизации контактов WhatsApp. Наконец, Telegram разработал дополнительные контрмеры против скрапинга данных в пределах установленных лимитов. Теперь система пытается определить краулинг базы номеров по специфическим признакам — и блокирует его после 20-100 совпадений вместо 5000.
На сегодняшний день Telegram лучше всех мессенджеров борется с краулингом пользователей. После гонконгских протестов 2019 года с утечкой персональных данных юзеров протестных групп в Telegram были установлены жёсткие лимиты и таймауты, которые делают краулинг очень сложной технической задачей.
По мнению авторов, в настоящее время наиболее эффективная мера защиты для пользователей заключается в пересмотре настроек конфиденциальности. Крайне нежелательно оставлять значения по умолчанию. Для максимальной безопасности в условиях государственной слежки лучше регистрировать аккаунт в мессенджере на фейковый номер.
На правах рекламы
Безопасные VDS для заказа которых нужен только ваш email, никаких других личных данных! Используем новейшее брендовое железо, каждый сервер надёжно защищён от DDoS-атак.