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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
GraphStrike — Microsoft Graph APIを介したCobalt Strike HTTPSビーコン通信 | Kitploit
ツール/GitHubGitHub/redsiege/graphstrike
ペネトレーションテストフレームワークエクスプロイトフレームワーククラウドセキュリティコマンド&コントロールレッドチーミングAPIセキュリティ
GitHubredsiege/graphstrike

GraphStrike

Microsoft Graph APIを介したCobalt Strike HTTPSビーコン通信

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

人気

すべて見る →

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

すべてのツールを探索

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

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

GraphStrike

gscolor

リリースブログ: GraphStrike: Microsoft Graph API を使用して Beacon トラフィックを消失させる
開発者ブログ: GraphStrike: 攻撃的ツール開発の解剖

はじめに

GraphStrike は、Cobalt Strike の HTTPS Beacon が C2 通信に Microsoft Graph API を使用できるようにするツールスイートです。すべての Beacon トラフィックは、攻撃者の SharePoint サイトに作成された2つのファイルを介して送信され、Beacon からのすべての通信は https://graph.microsoft.com にルーティングされます。

image

GraphStrike には、Graph API 経由の Cobalt Strike HTTPS に必要な Azure リソースを作成するプロビジョナーが含まれています。

image

GraphStrike は Azure に有料のリソースを作成しないため、GraphStrike またはそのプロビジョナーを使用しても追加費用は発生しません。

なぜか?

いくつかの異なる APT が Microsoft Graph API やその他の Microsoft サービスを攻撃キャンペーンに利用しているという脅威情報が公開されています。

  1. BLUELIGHT - APT37/InkySquid/ScarCruft
  2. Graphite - APT28/Fancy Bear
  3. Graphican - APT15/Nickel/The Flea
  4. SiestaGraph - 不明

脅威アクターは、正当なサービスを不正な目的に利用し続けています。graph.microsoft.com のような評価の高いドメインを C2 通信に利用することは非常に効果的で望ましいことですが、時間と労力の面で複雑で困難な場合がほとんどです。ほとんどの C2 フレームワークはアクセストークンの取得やローテーションの方法をサポートしておらず、Graph API を使用できません。そのため、レッドチームがこれらの手法を再現することは難しく、防御側がこの種の活動を観察し、シグネチャを開発する機会が奪われています。GraphStrike はその負担を軽減し、Cobalt Strike の使い慣れた信頼性を保ちながら、Microsoft Graph API を活用するための信頼性が高く再現可能なプロセスを提供することを目指しています。

これは External C2 ですか?

厳密には違います。以前に真の External C2 using Graph API(Beacon トラフィックを Microsoft Teams メッセージとして送信)を構築した経験から、External C2 仕様を満たし、かつ仕事を遂行するカスタムインプラントの開発、保守、統合の負担はよく知っています。GraphStrike は代わりに、Kyle Avery によるオープンソースの User Defined Reflective Loader(UDRL) である AceLdr(このプロジェクトでは 'GraphLdr' として改変)を利用して、Beacon が通常行う WinINet ライブラリ呼び出しをフックし、必要に応じて操作して Graph API を使用します。カスタムインプラントや追加のプロセスは存在せず、フックされたいくつかの Windows API を持つ Beacon プロセスのみです。サーバー側では、Cobalt Strike Team Server のトラフィックを Graph API トラフィックに変換し、その逆を行う Python3 プログラムがあります。

機能

GraphStrike は、通常の Cobalt Strike アクティビティのほぼすべてをサポートします。

  1. Cobalt Strike SOCKS プロキシ経由の Proxychains の使用(ただし非常に遅い)
  2. 大容量ファイルのアップロード/ダウンロード
  3. BOF、execute-assembly など

これには、sleep、exit、remove コマンドの GraphStrike 統合も含まれ、GraphStrike Server のスリープ時間を Beacon に合わせたり、Beacon が終了または削除されたときに SharePoint 内のファイルを削除したりします。

GraphStrike はさらに、元の AceLdr の機能をすべて組み込んでおり、コールスタックスプーフィングを利用するための追加 API も含まれています。

必要条件

GraphStrike を使用する前に、以下が必要です。

  1. SharePoint/O365 ライセンスが割り当てられ、サイトが作成された Microsoft Azure テナント。デフォルトサイトで問題ありません。
  2. そのテナントで全体管理者権限を持つ Azure アカウント。
  3. Python 3.8-3.11注記 #4(およびセットアッププロセス中にインストールされる追加の依存関係)

ファイアウォールルール

  1. Cobalt Strike クライアントが動作する各マシンが、Cobalt Strike チームサーバーマシンのポート 443 および 5000 に接続できることを確認してください。

セットアップ

セットアッププロセスを進める前に、以下の点に注意してください。

1. 一部のコンポーネントは相対パスを使用して他のアセットを探します。以下の指示に従ってディレクトリを変更してください。
2. Cobalt Strike プロファイルは、以下のセットアッププロセスのステップ 5 より前でのみ編集できます。注記 #1

Cobalt Strike チームサーバーを実行するマシンで:

  1. リポジトリをクローンします。
  2. リポジトリディレクトリから、sudo setup/install_dependencies.sh を実行して、必要なシステム依存関係をインストールします。
  3. python3 -m venv virtual を実行し、続けて source virtual/bin/activate を実行して仮想環境を作成し、その中に入ります。
  4. setup ディレクトリに移動し、pip3 install -r requirements.txt を実行します。
  5. ./provisioner.py new を実行し、セットアッププロセスを完了します。
  6. malleable C2 プロファイルとして graphstrike.profile を使用して Cobalt Strike チームサーバーを起動します。
  7. Cobalt Strike クライアントインスタンスを起動し(クライアントマシンでも、TS ボックスでも可能で、その後終了しても問題ありません)、HTTPS Hosts および HTTPS Host(Stager) フィールドに graph.microsoft.com を指定して、ポート 443 の Cobalt Strike HTTPS リスナーを作成します。
  8. メインのリポジトリディレクトリに戻り、./GraphStrike.py を実行して GraphStrike Server を起動します。

Cobalt Strike クライアントを実行するすべてのマシンで:

  1. TS マシンからクライアントマシンに GraphStrike/client ディレクトリをコピーします。これはプロビジョニングが完了した後にのみ行ってください!
  2. Script Manager を使用して GraphStrike.cna を Cobalt Strike にインポートします。
  3. 生のシェルコードでも、Artifact Kit や別のペイロード生成フレームワークを使用してコンパイルされたアーティファクトでも、Cobalt Strike ペイロードを作成します。Artifact Kit ユーザーは以下の注意事項を参照してください!
  4. 利益を得る。

Artifact Kit ユーザー

GraphLdr のサイズのため、Artifact Kit ユーザーは、GraphStrike を Artifact Kit で生成されたペイロードと互換性を持たせるために、特定のオプションを指定して再コンパイルする必要があります。具体的には、'Stage Size' と 'RDLL Size' フィールドを指定して、100K RDLL サイズを使用する必要があります。動作する構文の例を2つ示します。

./build.sh pipe VirtualAlloc 505029 100 false false none /opt/cobaltstrike/artifacts
./build.sh peek HeapAlloc 492376 100 false true indirect /opt/cobaltstrike/artifacts

クリーンアップ

TS + GraphStrike Server を実行しているマシンで:

  1. GraphStrike Server を停止します。
  2. setup ディレクトリに戻り、./provisioner.py delete を実行して作成された Azure アセットを削除します。

注記

順不同ですが、GraphStrike を最大限に活用するためのいくつかの提案と観察事項です。

  1. GraphStrike に付属のプロファイルは非常に最小限です。これは意図的なものです。プロファイル内の既存のフィールドを変更すると、GraphStrike が動作しなくなる可能性があります! すでに定義されていない他のセクションに追加のプロファイル言語/動作を追加できるはずです(例:パイプ名のカスタマイズ、インジェクション動作など)。プロファイルの編集は、プロビジョナーを実行する前に行う必要があります!
  2. Beacon と GraphStrike Server の両方が C2 通信に使用する Azure アプリケーションは、1200 リクエスト/分にレート制限されています。GraphStrike Server はベースラインとして 120/分を使用します。Beacon のスリープ時間が短いほど、より多くのリクエストが行われます。さらに、GraphStrike を使用して作成された各 Beacon は、その 1200/分の制限の一部を使用します。1つの Beacon をインタラクティブに操作することは可能ですが、複数の Beacon を同時にインタラクティブに操作することはおそらくできません。レート制限の問題が発生した場合は、ビーコンのスリープ時間を増やすか、実行中のビーコンの数を減らすか、またはその両方を検討してください。
  3. GraphStrike Server のスリープ時間は、発行された sleep コマンドに応じて Beacon ごとに変化しますが、これは実際には、GraphStrike Server が TS にタスクを確認する前に指定された時間スリープすることを意味します。Beacon が TS からタスクを受け取ったらすぐに処理するという意味ではありません。Beacon は、TS のタスクを取得するために SharePoint にアクセスする前に指定された時間スリープしますが、非同期 C2 の性質上、これは GraphStrike Server がタスクをアップロードするタイミングと同期しません。
  4. Beacon が正常に終了せずに停止した場合(AV、クラッシュなど)、Beacon はまだ TS に接続しているように見えます。実際に死んでいることは、コマンドを発行したときにはじめて明らかになります。実際に TS に接続しているのは GraphStrike Server であり、Beacon の生存状態を反映しているわけではありません。これが非同期 C2 の性質です。
  5. GraphStrike は 1:1:1 モデルで動作します。1つの SharePoint サイトは 1つの GraphStrike Server に関連付けられ、さらにそれは 1つの TS に関連付けられます。2つの TS/GraphStrike Server を1つの SharePoint サイトに接続しようとすると問題が発生します。複数の Cobalt Strike クライアントを1つの TS / GraphStrike Server に接続することは可能で、各クライアントはプロビジョニングプロセスで生成された 'client' フォルダのコピーが必要です。
  6. GraphStrike で使用される az ユーティリティと Python 3.12 の互換性に関する既知の問題があります。
  7. AceLdr のドキュメントを確認することをお勧めします。そのプロジェクトのすべての注記がここにも適用されます。

制限事項

GraphStrike には以下の制限があります。

  1. x64 Beacon のみサポートされています。
  2. ステージド Beacon はサポートされていません。
  3. GraphStrike は WinINet ライブラリとのみ互換性があります。Beacon の新しい WinHTTP ライブラリオプションはサポートされていません。
  4. Beacon の右クリックメニューからの sleep コマンド発行はサポートされていません。代わりにコマンドラインオプションを使用して Beacon をスリープさせてください。
  5. GraphStrike は Linux 上の Cobalt Strike インスタンスのみをサポートしています。Windows サポートも実装可能ですが、Python ファイルと Aggressor スクリプト内のパスを変更するだけの問題です。

クレジット

GraphStrike は以下の方々の貢献なしには実現しませんでした。

  1. Kyle Avery: AceLdr
  2. Didier Stevens: cs-decrypt-metadata.py
  3. Red Siege チームの Mike Saunders、Corey Overstreet、Chris Truncer、Justin Palk の各氏。彼らは GraphStrike のベータテストを快く引き受け、リリース前に修正された複数の問題を特定してくれました。
ツールをダウンロード