Почему двухфакторная авторизация в Telegram не работает
После недавних громких взломов Telegram-аккаунтов в России, основатель сервиса Павел Дуров сказал, что двухфакторная авторизация «позволяет защитить важную информацию».
Да, если двухфакторная авторизация в Telegram включена, то атакующий, угнавший ваш аккаунт, не получит историю ваших переписок —, но от самого угона эта двухфакторная не защищает, хотя вроде как должна бы.
То есть если атакующий может получить вашу SMS с кодом для входа, то он гарантированно может угнать ваш аккаунт независимо от того, включена ли у вас двухфакторная авторизация или нет.
Под «угнать» я понимаю «может войти в приложение Telegram под вашим номером телефона» и писать от вашего имени сообщения вашим контактам.
Происходит это следующим образом:
1. Атакующий у себя в приложении указывает номер телефона жертвы и пытается войти в аккаунт. Тут он видит сообщение, что код отправлен не по SMS, а на приложение, зарегистрированное на этот номер, на другом устройстве:
2. В этот момент жертва получает системное уведомление у себя в приложении (или приложениях) Telegram:
3. Атакующий нажимает «Didn«t get the code?» и Telegram отправляет код через SMS:
4. Тут атакующий вводит код из SMS и узнает, что в настройках аккаунта включена двухфакторная авторизация и что ему нужно ввести пароль (в данном случае »10» это подсказка для пароля, выбранная при включении двухфакторной):
5. Далее атакующий притворяется, будто он забыл пароль — «Forgot password?». Тут атакующему сообщают, что код восстановления отправлен на электронную почту (если жертва при включении двухфакторной авторизации указала адрес электронной почты). Атакующий не видит адреса электронной почты — он видит лишь то, что после «собачки»:
6. В этот момент жертва получает код для сброса пароля на адрес электронный почты (если она указала адрес электронной почты при включении двухфакторной авторизации):
7. Атакующий нажимает «ok» и видит окошко, куда нужно ввести код для сброса пароля, который был отправлен на электронную почту. Тут атакующий говорит, что у него проблемы с доступом к своей почте — «Having trouble accessing your e-mail?». Тогда Telegram предлагает «reset your account»:
8. Атакующий нажимает «ok» и видит два варианта — или ввести пароль, или нажать «RESET MY ACCOUNT». Telegram объясняет, что при «переустановке» аккаунта потеряется вся переписка и файлы из всех чатов:
9. Атакующий нажимает «RESET MY ACCOUNT» и видит предупреждение, что это действие невозможно будет отменить и что при этом все сообщения и чаты будут удалены:
10. Атакующий нажимает «RESET» и Telegram просит указать имя для «переустановленного» аккаунта:
11. Собственно, все, атакующий успешно угнал аккаунт: он вошел под номером телефона жертвы и может писать от её имени сообщения:
12. Жертва при этом видит приложение таким, каким оно было сразу после установки. Приветственный экран рассказывает о Telegram и предлагает зарегистрироваться или войти в уже существующий аккаунт:
13. Когда атакующий пишет от имени жертвы кому-нибудь из контактов жертвы, этот контакт видит, что жертва только что присоединилась к Telegram (что подозрительно), а также новое сообщение (или сообщения) в новом чате от жертвы. Через 12–16 часов контакт также увидит, что в старых чатах вместо имени жертвы указано «Deleted Account»:
Если жертва имеет возможность получать SMS на этот номер телефона, она может войти в приложение Telegram на своём устройстве. Если атакующий на угнанном аккаунте не включил двухфакторную авторизацию, жертва может войти и в меню Settings => Privacy and Security => Active Sessions прекратить все остальные сессии (то есть сессии атакующего):
Если же атакующий на угнанном аккаунте включил двухфакторную авторизацию — жертва, в свою очередь, таким же образом может «угнать обратно» свой аккаунт.
Получается, что единственная польза от двухфакторной авторизации в Telegram — чтобы атакующий не получил переписку из обычных не секретных чатов (если угнать аккаунт без включенной двухфакторной, то атакующий получит всю историю переписок из несекретных чатов, из секретных чатов он и так и так ничего не получит). То есть Telegram с включённой двухфакторной авторизацией даёт приблизительно то же самое, что Signal и WhatsApp обеспечивают и так, без никакой двухфакторной авторизации.
Иными словами, двухфакторная авторизация в Telegram не совсем настоящая, Telegram все равно позволяет войти используя один лишь фактор — код из SMS.
Ситуация несколько анекдотичная: вот вам, юзеры, двухфакторная авторизация. Первый фактор — код из SMS (что у меня есть), второй фактор — пароль (что я знаю). Звучит супер, но когда юзер говорит —, а я вот забыл пароль, Telegram говорит — ну ничего, бывает, заходи без пароля и пользуйся на здоровье:)
Это удалось выяснить экспериментальным путём в рамках немножко более масштабного исследования о Telegram, WhatsApp и Signal — «Как «защищённые» мессенджеры защищены от кражи SMS»
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.