Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
azureOutlookC2 — Azure Outlook Command & Control (C2) - 侵害されたWindowsデバイスをOutlookメールボックスからリモート制御します。北朝鮮APT InkySquid / ScarCruft / APT37向けの脅威エミュレーションツール。TTP: C2運用にMicrosoft Graph APIを使用。 | Kitploit
ツール/GitHubGitHub/boku7/azureoutlookc2
クラウドセキュリティコマンド&コントロールレッドチーミングペイロード開発APIセキュリティ
GitHubboku7/azureoutlookc2

azureOutlookC2

Azure Outlook Command & Control (C2) - 侵害されたWindowsデバイスをOutlookメールボックスからリモート制御します。北朝鮮APT InkySquid / ScarCruft / APT37向けの脅威エミュレーションツール。TTP: C2運用にMicrosoft Graph APIを使用。

リポジトリを見る
5041003年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

Azure Outlook C2

Microsoft Graph API を利用した C2 通信及びデータ漏洩を行う、Azure Outlook コマンド&コントロールです。

自身の Outlook メールボックスから、侵害した Windows デバイスを遠隔操作します。

作成者: Bobby Cooke (@0xBoku) & Paul Ungur (@C5pider)

CTI 脅威情報アップデート (2022年2月13日)

Elastic Security Labs は、SIESTAGRAPH を使用したアクティブな侵入活動を実環境で発見しました。SIESTAGRAPH は、Outlook と OneDrive を使用した C2 のために Microsoft の GraphAPI とやり取りします。Azure Outlook C2 通信に関する素晴らしいマルウェア分析ブログは以下をご覧ください。

  • https://www.elastic.co/security-labs/siestagraph-new-implant-uncovered-in-asean-member-foreign-ministry
  • https://www.elastic.co/security-labs/update-to-the-REF2924-intrusion-set-and-related-campaigns

アップデート (2021年9月27日)

  • Azure Outlook C2 にクロスプラットフォームのグラフィカルユーザーインターフェース(GUI)が追加されました!
    • Paul Ungur (@C5pider) に、QT を使用した C2 GUI の作成方法を教えていただき、大いに感謝しています!

C2 GUI を使用した Outlook メールボックス経由のコンピュータ制御

Outlook メールボックス経由のコンピュータ制御

  • このアップデートは、元の Outlook メールボックス制御をサポートしています。

類似のプロジェクト、この TTP が APT/ランサムウェアグループによって実環境で使用されているという CTI 情報、防御アドバイス、Azure C2 脅威エミュレーションに関心のあるレッドチーマーへの推奨事項、またはこのブログ/README に追加すると良いと思われるその他の情報がありましたら、ご連絡いただくか、プルリクエストを送信してください。ありがとうございます!

Azure Outlook C2 について

このプロジェクトは、攻撃者が制御する Azure Outlook メールボックス(これが C2 として機能)にビーコンを送信するインプラントで構成されています。インプラントは、コンパイル時に攻撃者の C2 メールボックスの Azure リフレッシュトークンがハードコードされます。Windows デバイス上で実行されると、インプラントは Microsoft Graph API を介して攻撃者の下書きメールボックスにアクセスします。インプラントは攻撃者の下書きメールボックスからコマンド命令を読み取り、侵害された Windows デバイス上でローカルに命令を実行し、新しい下書きメッセージを作成することでコマンド出力を攻撃者に返します。インプラントは、インプラントのホストプロセスが終了するまで、攻撃者のメールボックスからリモート制御されるこの動作を繰り返します。

作成理由

私は約半年前、Trustwave の SpiderLabs レッドチームでレッドチーミングを始めました。あるエンゲージメントで、伝説的な Stephan Borosh (rvrsh3ll|@424f424f) と一緒に仕事をする栄誉に預かりました。Steve と Matt Kingstone は、Azure ドメインフロンティングについてすべて教えてくれました。そして、ajax.microsoft.com のような正当なドメインを使用して HTTPS 経由で C2 トラフィックを流出できることに衝撃を受けました。さらに、Microsoft の TLS 証明書も使用しています!残念なことに、私がレッドチーミングを始めたのは、Azure でのドメインフロンティングが終焉した時期と同時期でした。Azure でのドメインフロンティングは終わりましたが、Azure でできる素晴らしいレッドチームテクニックはまだたくさんありました。

Steve は、Azure デバイスコードフィッシングを紹介してくれました。その時期、私は Azure と Microsoft Graph API をレッドチーミングに活用するために深く調査しました。Dr. Nestori Syynimaa (@DrAzureAD) の素晴らしい研究成果に基づいて、ツール TokenTactics を作成し、当社の方法論に興味があればブログ The Art of the Device Code Phish も執筆しました。

TokenTactics を作成し MS Graph API を実験しているうちに、Microsoft Graph API を C2 チャネルとして使用できることに気付きました。MS Graph API を C2 チャネルとして使用する方法は多数あり、私だけ(あるいは最初の発見者)ではありません。VX-Underground( @smelly__vx 作成 – HellsGate テクニックの作成者/公開者)は先月、北朝鮮の Advanced Persistent Threat (APT) グループ "InkySquid"(別名 ScarCruft および APT37)が C2 運用に Microsoft Graph API を使用していることを公開しました。このプロジェクトのティーザーを Twitter と LinkedIn で公開した後、数人の DFIR 専門家から、この Microsoft Graph API を C2 運用に使用する手法が、既に数ヶ月前からランサムウェアグループによって実環境で活発に使用されているとのコメントがありました。

レッドチームエンゲージメント中、私は Cobalt Strike を MS Graph API を C2 チャネルとして動作させようと試みました。残念ながら失敗しましたが、これは依然として将来の目標です。これを Cobalt Strike で動作させる際の問題は、MS Graph API が通信に 2 つのトークンを使用することです。最初のトークンはリフレッシュトークンで、最大 90 日間有効です。2 つ目のトークンはアクセストークンで、約 1 時間有効な一時トークンです。MS Graph API への直接通信は、アクセストークンでの認証によって行われます。アクセストークンが期限切れになると、リフレッシュトークンを使用して新しいアクセストークンを取得できます。私はまだレッドチーミングと Cobalt Strike 開発に不慣れだったため、Cobalt Strike の Malleable C2 プロファイルを使用して、新しいアクセストークンを継続的に取得し、これらの変更されるアクセストークンを HTTPS ビーコンのリクエストの Authorization ヘッダーに送信する方法を理解できませんでした。ティーザーを Twitter で公開して以来、Joe Vest、Alfie Champion、その他のコミュニティのロックスターの方々から、これを Cobalt Strike で動作させるための素晴らしい方向性をいただいています!将来的には、このプロジェクトの Cobalt Strike フォローアップができることを願っています ;)

インプラント実行フロー

  1. ハードコードされた攻撃者のリフレッシュトークンを使用して、MS Graph API のアクセストークンを取得します。
  • これは、ホスト graph.microsoft.com への HTTPS TCP 通信を介して行われます。
  • このトラフィックは、正規の Microsoft Web サーバーから返される TLS 証明書を使用して暗号化されます。
  • インプラントは HTTPS 通信に WinInet ダイナミックリンクライブラリを使用します。
  • ハードコードされた攻撃者のリフレッシュトークンは、90 日間有効です。
    • インプラントが侵害された場合、攻撃者はハードコードされたリフレッシュトークンを失効させて、マルウェアリバースエンジニアからのアクセスを制限できます。
  1. インプラントが攻撃者の MS Graph API のアクセストークンを受け取った後、無限ループに入ります。
  • ループ中にインターネット接続がない場合、または接続が切断された場合、インプラントは 3 分間スリープしてから再試行します。
  • インプラントは時間を追跡し、15 分が経過した場合、新しいアクセストークンを取得して通信を継続します。
  1. ループの最初のタスクは、MS Graph API アクセストークンを使用して攻撃者の下書きメールボックスにアクセスし、最も新しいメッセージを読み取って侵害された Windows デバイス上で実行するコマンドを取得することです。
  • SMTP を介してメールが送信されないように、下書きメールボックスが選択されました。
  1. コマンドを受信すると、解析されてどのメタコマンドを実行するかが決定されます。現在、3 つのメタコマンドがあります: cmd、sleep、exit
  • cmd: メタコマンドに続く文字列を取得し、子プロセスを生成して実行します。
  • sleep: メタコマンドに続く単語を取得し、インプラントのスリープを指定された値(ミリ秒)に変更します。
  • exit: ホストプロセスを終了/強制終了します。
  1. メタコマンドが cmd の場合、インプラントはコマンドを実行する子プロセスを作成し、子プロセスは標準出力をパイプに書き込み、コマンド実行後に子プロセスは終了し、ホストインプラントプロセスはパイプを介して子プロセスの出力を読み取ります。
  2. インプラントが実行されたコマンドの出力を取得した後、MS Graph API を使用して、コマンド出力を含む新しい下書きメールを作成します。
  3. 次にインプラントは、空の本文を持つ2つ目の下書きメールを作成します。
  • これにより、攻撃者の下書きメールボックス内にコマンド出力のログが残ります。
  • これにより、攻撃者が次に実行させるコマンドを入力するための新しい下書きメッセージがキューイングされます。
  1. コマンドが実行され出力が攻撃者に返された後、インプラントは攻撃者によって制御される時間スリープし、その後このループを繰り返します。

手順

  1. 以下のブログ記事 The Art of the Device Code Phish に従って、C2 として使用するレッドチーム Azure インフラをセットアップします:
  • Azure アカウントサブスクリプション
    • Azure アカウントを作成する際は、Microsoft DFIR チームがあなたのアカウントをレッドチーム組織に帰属させられるように支援してください。これにより、あなたが実際の脅威なのか、脅威エミュレーションサービスを実施しているのか、あるいは攻撃的なセキュリティ研究を行っているのかを調査する際に、チームの時間を節約できます。
    • 詳細は Nick Carr - Microsoft サイバー犯罪インテリジェンス/調査リード を参照してください。
  • Azure Active Directory テナント
  • Azure Active Directory 用 Office 365
  • Outlook C2 メールボックス用のユーザーを作成
  • TokenTactics PowerShell モジュール をインストール
  1. TokenTactics を使用して、作成した Azure AD のテナント ID を取得します:
root@kitploit:~
PS C:\Users\boku\Desktop\TokenTactics-main> Import-Module .\TokenTactics.psd1
PS C:\Users\boku\Desktop\TokenTactics-main> Get-TenantID -domain theharvester.world
1d5551a0-f4f2-4101-9c3b-394247ec7e08
  1. テナント ID を azureOutlookC2.c ファイル内の char tenantId[] 変数に追加します。
  2. TokenTactics を使用して、C2 メールボックスユーザーで自分自身にデバイスコードフィッシングを実行し、Azure リフレッシュトークンを取得します:
root@kitploit:~
# TokenTactics モジュールを PowerShell セッションにインポート
PS C:\Users\boku> cd .\TokenTactics
PS C:\Users\boku\TokenTactics> Import-Module .\TokenTactics.psd1
# デバイスコードフィッシングリクエストを開始し、'user_code' を取得
PS C:\Users\boku\> Get-AzureToken -Client Graph
user_code        : ERDVDCNHH
  1. microsoft.com/devicelogin にアクセスし、TokenTactics から取得した user_code を入力し、C2 メールボックスユーザーでログインします。
  2. TokenTactics を実行している PowerShell セッションで、自分自身に対する成功したデバイスコードフィッシングからリフレッシュトークンをコピーします。
  • TokenTactics の動作についてさらに情報が必要な場合は、The Art of the Device Code Phish を参照してください。
  1. リフレッシュトークンを azureOutlookC2.c ファイル内の char refreshToken[] 変数に追加します。
root@kitploit:~
void main() {
    // 変数
    char refreshToken[] = "0.AXwAoFFVHfL0AUGcOzlCR-x-CNYOWdOzUgJBrv-q0ikqsBx8ACA.AgABAAAAAA...
//                           ^リフレッシュトークンをここに配置してコンパイル
  1. azureOutlookC2.c をコンパイルします。
root@kitploit:~
# x64 MinGW でコンパイル:
bobby.cooke$ cat compile.sh
x86_64-w64-mingw32-gcc -m64 -mwindows -Os azureOutlookC2.c -o azureOutlookC2.exe -lwininet
bobby.cooke$ bash compile.sh
  1. Windows デバイス上で azureOutlookC2.exe PE ファイルを実行します。
  2. 攻撃者コンピュータからブラウザを開き、outlook.office.com にログインし、メールボックスからインプラントを実行している Windows デバイスを制御します。

最初のプロジェクト目標

  • Microsoft Graph API を C2 チャネルとして使用し、メールからコンピュータを制御する動作する概念実証を作成する。

このプロジェクトの性質

  • このプロジェクトは概念実証であり、攻撃者が C2 運用に Microsoft Graph API をどのように使用できるかを示しています。
  • このプロジェクトは、他の攻撃的セキュリティ研究者が学ぶことを目的としています。
  • 私はこの C2 チャネルを防御または検出する優れた方法を個人的には考案していません。これを私よりも優れた防御者の皆様に提供することで、素晴らしい防御技術が生まれることを願っています。

このプロジェクトの非該当事項

  • このプロジェクト自体は、OPSEC 安全なエンゲージメントにすぐに使用できる完全な機能を備えた C2 ではありません。

防御者からの検出および予防アイデア(追加する場合はプルリクエストを送信してください)

Mehmet Ergene (@Cyb3rMonk) の検出アドバイス

  1. 「Graph API に接続するアプリケーションのベースラインを作成し、異常をチェックすることはアイデアかもしれません。ただし、簡単にバイパスできる可能性があります。」
  2. 「いつものように、ビーコン型トラフィックの検出。(Graph API や類似のものをカバーするように改善します。)」

F-Secure - Alfie Champion からの共有

  • 「Microsoft は、自社サービスの悪用から組織を積極的に防御するための措置を講じている組織の一例です。最近では、Azure アプリケーションの悪意的な使用を検出およびブロックする機能を開発しました。具体的には、F-Secure は、C3 フレームワークで使用されるアプリケーション(OneDrive365 や Outlook365 (O365) など)が悪意的であると検出され、その後 Microsoft によって(約 3 時間以内に)無効にされることを確認しています。」

謝辞 / 参考文献

  • Sektor7 マルウェア開発コース
  • @passthehashbrwn - mingw を使用した動的ペイロード生成
  • Raphael Mudge - Cobalt Strike を使用したレッドチーム運用 (2/9): インフラ
  • Raphael Mudge - Cobalt Strike を使用したレッドチーム運用 (3/9): C2
  • Microsoft Graph REST API v1.0
  • Microsoft WinInet
  • StackOverFlow - プロセスの作成と標準出力のキャプチャ
  • Microsoft - 入出力をリダイレクトした子プロセスの作成

類似の優れたプロジェクト/研究/ブログ

F-Secure C3 - カスタムコマンド&コントロール

  • 「C3 はこの要件に応えて構築されました。これは、レッドチームが特殊な C2 チャネルを迅速に開発および利用できるようにするツールです。」
  • RIP OFFICE365 コマンド&コントロール – あなたをほとんど知らなかった
  • F-Secure C3 - カスタムコマンド&コントロール GitHub リポジトリ

Chirag Savla による Callidus

  • 「Callidus は C# 言語で .net core フレームワークを使用して開発されています。オペレーターは O365 サービスを活用して C2 通信チャネルを確立できます。O365 サービスとの通信には Microsoft Graph API を使用します。」
  • 3xpl01tc0d3r/Callidus GitHub リポジトリ
  • Callidus の紹介 - ブログ記事

Azure アプリケーションプロキシ C2 - Adam Chester (@_xpn_)

  • Azure アプリケーションプロキシ C2 - 研究ブログ
ツールをダウンロード