Телеграм старается быть безопасным, но как написано в их BugBounty программе, социальная инженерия - вне скоупа. В этом я с ними абсолютно согласен. Но они считают, что под это попадают и все небезопасно реализованные функции, которые могут использоваться только для социальной инженерии. В этом уже я с ними не согласен. В этой статье я расскажу вам про две "фичи", которые исправлять мессенджер не намерен, но которые могут быть легко использоваться для социальной инженерии, особенно в связке.
А вы точно хотите туда перейти?
При переходе на внешний ресурс появляется уведомление с полной целевой ссылкой, что позволяет избежать использования форматирования для фишинга.
Но что будет, если мы захотим перейти по внутренней ссылке (
Вот пример. Визуально конструкция @OSINT_bot может содержать ссылку на другой бот/чат, добавленную туда ссылкой через обычное форматирование, например
Найдите 10 отличий.
Пример. Текст @OSINT_bot может содержать ссылку на другой бот/чат, добавленную туда ссылкой через обычное форматирование, например на
Обе ссылки ведут на совершенно разных ботов. Если их стилизовать друг под друга, то легкий фишинг обеспечен. Подмену же можно заметить только если задержать над ссылкой курсор или ее скопировать.
Простое повторение:
Успешный вход
Однако, при переходе по ссылке параметр не отображается в клиенте Telegram. Отображается только кнопка запуска бота, после нажатия которой и в логе общения с ботом никакого параметра не видно. А он есть.
Это внутренняя "фича" Телеграма прятать передаваемые параметры при переходе в любого бота, которую разработчики сервиса адаптировали под себя. Но не особо безопасно.
Угоняем аккаунт TGstat.
Комбинация с предыдущей "фичей" маскировки внутренних ссылок, позволяет нам крайне эффективно угнать аккаунт сервиса.
Для этого:
Оффтоп. Более того, посмотреть список активных сессий на сайте или в боте нельзя, также как и завершить их. То есть мы останемся в аккаунте незаметно и навсегда, но эти проблемы уже на совести создателей сервиса, а не Телеграма.
Такую ссылку можно кидать в "предложку" телеграм-каналов для деанонимизации аккаунтов администраторов.
Возможно, само наличие слова "социальная инженерия" в репорте уже повод для отклонения
Будьте внимательны и проверяйте ссылки!
Ссылка, а куда?
Форматирование в Телеграм позволяет добавлять ссылки, но не контролирует должным образом переходы по ним, если переход осуществляется внутри мессенджера. Вот смотрите.А вы точно хотите туда перейти?
При переходе на внешний ресурс появляется уведомление с полной целевой ссылкой, что позволяет избежать использования форматирования для фишинга.
Но что будет, если мы захотим перейти по внутренней ссылке (
Для просмотра ссылки необходимо нажать
Вход или Регистрация
)? Ничего. В случае перехода по внутренней ссылке никаких уведомлений о переходе по ссылке не происходит.Вот пример. Визуально конструкция @OSINT_bot может содержать ссылку на другой бот/чат, добавленную туда ссылкой через обычное форматирование, например
Для просмотра ссылки необходимо нажать
Вход или Регистрация
. И визуально обе эти ссылки будут выглядеть одинаково! (Рис.2). Подмену можно заметить только если задержать над ссылкой курсор или ее скопировать.Найдите 10 отличий.
Пример. Текст @OSINT_bot может содержать ссылку на другой бот/чат, добавленную туда ссылкой через обычное форматирование, например на
Для просмотра ссылки необходимо нажать
Вход или Регистрация
.Обе ссылки ведут на совершенно разных ботов. Если их стилизовать друг под друга, то легкий фишинг обеспечен. Подмену же можно заметить только если задержать над ссылкой курсор или ее скопировать.
Простое повторение:
- Пишем сообщение с тегом контакта/чата/бота (@OSINT_bot)
- Жмем форматирование => Добавить ссылку => Добавляем фишинговую ссылку (@OSINT_hacked_bot)
- Удаляем подгружаемый предпросмотр.
- Отправляем ссылку жертве.
- ???
- PROFIT!
Что ты еще передал?!
Многие ресурсы, например TGStat (
Для просмотра ссылки необходимо нажать
Вход или Регистрация
), используют схему авторизации через Телеграм. Для авторизации используется передача уникального параметра собственному боту из ссылки на сайте. Работает это так:- Пользователь заходит на сайт и жмет кнопку "логин".
- Сайт выдает пользователю получает ссылку на своего бота с уникальным ключом в параметре start, например
Для просмотра ссылки необходимо нажать Вход или Регистрация
- Бот ожидает этот уникальный параметр, после чего сайт авторизует пользователя под тем аккаунтом Телеграм, от которого был получен ключ.
Успешный вход
Однако, при переходе по ссылке параметр не отображается в клиенте Telegram. Отображается только кнопка запуска бота, после нажатия которой и в логе общения с ботом никакого параметра не видно. А он есть.
Это внутренняя "фича" Телеграма прятать передаваемые параметры при переходе в любого бота, которую разработчики сервиса адаптировали под себя. Но не особо безопасно.
Угоняем аккаунт TGstat.
Комбинация с предыдущей "фичей" маскировки внутренних ссылок, позволяет нам крайне эффективно угнать аккаунт сервиса.
Для этого:
- Заходим на сайт сервиса и получаем уникальный ключ авторизации нашего браузера. Но по ссылке не переходим.
- Отправляем под любым предлогом жерве ссылку на оригинальный бот TGstat (@tg_analytics_bot), но с добавлением через форматирование нашего параметра ключа (
Для просмотра ссылки необходимо нажать Вход или Регистрация).
- Жертва кликает на имя бота и переходит по скрытой ссылке с параметром.
- Жертве показывается только стандартная кнопка /start.
- После нажатия кнопки, мы в браузере получаем сессию жертвы на сервисе.
- ???
- PROFIT!
Оффтоп. Более того, посмотреть список активных сессий на сайте или в боте нельзя, также как и завершить их. То есть мы останемся в аккаунте незаметно и навсегда, но эти проблемы уже на совести создателей сервиса, а не Телеграма.
Надежная деанонимизация
Также благодаря комбинации этих двух "фич", мы можем создать бота-ловушку, замаскированного через сокрытие внутренней ссылки под популярные боты. Скрытый уникальный параметр позволит легко отследить переход в нашу ловушку из конкретного источника. При переходе в бота мы получим публичную информацию аккаунта и идентификатор пользователя.Такую ссылку можно кидать в "предложку" телеграм-каналов для деанонимизации аккаунтов администраторов.
Выводы
Для предотвращения использования этих "фич" в фишинге, я предложил Телеграму следующее:- Включить механизм уведомления о переходе по скрытой ссылке не только для внешних, но и для внутренних ссылок, если ссылка была добавлена посредством форматирования.
- Отображать параметры, передаваемые при обращении к боту по умолчанию, а не только кнопку запуска бота.
Возможно, само наличие слова "социальная инженерия" в репорте уже повод для отклонения
Будьте внимательны и проверяйте ссылки!
Для просмотра ссылки необходимо нажать
Вход или Регистрация