ENG

Команда отдела защиты бренда Angara SOC продолжает исследования схем злоумышленников. В прошлой части мы рассмотрели сценарий мошеннической схемы, разобрали связь между веб-страницами и Telegram-ботами. В этой части мы рассмотрим, как злоумышленники пытаются скрыть фишинговый контент.

Раньше домены, созданные для мошеннической активности, содержали страницу авторизации портала «Госуслуги», но для увеличения времени обнаружения таких страниц мошенники начали прятать контент, например, под простой игрой «Угадай правильную ячейку». Пользователю, который зашел случайно на такой ресурс, не будет понятно, для чего конкретно служит страница.

Рассмотрим пример с доменом sort-center135523.icu, на котором содержится игра.

1.png
Рис. 1. Страница мини-приложения при просмотре через браузер

При первичном анализе удалось установить, что имеется Telegram-бот с названием, аналогичным доменному имени страницы, стилизованный под «официальный бот» сортировочного центра «Почты России».

2.png
Рис. 2. Интерфейс бота

При нажатии на кнопку авторизации открывается встроенное в бот мини-приложение, после чего отображается страница входа на портал «Госуслуги». Потенциальная жертва, ничего не заподозрив, может ввести свои настоящие данные, которые сразу получит злоумышленник.

Но при чем тут новые уловки мошенников? Давайте разбираться!

Дело в том, что злоумышленники начали использовать встроенные механизмы Telegram, специально разработанные для мини-приложений.

Одним из таких механизмов является использование initData, который призван выполнить аутентификацию пользователя в системе. Но также этот механизм позволяет ограничить доступ к контенту страницы, который пытаются получить напрямую, без Telegram-бота.

При открытии страницы с авторизацией, используя функционал initData, в запросе мы можем видеть, что отправляется строка JSON, включающая следующие данные:

1. query_id — уникальный идентификатор сессии WebApp для конкретной загрузки.

2. user — JSON‑объект с информацией о текущем пользователе:

2.1. id — ID пользователя;

2.2. first_name — имя пользователя;

2.3. last_name — фамилия пользователя (если заполнено данное поле в информации профиля);

2.4. username — юзернейм пользователя (если указан);

2.5. language_code — двухбуквенный идентификатор страны пользователя;

2.6. allows_write_to_pm — возможность писать личные сообщения;

2.7. photo_url — ссылка на аватарку пользователя.

3. auth_date — метка времени, в которое мини‑приложение было запущено.

4. signature — подпись (техническая информация).

5. hash — хэш, используемый на стороне сервера для верификации initData.

3.png
Рис. 3. Ключи в initData, отправляемые на сервер злоумышленников

4.png
Рис. 4. Содержание запроса и ответа

Каждому запросу присваивается свой уникальный идентификатор, после чего формируется блок с информацией о пользователе, отправившем запрос, а затем добавляется метка времени, подпись и хэш.

После того как пакет, включающий initData, будет отправлен и обработан на стороне сервера, нас встречает уже не игра, а поддельная страница входа на портал «Госуслуги».

5.png
Рис. 5. Интерфейс встроенного в бот мини-приложения

Как работает сам алгоритм и почему?

Для ответа на данный вопрос откроем официальную документацию. Telegram пишет: «Особенностью инициализационных данных является возможность их использования в качестве фактора авторизации или аутентификации. Дело в том, что данные, генерируемые нативным приложением Telegram, подписываются секретным ключом бота Telegram, после чего сгенерированная подпись помещается рядом с самими параметрами. Таким образом, зная секретный ключ Telegram-бота, разработчик имеет возможность проверить подпись параметров и убедиться, что они действительно были выданы указанному пользователю».

На стороне бэкенда, в свою очередь, выполняется ряд преобразований над поступившими на обработку данными, который позволяет убедиться в том, что переход был выполнен из самого Telegram-бота и конкретным юзером, а не, например, из браузера. Говоря об алгоритме проверки initData, можно снова обратиться к документации Telegram и увидеть следующие шесть пунктов:

  1. Преобразуйте все пары «ключ-значение» и создайте массив строковых значений в формате {key}={value}. Ключ hash следует исключить, но сохранить в памяти. Он представляет собой начальный признак данных и будет использоваться на последнем этапе проверки.

  2. Отсортируйте вычисленный массив в алфавитном порядке.

  3. Создайте HMAC-SHA256 с помощью ключа WebAppData и примените его к токену TelegramBot, привязанному к вашему мини-приложению.

  4. Создайте HMAC-SHA256, используя результат предыдущего шага в качестве ключа. Примените его к массиву пар, объединенных символом переноса строки (\n), полученному на втором шаге, и представьте результат в виде последовательности шестнадцатеричных символов.

  5. Сравните hash-значение, полученное на 1-м шаге, с результатом 4-го шага.

  6. Если эти значения равны, переданным данным init можно доверять.

Как же поступили злоумышленники, когда узнали об этом функционале? Они взяли и интегрировали данную проверку в свой мошеннический проект, и теперь, если проверка initData завершается неудачей, они возвращают в ответ на запрос так называемую игру-головоломку (рис. 1).

Если смотреть на запросы через Proxy, то выглядеть это будет следующим образом:

  • Первым делом загружается скрипт, который вычисляет initData.

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

  • В случае с переходом из Telegram выполняется тот же самый скрипт, но теперь он формирует initData и мы можем загрузить фишинговую страницу входа на портал «Госуслуги».

Если говорить о данном факторе проверки со стороны злоумышленников, можно сделать вывод о том, что их техническая осведомленность растет, во многом благодаря нейросетям, которыми активно пользуются злоумышленники и отдельно показывает, что злоумышленники пытаются таким образом уклоняться от блокировок их ресурсов. Однако, с точки зрения противодействия мошенничеству, данный фактор можно обнаружить, благодаря анализу кода и механизмов работы самой схемы мошенничества. 

Источник

07.08.2025 09:00:00

Другие публикации

Сергей Шерстобитов: Самая уязвимая часть любого гаджета или системы — его пользователь

Главный редактор журнала «Мир безопасности» Дмитрий Каплин побеседовал с Сергеем Шерстобитовым, генеральным директором Angara Security

10.08.2026

Эксплуатация уязвимости Stack Overflow в драйверах Windows

На связи команда Red Team из Angara Security. Она предлагает немного погрузиться в основы одной из дисциплин, которая является фундаментом любого Malware и Exploit Development. Эти два направления критично важны для проведения Red Team ассессментов, если вы хотите имитировать действительно скилловых злоумышленников, обходить средства защиты и получать необходимый результат, оставаясь незамеченным для средств мониторинга и служб реагирования на инциденты.

07.08.2026

Единые стандарты ИБ для филиалов и дочерних обществ: локальные исключения без потери контроля

Управление информационной безопасностью в компаниях с распределённой структурой — головная боль для многих руководителей служб безопасности. Создать единый защищённый периметр — цель, которая выходит далеко за рамки разработки регламентов

04.08.2026

Поведенческий анализ в АСУ ТП: зачем UEBA промышленному мониторингу

Для промышленной среды недостаточно просто собрать логи и подключить несколько источников. Важно безопасно получить данные из технологического сегмента, не перегрузить каналы связи, учесть режимы работы площадок и не переложить всю кибербезопасность на инженеров АСУ ТП.

31.07.2026

SIEM в АСУ ТП: как построить мониторинг, который помогает производству, а не мешает

Подключить АСУ ТП к SIEM недостаточно, чтобы получить полноценный мониторинг безопасности. Промышленная инфраструктура требует иной архитектуры, других источников данных и тесной связи с технологическими процессами.

рекомендации

27.07.2026

Остались вопросы?

Понравилась статья?

Подпишитесь на уведомления о новых материалах