Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
mythic_telegram_profile — Mythic C2 profile that tunnels Athena and Apollo agent traffic through Telegram bot-to-bot messages, bridging encrypted payloads to Mythic via its Push C2 gRPC service. | Kitploit
Tools/GitHubGitHub/davidcarliez/mythic_telegram_profile
Penetration Testing FrameworksEncryption/Decryption ToolsExploit FrameworksPost-ExploitationCommand and ControlUtilities & FrameworksRed TeamingPayload Development
GitHubdavidcarliez/mythic_telegram_profile

mythic_telegram_profile

Mythic C2 profile that tunnels Athena and Apollo agent traffic through Telegram bot-to-bot messages, bridging encrypted payloads to Mythic via its Push C2 gRPC service.

View Repository
48316 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Telegram C2 profile for Mythic

Telegram provides a Mythic C2 profile for the Athena and Apollo agents. It uses Telegram private bot-to-bot messages as a transport and Mythic's Push C2 gRPC service as the controller bridge.

Architecture

Athena or Apollo agent bot <-> Telegram Bot API <-> controller bot <-> Telegram C2 service <-> Mythic

Each running agent uses its own Bot API token. The C2 service uses one controller bot token. Both bots must have Telegram's Bot-to-Bot Communication Mode enabled.

Messages use a small JSON envelope and are split into 2,800-character chunks before they are sent through sendMessage. Agent payloads retain their aes256_hmac encryption; the Telegram service forwards encrypted Mythic messages without decrypting them.

Requirements

  • Mythic 3
  • One supported agent fork with the Telegram transport:
    • Athena
    • Apollo
  • One Telegram controller bot
  • One Telegram bot for each concurrently running payload instance

Install

Run this command from the Mythic directory:

./mythic-cli install github https://github.com/DavidCarliez/mythic_telegram_profile

For local development, install the checkout instead:

./mythic-cli install folder /path/to/telegram -f

Install one of the supported agent forks in the same Mythic deployment:

# 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

Telegram setup

  1. Use @BotFather to create the controller bot.
  2. Create a separate bot for each payload instance that will run at the same time.
  3. Enable Bot-to-Bot Communication Mode for the controller bot and every agent bot.
  4. Record the controller bot token and username.
  5. Record each agent bot token. Do not reuse a token for concurrent payloads because getUpdates consumers share one update queue.

Private bot-to-bot messages require the communication mode on both bots. Telegram documents the requirement in its Bot-to-Bot Communication guide.

Configure the C2 service

In Mythic, open C2 Profiles, expand the actions for telegram, and select View/Edit Config. Set:

KeyValue
botTokenController bot token from BotFather
apiBasehttps://api.telegram.org unless using a compatible local Bot API server
pollTimeoutLong-poll timeout from 1 through 50 seconds
mythicGrpcMythic Push C2 gRPC endpoint; keep the supplied value for a normal Mythic deployment

Save the config, then start the profile.

Build a payload

Select the telegram C2 profile while building Athena or Apollo and provide:

ParameterDescription
bot_tokenToken for the payload's dedicated agent bot
controller_botController bot username, with or without @
api_baseTelegram Bot API base URL
message_checksMaximum long polls while waiting for each controller response
time_between_checksLong-poll timeout in seconds
callback_intervalAgent callback interval in seconds
callback_jitterAgent callback jitter percentage
AESPSKaes256_hmac message encryption
user_agentHTTP User-Agent sent to Telegram
proxy_*Optional HTTP proxy settings
killdatePayload expiration date

Operational constraints

  • A Bot API token is a bearer credential. Restrict access and revoke it through BotFather after use.
  • The agent token is embedded in the payload. Treat a recovered payload as a compromised token.
  • Telegram transport is not end-to-end encrypted. Keep AESPSK enabled.
  • Telegram retains message metadata and may retain message content under its service policies.
  • This profile uses long polling, not webhooks.
  • A single bot token must not be shared by concurrent agent instances. Their getUpdates calls would consume each other's responses.
  • The controller accepts only bot-authored, versioned transport envelopes. Mythic encryption still provides message authentication and confidentiality.
  • Agent requests remain pending until a correlated controller response arrives. Retried requests reuse the same request identifier, and the controller replays cached responses without forwarding duplicate traffic to Mythic.
  • Mythic can push tasking when no agent request is pending. The controller queues that tasking and correlates it with the agent's next exchange instead of dropping it.
  • The controller reports a route as disconnected after three missed maximum-jitter callback intervals plus 30 seconds, with a minimum timeout of 60 seconds.

Wire format

Each Telegram text message contains a JSON object with these fields:

  • v: protocol version, currently 1
  • sender_id: random route identifier generated by the agent process
  • client_id: response route identifier
  • to_server: direction flag
  • packet_id: chunk set identifier
  • reply_to: request identifier acknowledged by a controller response
  • sleep: current agent callback interval in seconds
  • jitter: current agent callback jitter percentage
  • chunk: zero-based chunk index
  • chunks: total chunk count, limited to 256
  • message: encrypted Mythic message fragment

Incomplete chunk sets expire after ten minutes.

Download Tool