Николай Анисеня
Руководитель отдела перспективных технологий департамента анализа защищенности Positive Technologies
Яна Авезова
Старший аналитик направления аналитических исследований Positive Technologies
Николай Анисеня
Руководитель отдела перспективных технологий департамента анализа защищенности Positive Technologies
Яна Авезова
Старший аналитик направления аналитических исследований Positive Technologies
Сегодня большое количество онлайн-сервисов предлагают своим пользователям вход по номеру мобильного телефона. Сценарий простой: указывается свой номер, на него приходит СМС с одноразовым кодом, после введения кода появляется доступ к своему аккаунту. Такой способ авторизации постепенно приходит на замену привычным логинам и паролям, потому что это быстро и удобно — телефон всегда под рукой и нет необходимости вспоминать учетные данные. Таким образом, к номеру телефона пользователя оказываются привязанными десятки разнообразных сервисов: мессенджеры, соцсети, маркетплейсы, службы доставки и другие.
Давайте теперь представим, что по каким-то причинам пользователь перестал пользоваться номером телефона. Что произойдет? Спустя какое-то время бездействия (как правило, от 60 до 365 дней, в зависимости от используемого оператора и выбранного тарифного плана) конкретная SIM-карта будет заблокирована. Еще через какое-то время номер телефона вновь поступит в продажу, и его сможет приобрести другой пользователь. Что будет, если новый владелец попробует авторизоваться в онлайн-сервисе, где ранее с этим номером регистрировался прежний владелец?
Чтобы получить ответ на этот вопрос, мы решили провести эксперимент. Подробнее о том, что мы делали и какие результаты получили, читайте в этом отчете.
Перед тем как описать ход эксперимента, немного поговорим о способе получения действующих логинов путем их перечисления (user enumeration). При попытке входа в некоторые сервисы при вводе номера телефона существующего пользователя можно увидеть сообщение «На ваш номер отправлено СМС с кодом». И наоборот, при вводе номера телефона, для которого учетная запись ранее не была создана, мы видим слова «Пользователь с таким номером не найден» или аналогичные по смыслу. Это позволяет сделать вывод, существует в системе аккаунт, привязанный к введенному номеру телефона, или нет. Аналогичные сообщения встречаются также в формах регистрации и при восстановлении пароля. С точки зрения безопасности то, что эти сообщения отличаются по содержанию, является недостатком, который позволяет гипотетическому злоумышленнику определить, какие аккаунты существуют, чтобы продолжить атаку. Такая проверка аккаунтов в приложениях, где этот недостаток присутствует, может быть автоматизирована с помощью специальных скриптов.
Кроме того, на этапе подготовки к атаке, еще до покупки SIM-карт, злоумышленники могут предварительно составить список номеров, для которых существуют аккаунты, что дополнительно повысит шансы на успешный улов: так они могут не покупать номера, на которые ранее не были зарегистрированы аккаунты.
Мы составили список из 80 популярных в России сервисов и приложений. Среди них 56 допускают вход по номеру телефона и паролю из СМС. Половина таких приложений требуют ввести пароль, но позволяют сбросить его по коду из СМС. Для упрощения задачи мы исключили приложения, для которых не было браузерной версии. Кроме того, мы исключили из списка личные кабинеты мобильных операторов. В итоге осталось 38 приложений, причем 12 из них позволяли применить user enumeration, то есть узнать о существовании аккаунта даже без получения СМС.
Для удобства мы разделили приложения на категории. Четверть из них (24%) составили личные кабинеты на сайтах компаний (авиакомпании, такси, медицинские лаборатории и другие). Кроме того, мы включили ряд интернет-магазинов и аптек (16%), а также сервисы доставки готовой еды и продуктов питания (16%). В отдельную категорию мы выделили сервисы SSO (10%). Под сервисом SSO подразумевается сервис, предоставляющий единый аккаунт для всех приложений той или иной компании.
Следующим этапом стала покупка 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%) подтверждена возможность входа в аккаунты прежних владельцев минимум в двух сервисах.
Для двух операторов из пяти доля успешных подтверждений возможности авторизации оказалась выше, чем для остальных. Более половины номеров этих операторов (52% и 60% соответственно) могли дать возможность авторизации хотя бы в один сервис, в то время как для остальных трех этот показатель не превысил 40%. Один из пяти операторов, обнаружив активность, блокировал SIM-карты, в связи с чем успешная авторизация была возможна только в случае одного из 18 номеров этого оператора. Блокировка происходила довольно быстро — СМС с одноразовыми паролями переставали приходить спустя всего несколько попыток. Кроме того, было установлено, что при попытке входа в личный кабинет два из пяти операторов раскрывают Ф. И. О. человека, на которого оформлен номер, а значит злоумышленник, воспользовавшийся «серым» номером для проведения той или иной атаки, может в дальнейшем использовать полученные персональные данные.
В ходе эксперимента мы не выявили зависимости между потенциалом успешности авторизации и категорией SIM-карты.
Всего удалось подтвердить возможность доступа к 57 аккаунтам прежних владельцев номеров телефонов. При этом ни в одном из исследованных случаев не была подтверждена возможность доступа к банковскому аккаунту.
В ходе эксперимента мы заметили, что если номер ранее не использовался для регистрации в социальных сетях, то и в других сервисах аккаунты с данным номером обнаружены не были. Это значит, что злоумышленники могут использовать этот факт для оптимизации массовых атак на пользователей.
Потеря телефона, переезд, длительная заграничная командировка — вот лишь несколько причин, по которым владелец номера мобильного телефона может потерять к нему доступ. На первый взгляд, проблема не представляет серьезной опасности, потому что в случае утраты номера можно легко приобрести новый. Действительно, сегодня покупка SIM-карты обойдется вам всего лишь в несколько сотен рублей. Сообщить о смене номера телефона своим родственникам, друзьям и коллегам можно за пару минут с помощью одной рассылки по списку контактов.
Однако немногие помнят, что, теряя доступ к номеру телефона, они теряют и доступ к своим аккаунтам в онлайн-сервисах и приложениях, где ранее регистрировались с этим номером. Как показали результаты нашего эксперимента, это дает почву для атак злоумышленников, как только прежний номер вновь поступит в продажу. В связи с этим мы подготовили ряд рекомендаций для абонентов, разработчиков приложений и операторов мобильной связи, которые помогут повысить ваш уровень защищенности.