Когда-нибудь видели такое, что в социальных сетях ваша бывшая одноклассница Оля стала каким-то усатым Николаем? А в чужой групповой чат попадали по ошибке? Причем не просто какой-то спам, а реальный чат друзей, собирающихся на рыбалку или на день рождения? Может, получали сообщение в Telegram о новом пользователе с номером покойной бабушки Зины?
Что-то подобное может произойти после блокировки SIM-карты спустя определенный период бездействия (обычно от 60 до 365 дней в зависимости от оператора), когда номер вновь поступает в продажу.
А что произойдет, если новый владелец вашего прежнего номера попробует авторизоваться там, где ранее регистрировались вы? Чтобы ответить на этот вопрос, мы провели эксперимент.
Статья носит исключительно информационный характер и не является инструкцией или призывом к совершению противоправных действий. Наша цель — рассказать о существующих уязвимостях, которыми могут воспользоваться злоумышленники, предостеречь пользователей и дать рекомендации по защите личной информации в интернете. Авторы не несут ответственности за использование опубликованной информации. Помните, что нужно следить за защищенностью своих данных.
Эксперимент. Начало
Изначально мы составили список из 80 популярных в России сервисов и приложений. Среди них 56 были со входом по номеру телефона и паролю из СМС-сообщения. Половина таких приложений требовали ввести пароль, но позволяли сбросить его по коду из СМС-сообщения. Для упрощения задачи мы исключили приложения, для которых не было браузерной версии, и личные кабинеты мобильных операторов.
В итоге осталось 38 приложений, которые для удобства мы разделили на девять категорий. Больше половины из них составили личные кабинеты на сайтах компаний (24%), интернет-магазины и аптеки (16%) и сервисы доставки готовой еды и продуктов питания (16%). В отдельную категорию мы выделили сервисы SSO (10%) — они предоставляют единый аккаунт для всех приложений той или иной компании.
Следующим этапом стала покупка SIM-карт. Было решено приобрести 100 SIM-карт у пяти крупных операторов связи. Для чистоты эксперимента 30 SIM-карт были куплены традиционным способом в салонах сотовой связи («белые»), еще 50 SIM-карт приобретены через каналы в Telegram («серые»), остальные 20 номеров планировалось взять в аренду через специализированные онлайн-сервисы (виртуальные). В итоге удалось приобрести только 15 виртуальных SIM-карт вместо 20. Таким образом, всего было задействовано 95 номеров.
Когда был составлен список приложений и приобретены SIM-карты, пришло время приступить к эксперименту — проверить возможность авторизации в каждом из 38 приложений. Мы посчитали, что если на проверку каждого аккаунта вручную тратить примерно 5 минут, то на проведение эксперимента потребуется около 13 суток 😱 Чтобы сэкономить время, было решено купить SIM box — специальное устройство для приема и передачи СМС-сообщений и совершения звонков. Для нашего эксперимента мы использовали устройство на восемь SIM-карт с поддержкой 2G, что позволило нам принимать сообщения с паролями сразу на несколько номеров одновременно.
С каждым номером телефона мы проверяли возможность аутентификации в приложениях из ранее составленного списка, используя формы входа или восстановления пароля. После проверки 20% номеров мы сократили список до 13 сервисов с самой высокой вероятностью успешного входа. Благодаря такой оптимизации и использованию SIM box мы справились за один день.
Полезная брешь
Отдельно отметим, что каждое третье исследованное приложение (12 из 38) содержало уязвимость User Enumeration, которая позволила частично автоматизировать эксперимент и сократить время на его проведение.
В некоторых сервисах при вводе номера телефона существующего пользователя можно было увидеть сообщение «На ваш номер отправлено СМС-сообщение с кодом». И наоборот, при вводе номера телефона, для которого учетная запись ранее не была создана, мы видели слова «Пользователь с таким номером не найден» или аналогичные по смыслу. Из этого мы делали вывод, существует ли в системе аккаунт, привязанный к введенному номеру телефона, или нет. Аналогичные сообщения встречались также в формах регистрации и при восстановлении пароля. С точки зрения безопасности разное содержание сообщений — недостаток, который позволяет гипотетическому злоумышленнику определить, какие аккаунты существуют, чтобы продолжить атаку. Проверку аккаунтов в приложениях с таким недостатком можно автоматизировать.
Кроме того, на этапе подготовки к атаке, еще до покупки SIM-карт, злоумышленники могут предварительно составить список номеров, для которых существуют аккаунты, что дополнительно повысит шансы на успешный улов: они могут не покупать номера, на которые ранее не были зарегистрированы аккаунты.
Не пропадать же ̶д̶о̶б̶р̶у̶ номерам
В ходе эксперимента мы выяснили, что почти половина (43%) номеров ранее уже использовались для регистрации в сервисах из нашего списка. Найти незаблокированный аккаунт прежнего владельца получалось в каждом третьем случае: для 37% всех номеров удалось найти активный аккаунт хотя бы в одном из сервисов, для 6% номеров ранее созданные аккаунты были заблокированы. Среди тех номеров, которые уже использовались для регистрации, в каждом четвертом случае (27%) подтвердилась возможность входа в аккаунты прежних владельцев минимум в двух сервисах.
Продавцы «серых» SIM-карт, узнавая цель покупки, давали советы по выбору операторов, номера телефонов которых лучше всего подходят для нашей задачи. Результаты эксперимента подтвердили их рекомендации.
У двух операторов из пяти доля успешных подтверждений возможности авторизации оказалась выше, чем у остальных. Один из пяти операторов, обнаружив активность, блокировал SIM-карты, поэтому успешная авторизация оказалась возможной только с одним из 18 номеров этого оператора. Блокировка происходила довольно быстро — СМС-сообщения с одноразовыми паролями переставали приходить после нескольких попыток.
Кроме того, было установлено, что при попытке входа в личный кабинет два оператора из пяти раскрывают Ф.И.О. человека, на которого оформлен номер. Это значит, что злоумышленник, воспользовавшийся «серым» номером для проведения той или иной атаки, может в дальнейшем использовать полученные персональные данные.
В ходе эксперимента мы не выявили зависимости между возможностью успешной авторизации и категорией SIM-карты («серая», «белая» и виртуальная).
Ценные находки
Всего удалось подтвердить возможность доступа к 57 аккаунтам прежних владельцев номеров телефонов. При этом ни в одном из исследованных случаев не была подтверждена возможность доступа к банковскому аккаунту.
В ходе эксперимента мы заметили, что если номер ранее не использовался для регистрации в социальных сетях, то и в других сервисах аккаунты с этим номером обнаружены не были. Это значит, что злоумышленники могут использовать этот факт для оптимизации массовых атак на пользователей.
Что в итоге
Потеря телефона или длительная заграничная командировка — основные причины, по которым владелец номера мобильного телефона может потерять к нему доступ. Потеря номера — это одновременно и утрата доступа к онлайн-сервисам и приложениям, к которым этот номер был привязан. А это, в свою очередь, дает почву для атак злоумышленников, как только ваш прежний номер телефона вновь поступит в продажу. Мы подготовили рекомендации для абонентов, разработчиков приложений и операторов мобильной связи, которые помогут повысить ваш уровень защищенности.
Рекомендации
🤳 Пользователям:
-
Сохраняйте доступ к своим номерам телефонов, не теряйте SIM-карты.
-
Вовремя пополняйте баланс и совершайте минимум одно платное действие раз в три месяца: отправьте СМС-сообщение или сделайте звонок.
-
Если доступ к номеру телефона утрачен и нет возможности своевременно его восстановить, перепривяжите ваши аккаунты к другому номеру, к которому у вас есть доступ.
-
Для критически важных приложений (мессенджеров, соцсетей, онлайн-банков) дополнительно используйте альтернативный способ авторизации, если это возможно, например через электронную почту.
-
Настройте двухфакторную аутентификацию, используя генератор одноразовых паролей, например Google Authenticator. Откажитесь от входа через код в СМС-сообщении, если это возможно.
-
Не выдавайте мобильным приложениям разрешения на чтение СМС-сообщений.
-
Никому не сообщайте одноразовые пароли.
-
В случае подозрительной активности обратитесь в службу поддержки приложения или вашего оператора сотовой связи.
✍️ Разработчикам приложений:
-
Предоставьте пользователям возможность выбрать способ авторизации. Добавьте вход по электронной почте или по протоколу OAuth.
-
Не используйте СМС-сообщение в качестве второго фактора аутентификации или добавьте опцию выбора генератора OTP в качестве второго фактора.
-
Не используйте СМС-сообщение как замену паролям при однофакторной аутентификации.
-
Раз в три месяца запрашивайте у пользователей подтверждение принадлежности им номера телефона.
-
Реализуйте безопасный процесс восстановления доступа к аккаунту в случае смены номера телефона.
-
В формах регистрации, авторизации и восстановления пароля не должна отображаться информация о наличии пользователя с указанным номером телефона.
-
Не допускайте восстановление пароля только по коду из СМС-сообщения.
-
Отслеживайте, откуда пользователи входят в аккаунт. Необычный IP-адрес или браузер должны вызывать подозрения у систем безопасности.
-
Уведомляйте пользователя о попытках входа из необычных мест.
-
Предоставьте пользователям возможность просматривать и завершать активные сессии. Необходимо завершать все активные сессии при смене пароля.
📲 Мобильным операторам:
-
Уведомляйте пользователей о скорой блокировке номера по электронной почте и по альтернативному номеру телефона.
-
Реализуйте возможность восстановить доступ к номеру телефона на сайте или в мобильном приложении.
Сталкивались ли вы с неожиданной сменой владельца номера? Может, это были вы сами?
Делитесь своими историями в комментариях ⬇️
Николай Анисеня
Руководитель отдела перспективных технологий, Positive Technologies
Яна Авезова
Старший аналитик, Positive Technologies
Автор: ptsecurity