Positive Technologies

Цифровое наследие SIM-карт

Цифровое наследие SIM-карт

Николай Анисеня

Николай Анисеня

Руководитель отдела перспективных технологий департамента анализа защищенности Positive Technologies

Яна Авезова

Яна Авезова

Старший аналитик направления аналитических исследований Positive Technologies

Введение

Сегодня большое количество онлайн-сервисов предлагают своим пользователям вход по номеру мобильного телефона. Сценарий простой: указывается свой номер, на него приходит СМС с одноразовым кодом, после введения кода появляется доступ к своему аккаунту. Такой способ авторизации постепенно приходит на замену привычным логинам и паролям, потому что это быстро и удобно — телефон всегда под рукой и нет необходимости вспоминать учетные данные. Таким образом, к номеру телефона пользователя оказываются привязанными десятки разнообразных сервисов: мессенджеры, соцсети, маркетплейсы, службы доставки и другие.

Рисунок 1. Вход по номеру телефона и коду из СМС

Рисунок 1. Вход по номеру телефона и коду из СМС

Давайте теперь представим, что по каким-то причинам пользователь перестал пользоваться номером телефона. Что произойдет? Спустя какое-то время бездействия (как правило, от 60 до 365 дней, в зависимости от используемого оператора и выбранного тарифного плана) конкретная SIM-карта будет заблокирована. Еще через какое-то время номер телефона вновь поступит в продажу, и его сможет приобрести другой пользователь. Что будет, если новый владелец попробует авторизоваться в онлайн-сервисе, где ранее с этим номером регистрировался прежний владелец?

Чтобы получить ответ на этот вопрос, мы решили провести эксперимент. Подробнее о том, что мы делали и какие результаты получили, читайте в этом отчете.

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

Резюме

  • Для 43% номеров, использованных в ходе эксперимента, обнаружены аккаунты, созданные прежними владельцами, причем для 37% номеров эти аккаунты были активными (не были заблокированы).
  • Каждое третье приложение (12 из 38) позволяло применить технику user enumeration; проверку на наличие аккаунтов удалось частично автоматизировать, что дало возможность сократить время проведения эксперимента.
  • Четыре аккаунта имели принадлежность к маркетплейсу.
  • Не была получена возможность доступа ни в один банковский аккаунт.
  • Только один из пяти мобильных операторов обнаруживал вредоносную активность и блокировал попытки входа.

User enumeration

Перед тем как описать ход эксперимента, немного поговорим о способе получения действующих логинов путем их перечисления (user enumeration). При попытке входа в некоторые сервисы при вводе номера телефона существующего пользователя можно увидеть сообщение «На ваш номер отправлено СМС с кодом». И наоборот, при вводе номера телефона, для которого учетная запись ранее не была создана, мы видим слова «Пользователь с таким номером не найден» или аналогичные по смыслу. Это позволяет сделать вывод, существует в системе аккаунт, привязанный к введенному номеру телефона, или нет. Аналогичные сообщения встречаются также в формах регистрации и при восстановлении пароля. С точки зрения безопасности то, что эти сообщения отличаются по содержанию, является недостатком, который позволяет гипотетическому злоумышленнику определить, какие аккаунты существуют, чтобы продолжить атаку. Такая проверка аккаунтов в приложениях, где этот недостаток присутствует, может быть автоматизирована с помощью специальных скриптов.

Рисунок 2. Пример сообщения о незарегистрированном аккаунте

Рисунок 2. Пример сообщения о незарегистрированном аккаунте

Кроме того, на этапе подготовки к атаке, еще до покупки SIM-карт, злоумышленники могут предварительно составить список номеров, для которых существуют аккаунты, что дополнительно повысит шансы на успешный улов: так они могут не покупать номера, на которые ранее не были зарегистрированы аккаунты.

Как проводили эксперимент

Мы составили список из 80 популярных в России сервисов и приложений. Среди них 56 допускают вход по номеру телефона и паролю из СМС. Половина таких приложений требуют ввести пароль, но позволяют сбросить его по коду из СМС. Для упрощения задачи мы исключили приложения, для которых не было браузерной версии. Кроме того, мы исключили из списка личные кабинеты мобильных операторов. В итоге осталось 38 приложений, причем 12 из них позволяли применить user enumeration, то есть узнать о существовании аккаунта даже без получения СМС.

Для удобства мы разделили приложения на категории. Четверть из них (24%) составили личные кабинеты на сайтах компаний (авиакомпании, такси, медицинские лаборатории и другие). Кроме того, мы включили ряд интернет-магазинов и аптек (16%), а также сервисы доставки готовой еды и продуктов питания (16%). В отдельную категорию мы выделили сервисы SSO (10%). Под сервисом SSO подразумевается сервис, предоставляющий единый аккаунт для всех приложений той или иной компании.

Рисунок 3. Категории онлайн-сервисов

Следующим этапом стала покупка SIM-карт. Было решено приобрести 100 SIM-карт у пяти крупных операторов связи. Для чистоты эксперимента 30 SIM-карт были куплены традиционным способом в салонах сотовой связи («белые»), еще 50 SIM-карт приобретены через каналы в Telegram («серые»), остальные 20 номеров планировалось взять в аренду через специализированные онлайн-сервисы1.

Когда был составлен список приложений и приобретены SIM-карты, пришло время приступить к эксперименту — проверить возможности для авторизации в каждом из 38 приложений с использованием имеющихся номеров. Мы посчитали, что если на проверку каждого аккаунта вручную тратить примерно 5 минут, то на проведение эксперимента потребуется около 13 суток. Чтобы сэкономить время, было решено купить SIM-бокс — специальное устройство для приема и передачи СМС и совершения звонков, позволяющее подключать и использовать сразу несколько (вплоть до сотен) SIM-карт одновременно. Для нашего эксперимента мы использовали устройство на восемь SIM-карт с поддержкой 2G, которое позволило нам принимать сообщения с паролями сразу на несколько номеров одновременно.

Для каждого номера телефона мы проверяли возможность аутентификации в приложениях из ранее составленного списка, используя формы входа или восстановления пароля. После опробования 20% номеров мы сократили список до 13 сервисов с самой высокой вероятностью успешного входа. Благодаря такой оптимизации и использованию SIM-бокса мы справились за один день. Затраты на проведение эксперимента включили стоимость SIM-бокса, всех SIM-карт, пополнение их баланса и оплату онлайн-приема СМС.

1 В итоге удалось приобрести только 15 вместо 20, таким образом всего было задействовано 95 номеров.

Номера и операторы

В ходе эксперимента было установлено, что почти половина (43%) номеров ранее уже использовалась для регистрации в сервисах из нашего списка. Для 37% всех номеров удалось найти активный аккаунт хотя бы в одном из сервисов, для 6% номеров ранее созданные аккаунты были заблокированы. Таким образом, найти незаблокированный аккаунт прежнего владельца получалось в каждом третьем случае. Среди тех номеров, которые ранее уже использовались для регистрации, в каждом четвертом случае (27%) подтверждена возможность входа в аккаунты прежних владельцев минимум в двух сервисах.

Рисунок 4. Результаты эксперимента (доля номеров)

Рисунок 5. Распределение номеров по количеству сервисов, в которые есть возможность войти с аккаунтом прежнего владельца

  • Продавцы «серых» SIM-карт, узнавая цель покупки, давали рекомендации по выбору операторов, номера телефонов которых лучше всего подходят для нашей задачи. Фактические результаты эксперимента подтвердили эти рекомендации.

Для двух операторов из пяти доля успешных подтверждений возможности авторизации оказалась выше, чем для остальных. Более половины номеров этих операторов (52% и 60% соответственно) могли дать возможность авторизации хотя бы в один сервис, в то время как для остальных трех этот показатель не превысил 40%. Один из пяти операторов, обнаружив активность, блокировал SIM-карты, в связи с чем успешная авторизация была возможна только в случае одного из 18 номеров этого оператора. Блокировка происходила довольно быстро — СМС с одноразовыми паролями переставали приходить спустя всего несколько попыток. Кроме того, было установлено, что при попытке входа в личный кабинет два из пяти операторов раскрывают Ф. И. О. человека, на которого оформлен номер, а значит злоумышленник, воспользовавшийся «серым» номером для проведения той или иной атаки, может в дальнейшем использовать полученные персональные данные.

Рисунок 6. Количество номеров с возможностью входа

В ходе эксперимента мы не выявили зависимости между потенциалом успешности авторизации и категорией SIM-карты.

Рисунок 7. Количество номеров с успешными входами по категориям SIM-карт

Про аккаунты

Всего удалось подтвердить возможность доступа к 57 аккаунтам прежних владельцев номеров телефонов. При этом ни в одном из исследованных случаев не была подтверждена возможность доступа к банковскому аккаунту.

Рисунок 8. Срез по аккаунтам

Рисунок 9. Категории сервисов, в отношении которых подтверждена возможность доступа к аккаунтам

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

Выводы и рекомендации

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

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

Для пользователей

  • Сохраняйте доступ к своим номерам телефонов, не теряйте SIM-карты.
  • Вовремя пополняйте баланс и совершайте минимум одно платное действие раз в три месяца: отправляйте СМС или делайте звонок.
  • Если доступ к номеру телефона утрачен и нет возможности своевременно его восстановить, перепривяжите ваши аккаунты к другому номеру, к которому у вас есть доступ.
  • Для критически важных приложений (мессенджеры, соцсети, онлайн-банки) дополнительно используйте альтернативный способ авторизации, если это возможно, например через электронную почту.
  • Настройте двухфакторную аутентификацию, используя генератор одноразовых паролей, например Google Authenticator. Откажитесь от входа через СМС, если это возможно.
  • Не выдавайте мобильным приложениям разрешения на чтение СМС.
  • Никому не сообщайте одноразовые пароли.
  • В случае подозрительной активности обратитесь в службу поддержки приложения или вашего оператора сотовой связи.

Для разработчиков приложений

  • Предоставьте пользователям возможность выбрать способ авторизации. Добавьте вход по электронной почте или по протоколу OAuth.
  • Не используйте СМС в качестве второго фактора аутентификации или добавьте опцию выбора генератора OTP в качестве второго фактора.
  • Не используйте СМС как замену паролям при однофакторной аутентификации.
  • Раз в три месяца запрашивайте у пользователей подтверждение, принадлежит ли им номер телефона.
  • Реализуйте безопасный процесс восстановления доступа к аккаунту в случае смены номера телефона. Помните, что этим же способом получить доступ могут воспользоваться и мошенники.
  • В формах регистрации, авторизации и восстановления пароля не должна отображаться информация о наличии пользователя с указанным номером телефона. Так злоумышленники не смогут перебирать номера телефонов отдельно от паролей.
  • Не допускайте восстановления пароля только по коду из СМС. Так вы даете злоумышленникам возможность игнорировать форму входа с логином, паролем и, возможно, вторым фактором. Передать ссылку на восстановление доступа через СМС или по электронной почте — более безопасный способ.
  • Отслеживайте, откуда пользователи входят в аккаунт. Системы безопасности должны реагировать на необычный IP-адрес или браузер.
  • Уведомляйте пользователя о попытках входа из необычных мест.
  • Предоставьте пользователям возможность просматривать и завершать активные сессии. Необходимо завершать все активные сессии при смене пароля.

Для мобильных операторов

  • Уведомляйте пользователей о скорой блокировке номера по электронной почте и по альтернативному номеру телефона (второй личный номер или номер доверенного лица). Лучше, чтобы таких уведомлений было несколько: за 30 дней, за две недели и непосредственно перед блокировкой.
  • Реализуйте возможность восстановления доступа к номеру телефона на сайте или в мобильном приложении. Ситуация, когда пользователи вынуждены звонить в службу поддержки или обращаться в салоны связи, усложняет этот процесс.