AthenaおよびApolloエージェントのトラフィックをTelegramのbot-to-botメッセージ経由でトンネリングし、暗号化されたペイロードをMythicのPush C2 gRPCサービス経由でMythicにブリッジするMythic C2プロファイル。
Telegramは、AthenaエージェントおよびApolloエージェント向けのMythic C2プロファイルを提供します。これは、Telegramのプライベートなbot-to-botメッセージをトランスポートとして使用し、MythicのPush C2 gRPCサービスをコントローラーブリッジとして使用します。
Athena or Apollo agent bot <-> Telegram Bot API <-> controller bot <-> Telegram C2 service <-> Mythic
実行中の各エージェントは、独自のBot APIトークンを使用します。C2サービスは1つのコントローラーbotトークンを使用します。両方のbotでTelegramのBot-to-Bot Communication Modeを有効にする必要があります。
メッセージは小さなJSONエンベロープを使用し、sendMessageを通じて送信される前に2,800文字のチャンクに分割されます。エージェントのペイロードは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のコンシューマーは1つの更新キューを共有するため、同時実行されるペイロードでトークンを再利用しないでください。プライベートなbot-to-botメッセージには、両方のbotで通信モードが必要です。Telegramはこの要件をBot-to-Bot Communicationガイドで文書化しています。
MythicでC2 Profilesを開き、telegramのアクションを展開して、View/Edit Configを選択します。以下を設定します:
| Key | Value |
|---|---|
botToken | BotFatherから取得したコントローラーbotトークン |
apiBase | 互換性のあるローカルBot APIサーバーを使用している場合を除き、https://api.telegram.org |
pollTimeout | 1秒から50秒までのロングポーリングタイムアウト |
mythicGrpc | Mythic Push C2 gRPCエンドポイント。通常のMythicデプロイメントでは提供された値を保持します |
設定を保存し、プロファイルを開始します。
AthenaまたはApolloをビルドする際にtelegram C2プロファイルを選択し、以下を指定します:
| Parameter | Description |
|---|---|
bot_token | ペイロード専用エージェントbotのトークン |
controller_bot | コントローラーbotのユーザー名(@の有無は問いません) |
api_base | Telegram Bot APIのベースURL |
message_checks | 各コントローラー応答を待機する際の最大ロングポーリング回数 |
time_between_checks | ロングポーリングタイムアウト(秒) |
callback_interval | エージェントのコールバック間隔(秒) |
callback_jitter | エージェントのコールバックジッター率 |
AESPSK | aes256_hmacメッセージ暗号化 |
user_agent | Telegramに送信されるHTTP User-Agent |
proxy_* | オプションのHTTPプロキシ設定 |
killdate | ペイロードの有効期限 |
AESPSKを有効に保ってください。getUpdates呼び出しが互いの応答を消費してしまいます。各Telegramテキストメッセージには、以下のフィールドを持つJSONオブジェクトが含まれます:
v: プロトコルバージョン。現在は1sender_id: エージェントプロセスによって生成されたランダムなルート識別子client_id: 応答ルート識別子to_server: 方向フラグpacket_id: チャンクセット識別子reply_to: コントローラー応答によって確認応答されたリクエスト識別子sleep: 現在のエージェントコールバック間隔(秒)jitter: 現在のエージェントコールバックジッター率chunk: ゼロベースのチャンクインデックスchunks: 合計チャンク数。256に制限されますmessage: 暗号化されたMythicメッセージフラグメント不完全なチャンクセットは10分後に期限切れになります。