Профиль Mythic C2, который туннелирует трафик агентов Athena и Apollo через сообщения между ботами Telegram, связывая зашифрованные полезные нагрузки с Mythic через его gRPC-сервис Push C2.
Telegram предоставляет профиль Mythic C2 для агентов Athena и Apollo. Он использует приватные сообщения Telegram между ботами как транспорт, а сервис Push C2 gRPC Mythic — как мост контроллера.
Athena or Apollo agent bot <-> Telegram Bot API <-> controller bot <-> Telegram C2 service <-> Mythic
Каждый запущенный агент использует собственный токен Bot API. Сервис C2 использует один токен бота-контроллера. У обоих ботов должен быть включён режим Bot-to-Bot Communication Mode в Telegram.
Сообщения используют небольшой JSON-конверт и разбиваются на фрагменты по 2 800 символов перед отправкой через sendMessage. Полезные нагрузки агента сохраняют своё шифрование aes256_hmac; сервис Telegram пересылает зашифрованные сообщения Mythic без их расшифровки.
Выполните эту команду из каталога Mythic:
./mythic-cli install github https://github.com/DavidCarliez/mythic_telegram_profile
Для локальной разработки установите вместо этого локальную копию:
./mythic-cli install folder /path/to/telegram -f
Установите один из поддерживаемых форков агента в том же развёртывании Mythic:
# Athena
./mythic-cli install github https://github.com/DavidCarliez/Athena -b telegram-c2
# Apollo
./mythic-cli install github https://github.com/DavidCarliez/Apollo -b telegram-c2
getUpdates совместно используют одну очередь обновлений.Приватные сообщения между ботами требуют включения режима коммуникации у обоих ботов. Telegram описывает это требование в своём руководстве Bot-to-Bot Communication.
В Mythic откройте C2 Profiles, разверните действия для telegram и выберите View/Edit Config. Установите:
| Ключ | Значение |
|---|---|
botToken | Токен бота-контроллера от BotFather |
apiBase | https://api.telegram.org, если не используется совместимый локальный сервер Bot API |
pollTimeout | Тайм-аут длинного опроса от 1 до 50 секунд |
mythicGrpc | Конечная точка Mythic Push C2 gRPC; оставьте предоставленное значение для обычного развёртывания Mythic |
Сохраните конфигурацию, затем запустите профиль.
Выберите профиль C2 telegram при сборке Athena или Apollo и укажите:
| Параметр | Описание |
|---|---|
bot_token | Токен для выделенного бота агента полезной нагрузки |
controller_bot | Имя пользователя бота-контроллера, с @ или без него |
api_base | Базовый URL Telegram Bot API |
message_checks | Максимальное число длинных опросов в ожидании каждого ответа контроллера |
time_between_checks | Тайм-аут длинного опроса в секундах |
callback_interval | Интервал обратного вызова агента в секундах |
callback_jitter | Процент джиттера обратного вызова агента |
AESPSK | Шифрование сообщений aes256_hmac |
user_agent | HTTP User-Agent, отправляемый в Telegram |
proxy_* | Необязательные настройки HTTP-прокси |
killdate | Дата истечения срока действия полезной нагрузки |
AESPSK включённым.getUpdates будут поглощать ответы друг друга.Каждое текстовое сообщение Telegram содержит объект JSON со следующими полями:
v: версия протокола, в настоящее время 1sender_id: случайный идентификатор маршрута, сгенерированный процессом агентаclient_id: идентификатор маршрута ответаto_server: флаг направленияpacket_id: идентификатор набора фрагментовreply_to: идентификатор запроса, подтверждённый ответом контроллераsleep: текущий интервал обратного вызова агента в секундахjitter: текущий процент джиттера обратного вызова агентаchunk: индекс фрагмента, начиная с нуляchunks: общее количество фрагментов, ограничено 256message: фрагмент зашифрованного сообщения MythicНезавершённые наборы фрагментов истекают через десять минут.