Добавить в корзинуПозвонить
Найти в Дзене
Игорь Бедеров

Поговорим об исследовании ботов в Telegram, на что меня натолкнуло обилие хакерских, мошеннических и наркоторговых ботов

Поговорим об исследовании ботов в Telegram, на что меня натолкнуло обилие хакерских, мошеннических и наркоторговых ботов. Кроме очевидных вещей в виде название, логотипа, URL и прочих общедоступных параметров бота, интерес вызывает история его переписок. И я предлагаю изучить то, как ее получить. Для исследования нам понадобится API-ключ бота. Он получается разработчиком у самого Telegram, через @BotFather. Далее ключ может стать вам доступным в ходе исследования скам-проекта или чат-бота обратной связи, созданного в том или иной общедоступном конструкторе (Livegram, Manybot, Fleepbot). Первое, что нужно сделать с найденным токеном (attacker_bot_token) – проверить его активность и собрать базовую информацию о боте. Telegram API предоставляет для этого простой метод getMe. https://api.telegram.org/bot{bot_token}/getMe Этот шаг подтверждает: что токен рабочий, бот активен, и дает его публичные параметры. Сохраните id и username – они пригодятся. Теперь, чтобы перехватывать сообщения

Поговорим об исследовании ботов в Telegram, на что меня натолкнуло обилие хакерских, мошеннических и наркоторговых ботов. Кроме очевидных вещей в виде название, логотипа, URL и прочих общедоступных параметров бота, интерес вызывает история его переписок. И я предлагаю изучить то, как ее получить.

Для исследования нам понадобится API-ключ бота. Он получается разработчиком у самого Telegram, через @BotFather. Далее ключ может стать вам доступным в ходе исследования скам-проекта или чат-бота обратной связи, созданного в том или иной общедоступном конструкторе (Livegram, Manybot, Fleepbot).

Первое, что нужно сделать с найденным токеном (attacker_bot_token) – проверить его активность и собрать базовую информацию о боте. Telegram API предоставляет для этого простой метод getMe.

https://api.telegram.org/bot{bot_token}/getMe

Этот шаг подтверждает: что токен рабочий, бот активен, и дает его публичные параметры. Сохраните id и username – они пригодятся.

Теперь, чтобы перехватывать сообщения, нам нужны три ключевых элемента:

1️⃣ bot_token (уже имеется)

2️⃣ chat_id, т.е. идентификатор чата, куда бот пересылает информацию.(В DevTools браузера (вкладка Network) ищите POST-запрос к https://api.telegram.org/bot.../sendMessage. В его теле (Payload) будет параметр chat_id – это и есть искомый идентификатор.

3️⃣ my_chat_id и my_message_id, т.е. идентификатор вашего чата с ботом (или любым другим ботом для теста) и ID сообщения в нем. Для установления его, используйте метод getUpdates для вашего тестового бота (или даже для бота злоумышленника, если он отвечает).

https://api.telegram.org/bot{your_test_bot_token}/getUpdates

Отправьте сообщение вашему боту. В ответе JSON найдите структуру message. Нужные значения: message.chat.id (ваш my_chat_id) и message.message_id (ваш my_message_id).

Теперь у нас есть все ингредиенты для главного фокуса – пересылки сообщения из чата злоумышленника в наш личный чат. API Telegram предоставляет для этого метод forwardMessage.

curl -Uri “https://api.telegram.org/bot{attacker_bot_token}/forwardMessage” -Method POST -ContentType “application/json” -Body ‘{“from_chat_id”:”{attacker_chat_id}”, “chat_id”:”{my_chat_id}”, “message_id”:”{message_id}”}

Первые попытки могут вызвать ошибку Bad Request: message to forward not found. Это значит, что выбранный target_message_id не существует (сообщение удалено или ID вне диапазона). Решение: Начинайте перебирать message_id с 1, 2, 3... постепенно увеличивая, пока не найдете существующее сообщение. Сообщения в чате нумеруются последовательно.

Увидели одно пересланное сообщение? Отлично! Но нам нужен полный поток данных. Поскольку сообщения в чате имеют последовательные ID, мы можем автоматизировать пересылку всех сообщений в определенном диапазоне. Все сообщения, когда-либо отправленные боту злоумышленника в этот чат (в диапазоне ID), появятся в вашем личном чате.

В качестве средства автоматизации можно воспользоваться скриптом https://github.com/soxoj/telegram-bot-dumper. Он выгрузит всю доступную историю переписок и будет следить за новыми сообщениями. Если надо остановить работу - используй комбинацию Ctrl-C.

-2