Безопасность Телеграм: исследование на право владения аккаунтом
0xdc51
January 14th, 2022
  • Суть: исследование вопроса — кто же на самом деле владеет Телеграм-аккаунтом с включенной двухфакторной аутентификацией. Получивший доступ к SMS/звонкам SIM-карты или имеющий пароль второго фактора.

  • Результаты: В выводах будут представлены актуальные на данный момент сведения касаемо права владения на телеграм-аккаунт с 2ФА и даны рекомендации по улучшению безопасности таких аккаунтов.

  • Целевая аудитория: владельцы телеграм-аккаунтов, для которых аккаунт представляет ценность.

Подробности: В Апреле 2015 года (https://telegram.org/blog/sessions-and-2-step-verification) в мессенджер была добавлена возможность защиты аккаунта с помощью второго фактора аутентификации — пароля, в дополонение к коду, полученному по SMS (или звонку). В случае утери пароля, согласно информации на официальном сайте Телеграм, — "теряется доступ к сообщениям на других устройствах". По состоянию на Декабрь 2021 года — эта информация не является полной.

Как можно повлиять на аккаунт с 2ФА заполучив доступ к SMS/звонкам — основной вопрос данного исследования.

По поводу резервной электронной почты: имеется возможность указать E-mail для восстановления пароля. Технология E-mail была создана очень давно, без целей защиты прав на владение и считается слабозащищённой технологией на сегодня. К тому же данное действие передаст исключительное право на владение аккаунтом тому, кто сможет узнать E-mail адрес и/или получить доступ к письмам. Таким образом электронная почта будет слабым звеном и основной угрозой аккаунту, а пароль теряет свои защитные функции. Вопросы защиты E-mail вне темы данного исследования. Таким образом аккаунт с паролем в качестве второго фактора и без подключенного E-mail для восстановления пароля является оптимальным методом защиты на данный момент.

Почему и кому это важно: на сегодня Телеграм является одной из основных площадок для взаимодействия многих проектов. Включая проекты DeFi с большой суммой вложенных средств, до нескольких миллиардов (читайте обзор на Curve Finance в Телеграм-канале @defisec). Утеря доступа к телеграм-аккаунтам несёт не только репутационные, но и финансовые риски как обычных пользователей, так и управляющих проектами. Также многие пользователи владеют популярными каналами и получают доход от них.

Порядок проведения исследования, соответствующие скриншоты:

  • Создаём телеграм-аккаунт и задаём пароль для 2ФА, без резервной электронной почты. Завершение операции на скриншоте #00.

  • Заходим в аккаунт с нового устройства: подтверждаем SMS и открывается к обзору запрос пароля. Скриншот #01.

  • Нажимаем “Забыли пароль?” и получаем к обзору предложение вспомнить пароль или сбросить аккаунт. Скриншот #02.

  • Нажимаем "OK”, затем нажимаем “СБРОСИТЬ МОЙ АККАУНТ” и получаем к обзору Скриншот #03 с предложением сбросить аккаунт.

  • Нажимаем “Сбросить аккаунт” во всплывшем окне и открывается скриншот #04 с отсчётом в 7 дней до сброса.

  • Затем открываем другое залогиненное в этот аккаунт приложение и в чате “Служебные уведомления” видим предупреждение о сбросе. Скриншот #05.

  • Нажимаем на ссылку после слов о том, что не хотим, чтобы учётная запись была удалена и получаем запрос на подтверждение по SMS. Скриншот #06.

Скриншот #00. При задании пароля 2ФА Телеграм утверждает, что доступ будет потерян вместе с ним если не задать также электронную почту для восстановления пароля 2ФА.
Скриншот #00. При задании пароля 2ФА Телеграм утверждает, что доступ будет потерян вместе с ним если не задать также электронную почту для восстановления пароля 2ФА.
#01. Подтверждаем код из SMS и заявляем, что потеряли пароль.
#01. Подтверждаем код из SMS и заявляем, что потеряли пароль.
#02. Телеграм предлагает варианты: "вспомнить пароль или сбросить аккаунт".
#02. Телеграм предлагает варианты: "вспомнить пароль или сбросить аккаунт".
#03. Выбираем вариант "сбросить аккаунт", Телеграм сообщает, что "все сообщения и чаты будут удалены", подтверждаем нажатием "сбросить аккаунт".
#03. Выбираем вариант "сбросить аккаунт", Телеграм сообщает, что "все сообщения и чаты будут удалены", подтверждаем нажатием "сбросить аккаунт".
#04. Телеграм сообщает, что аккаунт защищён паролем и включает таймаут в 7 дней.
#04. Телеграм сообщает, что аккаунт защищён паролем и включает таймаут в 7 дней.
#05. В этот момент в служебных сообщениях мы получаем уведомление с возможностью отмены данной операции.
#05. В этот момент в служебных сообщениях мы получаем уведомление с возможностью отмены данной операции.
#06. Так выглядит попытка отмены операции "удаления и сброса" из залогиненного в аккаунт приложения, также предлагается вариант изменения номера телефона.
#06. Так выглядит попытка отмены операции "удаления и сброса" из залогиненного в аккаунт приложения, также предлагается вариант изменения номера телефона.

Вывод: в случае наличия у посторонних лиц доступа к SMS/звонкам — имеется возможность завладеть аккаунтом осуществив его полный сброс. Сохраняется ли при этом имя пользователя (username) и id аккаунта — данный вопрос остаётся открытым и подлежит дополнительному исследованию. Таким образом самые полные права на аккаунт имеются у приложения/приложений, с которого/которых осуществлён вход в аккаунт. При соответствующей реакции на служебные уведомления от Телеграм имеется возможность смены номера телефона в случае попытки "удаления" аккаунта через доступ к SMS/звонкам. Необходимо контролировать следующие моменты: что приложение полноценно залогинено в аккаунт и имеется доступ к этому приложению, а также контролировать поступление служебных уведомлений.

Про 7-дневный таймаут перед сбросом аккаунта почему-то указано лишь в документации для разработчиков: https://core.telegram.org/api/srp#email-verification

Всё, что есть по поводу двухфакторной аутентификации в документации для пользователей: https://telegram.org/faq#q-how-does-2-step-verification-work

Рекомендации по защите:

  • Использовать сложный пароль и иметь его защищённую резервную копию.

  • Необходимо иметь отдельное защищённое устройство с залогиненым в аккаунт приложением.

  • Необходимо регулярно проверять работу залогиненного в аккаунт приложения и чат со служебными уведомлениями. Не реже одного раза в пять дней.

Дополнительно: чем больше залогиненных устройств в аккаунт — тем выше риск компрометации аккаунта. Также залогиненное устройство является инструментом в обеспечении безопасности телеграм-аккаунта. Необходимо учитывать, что для сокрытия служебного уведомления от Телеграм о сбросе аккаунта может быть применён флуд таким образом, что чат со служебными уведомлениями и/или само сообщение о сбросе в чате будет сложно заметить.

Subscribe to DeFi (in)security
Receive new entries directly to your inbox.
Collectors
View
#1
#2
#3
View collectors
This entry has been permanently stored on-chain and signed by its creator.