Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
convoC2 — Microsoft Teamsを悪用したC2インフラストラクチャ。 | Kitploit
ツール/GitHubGitHub/cxnturi0n/convoc2
永続化メカニズムIDS/IPS回避データ流出ポストエクスプロイトペネトレーションテストコマンド&コントロールレッドチーミングリモートアクセスツールペイロード開発
GitHubcxnturi0n/convoc2

convoC2

Microsoft Teamsを悪用したC2インフラストラクチャ。

7591191年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

convoC2

目次

  • はじめに
  • デモ
  • 使用方法
  • 要件
  • 着想
  • 貢献

はじめに

Microsoft Teams を通じて、レッドチームが侵害したホスト上でシステムコマンドを実行できるようにするコマンドアンドコントロール(C2)インフラストラクチャです。
Microsoft Teams のメッセージ内の隠し span タグにデータを潜入させ、Adaptive Cards の画像 URL でコマンド出力を外部に送信し、C2 サーバーへのアウトオブバウンドリクエストをトリガーします。
被害者と攻撃者の間に直接的な通信が存在しないこと、さらに被害者が Microsoft のサーバーにのみ HTTP リクエストを送信し、アンチウイルスが MS Teams のログファイルを検査しないことから、検出がより困難になります。

convoC2-Architecture

デモ

以下の動画では、侵害された 2 台のホスト(1 台は Windows 11 で新しい Teams を実行、もう 1 台は Windows 10 で旧 Teams を実行)を制御するためのサーバーの使用例を示しています。最初のケースでは、攻撃者は被害者と同じ組織に属していません。

https://github.com/user-attachments/assets/d9fcccc1-de73-49cd-aaa7-df53303dbc6a

注: 最初のケースでは、被害者はすでに外部の攻撃者とのチャットを承諾していますが、攻撃者が被害者と初めてチャットを開始する実際のシナリオでは、被害者は攻撃者とのチャットを確認する必要があります(ただし、このアラートメッセージは簡単に回避できます。詳細はこちらを参照してください)。これは問題ではありません。なぜなら、メッセージはとにかくログファイルにキャッシュされるため、被害者がまだチャットを表示または承諾していなくても、コマンドは受信され実行されます。

使用方法

サーバー

wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_server_amd64.tar.gz
tar -xzvf convoC2_server_amd64.tar.gz --one-top-level
root@convoC2-server-VPS:~# ./convoC2_server_amd64 -h
Usage of convoC2 server:
  -t, --msgTimeout  How much to wait for command output (default 30 s)
  -b, --bindIp      Bind IP address (default 0.0.0.0)

エージェント

wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_agent.tar.gz
tar -xzvf convoC2_agent.tar.gz --one-top-level
C:\Windows>convoC2_agent.exe -h
Usage of convoC2 agent:
  -v, --verbose   Verbose logging (default false)
  -s, --server    C2 server URL (i.e. http://10.11.12.13/)
  -t, --timeout   Teams log file polling timeout [s] (default 1)
  -w, --webhook   Teams Webhook POST URL
  -r, --regex     Regex to match command (default "<span[^>]*aria-label=\"([^\"]*)\"[^>]*></span>")

要件

動作させるには、いくつか設定を行う必要があります:

  • Workflow Incoming Webhook を使用した Teams チャネルの作成:出力を含むアダプティブカードを受信する場所です。サーバーを使用している間は、このチャネルを開いたブラウザウィンドウを維持することが重要です。そうしないと、サーバーはエージェントからのメッセージを受信できません。

WebhookChannel

  • ID と認証トークンの取得:Teams は、被害者と攻撃者の一意の ID をボディに含めた POST リクエストを https://teams.microsoft.com/api/chatsvc/emea/v1/threads に送信することでチャットを初期化します。レスポンスでは、threadId が Location ヘッダー URL のパスに返されます。 同じリクエストの Bearer トークンは、メッセージ送信用のエンドポイントである https://teams.microsoft.com/api/chatsvc/emea/v1/users/ME/conversations/<threadId>/messages への認証に使用されます。したがって、これら 3 つを取得するだけで、あとはサーバーが処理します。
  • ポート 80 で受信 HTTP トラフィックを許可する、パブリックに公開されたホストがあることを確認してください。
  • 被害者のホストで Teams が実行されている必要があります。バックグラウンドで実行されていても問題ありません。

サーバーを起動した後、以前に取得した認証用データを使用して、新しいエージェントを受信し制御できます。使用例についてはデモを確認してください。

Workflow Incoming Webhook を使用した Teams チャネルの作成

まず最初に、Teams チャネルを作成する必要があります。

CreateTeams

3 つの点を右クリックし、「Workflows」をクリックします。

CreateTeams_1

検索バーに「Webhook」と入力し、「Post to a channel when a webhook request is received」をクリックします。

CreateTeams_5

デフォルト設定のまま続行し、最後に URL をコピーします。

Create_Teams_6

ID と認証トークンの取得

まず被害者を探すことから始めます。

GetOrgIds

被害者のアカウントを選択した後、Web プロキシでリクエストをインターセプトした状態で、ダミーメッセージを送信できます。

GetOrgIds_1

api/chatsvc/emea/v1/threads リクエストに含まれる 2 つの ID を保存し、そのリクエストを DROP します。認証トークンは、同じリクエストの Bearer トークンです。

GetOrgIds_2

着想

このインフラストラクチャは、Bobbyrsec による Teams GIFShell の研究 に着想を得ています。
当初の目的はこの問題を再現することでしたが、その解決策は部分的に修正されているようでした。この研究では Base64 エンコードされた GIF にコマンドを注入していましたが、それらはもはや正しく表示されなくなりました。代わりにチャット内に破損した画像のアイコンが表示され、被害者が疑い始める可能性がありました。
さまざまな方法を試した結果、GIF や画像ではなくメッセージに直接コマンドを埋め込むことが可能であることに気づきました。複数の画像を送信するよりも、シンプルなメッセージを送信する方が疑われる可能性は低いですよね? 当初は <script>、<meta>、またはカスタムタグなどにコマンドを埋め込むことを検討しましたが、すべてフィルタリングされました。最終的に、display:none を指定した <span> タグの aria-label 属性にコマンドを埋め込むことに成功しました。被害者にはメッセージだけが見えますが、隠されたコマンドが実際に Teams のログファイルを汚染するのです。

TeamsLogPoisoning

サーバーTUIは、素晴らしいGoのBubbleTeaフレームワークを使用して開発されています。

コントリビュート

バグを見つけた場合やプロジェクトを改善したい場合は、お気軽にプルリクエストを開いてください。喜んでレビューし、最終的に変更をマージします。 短期的なTODOは以下のとおりです:

  • メッセージのAES暗号化
  • エージェントが停止したことを検出するためのキープアライブ
  • エージェントのPowershell版
ツールをダウンロード