エグゼクティブ サマリー

AzureHoundは、BloodHoundスイートの一部である侵入テストを目的としたデータ収集ツールです。脅威アクターはこのツールを悪用して、Azureリソースを列挙し、潜在的な攻撃経路をマッピングすることで、さらなる悪意のある操作を可能にしています。ここでは、擁護者がこのツールを理解し、不正な使用から身を守ることを支援します。

AzureHoundの機能と一般的な使用方法について説明し、そのツールの使用方法をMITRE ATT&CKフレームワークにマッピングします。本稿では、関連するATT&CK技術に焦点を当て、ツールの実行例を通して、アクティビティがAzureログソースやCortex XDRにどのように表示されるかを説明します。

AzureHoundのようなツールは、脅威アクターがクラウド環境で迅速かつ効率的に活動することを可能にするものです。このようなツールを使用する脅威アクターは、調査すべき場所を知っている熟練の防御担当者にとっては、しばしば検出可能な証拠を残します。本稿では、検出のチューニングをはじめ、インシデント対応プロセスの改善、脅威ハンティングの実施、セキュリティ機能の管理に役立つ実用的なインテリジェンスも取り上げています。

パロアルトネットワークスのお客様は、以下の製品およびサービスを通じて、ここに記載されている脅威に対する確実な保護を構築いただけます。

情報漏えいの可能性がある場合、または緊急の案件がある場合は、Unit 42インシデント レスポンス チームまでご連絡ください。

Unit 42の関連トピック Azure, 制御プレーン, データプレーン, セキュリティ ロギング

AzureHoundツールの背景

AzureHoundは、Goプログラミング言語で書かれたオープンソースのデータ収集ツールです。Windows、Linux、macOS用にプリコンパイルされています。

ツールは、Microsoft GraphとAzure REST Application Programming Interface(API)を使用してデータを収集するものです。Entra IDとAzure環境を列挙し、IDやその他のさまざまなリソースに関する情報を収集するように設計されています。この列挙の目的は、収集したデータを使用して、ターゲットのAzure環境内で特権昇格への潜在的な攻撃経路を特定することです。

AzureHoundは、その出力をBloodHoundが取り込むことができるJSONファイルに送信することができます。 BloodHoundは、Entra ID、Azure、Active Directory(AD)環境内の隠れた関係をグラフィカルに明らかにし、アタックサーフェスを特定するために設計された可視化ツールです。

Microsoft Graph APIは、Microsoft 365およびMicrosoft Entra ID内の組織データとIDへのプログラムによるアクセスを開発者に提供します。

インフラストラクチャ層で動作するAzure REST APIでは、Azure Resource Manager(ARM)へのアクセスを取得できます。これはストレージ、仮想マシン、ネットワークなど、すべてのAzureリソースのコントロールプレーンに該当するものです。

AzureHoundは、侵害を受けた環境から実行される必要はありません。これは、Microsoft GraphとAzure REST APIの両方が外部から利用可能であるためです。

脅威アクターによるAzureHoundの使用状況

AzureHoundは、クラウドの脆弱性を積極的に見つけ、修正するために、セキュリティの専門家(ディフェンダーやレッドチームなど)が使用することを意図としたツールです。しかし、脅威アクターによって、標的のAzure環境にアクセスした後、脆弱性を見つけるために悪用されることもあります。

脅威アクターはAzureHoundを使用して、Azure環境における複雑な発見手順を自動化しています。これは、ユーザー階層を発見し、価値の高いターゲットを特定するのに効果的です。

Azureの内部情報を収集することは、ターゲットとなるAzure環境の全体像を把握しなければわからないような、設定ミスや間接的な権限昇格の機会を発見するのに役立ちます。

脅威アクターはまた、標的の環境に最初にアクセスした後、ツールを実行し、アクセス権を得た資産に対してAzureHoundをダウンロードして実行します。

最近の2025年8月でも、本ツールを使用した脅威アクターの活動は、重要なアタックサーフェスとしてのクラウド環境への継続的な重点を強調しています。公開されている調査によると、AzureHoundは、いくつかの侵害後の作戦の一部であることが確認されています。

  • Unit 42は、イランの支援を受けたグループ、Curious Serpens(別名: Peach Sandstorm)を追跡調査しており、このグループは少なくとも2013年から活動していることが確認されています。グループは、AzureHoundを使用してターゲットのMicrosoft Entra ID環境の内部探索を行うなど、攻撃チェーンの中でAzureクラウド環境を悪用するように進化してきた背景があります。
  • 2025年5月、Microsoftは、国家支援を受けている脅威アクターと疑われるグループについて報告しています。Void Blizzardと称される当該グループは、攻撃の発見段階でAzureHoundを活用しており、Entra IDのコンフィギュレーションを列挙していることが報告されています。
  • 2025年8月、Microsoftはランサムウェアのオペレーターによるキャンペーンを報告しており、オペレーターをStorm-0501として特定しています。ハイブリッドでマルチテナントなAzure環境でオンプレミスを運用する脅威アクターは、AzureHoundを使用してターゲットのEntra IDテナントを列挙しています。

MITRE戦術のディスカバリ

MITRE ATT&CK フレームワークは、サイバー攻撃の戦術、技術、手順(TTPs)を記述した、脅威アクターの行動に関するセキュリティ実務者とコミュニティ主導の知識ベースです。このフレームワークは、インテリジェンスとリサーチを共有するための共通の語彙を提供するものであり、サイバー攻撃を構造的に分析し、脅威アクターの活動の傾向を追跡するのに役立ちます。

MITRE ATT&CK フレームワークにおけるディスカバリとは、脅威アクターが初期アクセスを獲得した後、標的環境について学習するために使用する検出テクニックを指します。MITRE ATT&CKでは、クラウドの技術や手順がエンドポイントとは異なることを認識し、エンタープライズ マトリックスのクラウドに特化したサブセットをクラウド マトリックスとして特定します。クラウドマトリックスからの検出テクニックに焦点を当てます。

Azureでは、ディスカバリ(検出)プロセスでは以下のような詳細を収集することができます。

  • ユーザー
  • グループ
  • サービス プリンシパル
  • ロール
  • デバイス
  • ストレージ アカウント
  • アプリケーション
  • アクセス許可

脅威アクターは、攻撃を容易にするために、Azure環境内のリソースと関係を理解しようと試みます。

AzureHoundは、このプロセスを加速させるものであり、データを収集する効率的な手段として脅威アクターは本ツールを使用して標的のAzure環境に対する潜在的な攻撃経路をマッピングしています。これらの攻撃経路には以下のようなものが含まれます。

  • 特権昇格の機会
  • 横方向の移動経路
  • 高価値なアカウントとの関係(グローバル管理者またはその他の特権ロールなど)

MITREのディスカバリ テクニック

AzureHoundを使用する脅威アクターの観点からすると、各ディスカバリ(検出)テクニックは、ターゲットのクラウド環境の包括的な理解を構築するためのステップを意味します。

AzureHoundのようなコマンドライン ツールを理解するために、ユーザーは通常、オンラインドキュメントやツールの-h、--help、その他の使用法パラメータからの出力を参照します。オンライン ドキュメントと比較して、AzureHoundの2.6.0バージョンでlist -hパラメータを介して完全なリストは、潜在的な悪意のある使用状況を分析するコンテキストで有用な追加の検出オプションを明らかにするものです。これには、以下のような、脅威アクターが特に関心を持つコマンドが含まれます。

  • function-apps
  • function-app-role-assignments
  • storage-accounts
  • storage-containers
  • subscription-user-access-admins
  • web-apps

上記のコマンドは、クラウド環境で一般的に悪用されるサービスに関するベースライン情報を脅威アクターに与えるものです。この分析で詳述するコマンドは、ツールからの直接的なアウトプットに基づいています。

T1087.004: アカウント ディスカバリ: クラウド

AzureHoundは、Entra IDテナント内のユーザー、デバイス、およびサービス プリンシパルを列挙してID情報を収集するツールです。 AzureHoundは、Entra IDテナント内のユーザー、デバイス、およびサービス プリンシパルを列挙してID情報を収集するツールです。

標的環境の基礎的な理解を確立するために、脅威アクターはまず、その中で活動するアイデンティティを特定します。この初期列挙によって、クレデンシャル盗難またはなりすましの潜在的な標的の名簿を作成します。このツールは、ユーザー、デバイス、サービス プリンシパルを含むすべてのIDを、それらの所有関係とともに自動収集するもので、これによりテナントに存在するアイデンティティの詳細なステータスが得られます。

AzureHoundパラメータは、MITREの技術アカウント ディスカバリを容易にします。クラウド アカウントには以下が含まれます。

  • list users
  • list devices
  • list device-owners
  • list service-principals
  • list service-principal-owners

AzureHoundは、以下のような複数の認証手段をサポートしています。

  • ユーザー名とパスワード
  • リフレッシュ トークン
  • JSON Webトークン(JWT)
  • サービス プリンシパルのシークレット
  • サービス プリンシパル証明書

MicrosoftのEntra IDドキュメントでは、Azureトークン タイプについて詳しく説明しています。この例では、AzureHound CEリファレンス ドキュメントのガイダンスに従って、デバイス コード フローを使用して生成したAzureリフレッシュトークンを使用します。

脅威アクターは、利用可能な認証手段は何でも利用します。盗まれたユーザー名とパスワードは、多要素認証(MFA)疲労攻撃に組み入れることで、ログインに影響を与えることができます。あるいは、盗まれたトークンでログインすることもあります。Racoon StealerRedlineのようなインフォステラ(情報窃取ツール)は、ユーザーのブラウザからクッキー、認証情報、セッショントークンを抽出することができます。Flareの研究者らは、情報窃取型マルウェアから取得したセッショントークンがAzureのトークンを漏洩させていることを明らかにしています。

図1内のユーザーリクエストのリストで表示されているように、AzureHoundのコマンドライン ディスカバリの出力は、脅威アクターにとって関心のある情報を明らかにするものです。このコマンドの実行例では、すべてのEntra IDユーザーをリストアップし、users.json というファイルに出力を送信しています。

AzureHound 2.6.0ツールの出力を表示するコンピュータ画面上のテキスト。出力は、プロセスが完了し、ソフトウェアが優雅にシャットダウンすることを示す。
図1.AzureHoundを実行してユーザーを列挙する。

以下のデータは、Entra ID Userレコードで利用可能な場合、各ユーザのデフォルトで返されるフィールドの1つです。

  • displayName
  • jobTitle
  • lastPasswordChangeDateTime
  • mail
  • userPrincipalName
  • userType
  • tenantId
  • tenantName

図2は、AzureHoundからの生出力の画面キャプチャで、上記のフィールドの一部が表示されています。

アカウントID、作成日、電子メール、その他の属性のフィールドを含む、ユーザー アカウント データ構造に関連するコード スニペットのスクリーンショット。
図2.AzureHoundリストユーザーの生の出力。

このデータは、脅威アクターが標的組織内の主要ユーザーを標的として、攻撃の連続的な段階を踏むのに役立ちます。例えば、脅威アクターは全ユーザーをJSONファイルにダンプし、次のような単語を含む、価値の高いターゲットを示す役職名を検索することができます。

  • 管理者
  • アプリケーション
  • アイデンティティ
  • クラウド

これらのジョブ ロールはAzureテナント内で昇格した権限を持つため、これらのターゲットは価値が高いとみなされます。

T1069.003:パーミッショングループのディスカバリ: クラウド グループ

AzureHoundは、管理ロールとセキュリティ グループのメンバーシップを検出し、潜在的な特権昇格経路をマッピングすることができます。

脅威アクターは、ターゲット環境内のアイデンティティを知ったら、パーミッション構造を発見することで、アイデンティティ間の関係を理解する必要があります。

このテクニックは、管理者ロールとグループ メンバーシップをマッピングするものであり、悪用可能な特権昇格経路を見つけることに重点を置くものです。これは、グループやロールそのものだけでなく、アイデンティティとリソースを結びつける特定のロール割り当ての網を収集し、誰が何にアクセスできるかを明らかにすることによって達成されます。

パーミッション グループのディスカバリ:クラウド アカウント、AzureHoundには以下の機能があります。

  • list groups
  • list roles
  • list group-members
  • list group-owners
  • list role-assignments
  • list app-role-assignments
  • list key-vault-access-policies
  • list management-group-role-assignments
  • list resource-group-role-assignments
  • list subscription-role-assignments
  • list virtual-machine-role-assignments

上記のオプションが返すデータは、AzureHoundが認証に使用するIDによって異なります。AzureHound は、Azure内で実行するアカウントに付与された権限に基づいて情報を収集します。これらのアカウントは、サブスクリプションまたはリソース グループレベルでリーダー以上のロールを持っている場合にのみ、ポリシー定義と割り当てを列挙することができます。

図3は、テナント内のグループを列挙するコマンドの結果を示しています。

AzureHoundからのログ メッセージを表示する端末の画面キャプチャ。タイムスタンプ、ストレージ アカウントのリストに関する通知、収集プロセスの期間などが含まれ、シャットダウン メッセージで終わる。
図3.AzureHoundを実行してグループを列挙する。

脅威アクターは、Entra IDのグループ、ロール、およびロールの割り当てを列挙します。これにより、ユーザー、アプリケーション、およびリソースにアクセスおよび権限を分散する方法を総体的に定義します。脅威アクターは、グローバル管理者や特権ロール管理者などの高度な特権ロールを特定し、どのユーザーまたはサービス プリンシパルがそれらに割り当てられているかを特定することができます。この情報は、ネスト化されたグループ メンバーシップを介した特権昇格経路を明らかにすることもできます。

役割の割り当てによって、過剰な、あるいは誤ったパーミッションが明らかになることがあります。この情報は、脅威アクターが特権の昇格、横方向の移動、追加データ収集の機会を発見するのに役立ちます。

AzureHoundはBloodHoundと統合し、潜在的な特権のエスカレーションとアーキテクチャの青写真を視覚的にマッピングするグラフを作成します。これは、ユーザー、グループ、アプリ、サブスクリプション、およびそれらのパーミッションのリストなどの膨大な生データを使用して行われます。

手作業で点と点を結ぶのは時間がかり、エラーも起こりやすいです。このような点から、BloodHound GUIは、脅威アクターにとって有用な分析ツールとなります。

収集したデータをインポートすることで、ツールはテキストの行を重要な関係を示す生きた地図に変換します。高度な特権を持つユーザーに関するこの情報は、脅威アクターにクレデンシャル窃取の対象となる ユーザーのリストを与えます。図4は、グローバル管理者ロールが直接割り当てられているユーザー、またはグループ メンバーシップを通じて継承されているユーザーを示したものです。

グローバル管理者のインターフェイスを表示した画面。さまざまな相互接続ノードがあり、一部はピンクと青で強調表示され、さまざまなエンティティとその関係を表している。
図4.グローバル管理者に繋がるBloodHoundのパス。

機密保持のため、テナント情報だけでなく、ユーザーやグループのラベルも隠したり、見えなくしたりしています。

T1619:クラウド ストレージ オブジェクトのディスカバリ

AzureHoundは、Azureストレージ アカウントとその中のBLOBコンテナを検出し、データがどこに保存されているかを特定することができるツールです。

多くの脅威アクターの主な目的はデータの流出であり、データがどこに保存されているかを特定することは非常に重要です。この技術には、クラウド ストレージ リソースを発見することが含まれます。脅威アクターはAzureHoundを使用して、Azureストレージ アカウントとその中のブロブコンテナを特別にターゲットにして列挙し、潜在的にセンシティブなデータの場所を明らかにすることができる。

AzureHoundには、Azureストレージ アカウントとコンテナの両方をカバーする、ストレージ オブジェクト検出のための2つのオプションがあります。

  • list storage-accounts
  • list storage-containers

図5は、AzureHoundを介したストレージ アカウント検出の例を示したものです。コマンドに渡されたIDがアクセスできるすべてのストレージアカウントを列挙していることが分かります。

AzureHoundツールがAzure ADグループを一覧表示するコマンドライン インターフェイス。プロセスは、Ctrl+Cキーを押して強制終了することを提案しながら、シャットダウンして終了している。
図5.AzureHoundを実行してストレージ アカウントを列挙する。

list storage-accountコマンドの出力は、ストレージ アカウント設定に関する重要な情報を明らかにするものです。出力は、以下を含むストレージ アカウント リソース定義全体から構成されます。

  • 名前
  • 拠点
  • 主要なKey Vaultのプロパティ
  • レプリケーション タイプ
  • DNSエンドポイント
  • ネットワーク アクセス制御リスト(ACL)

Microsoftのリファレンス ページでは フルストレージ アカウント設定の例をご確認いただけます。

このデータの中で、ストレージ アカウントの名前は非常に重要であり、ストレージ アカウントに接続するために使用される一般に解決可能なDNS名であるサービスエンドポイントと結びついています。たとえば、ストレージ アカウントblobコンテナのデフォルトでは、ストレージ アカウント名、コンテナ名、blob名を使用して、次のようにサービス エンドポイントを定義することができます。

hxxps[:]//mystorageaccount.blob.core.windows[.]net/mycontainername/myblobname

ストレージ アカウントはカスタム ドメイン名と紐付けることもでき、これは出力のcustomDomainキーと値のペアになります。カスタム ドメインやその他の詳細につきましては、Microsoftのストレージ アカウント概要を参照してください。

データ窃取を試む脅威アクターは、ストレージ アカウントのデータにアクセスしようとします。しかし、これらのサービス エンドポイントは、ストレージ アカウント ファイアウォールのネットワークACLによって保護することができます。この情報をもとに、脅威アクターはファイアウォール設定を構成するネットワーク許可リストと拒否リストを理解することができます。

図6は、ストレージ アカウント サービスがデフォルトで拒否ポリシーを採用しており、アクセスを2つの/24ネットワーク範囲およびAzure Monitor、Backup、File Syncなどの信頼されたAzureサービスに限定していることを示しています。

Azure Servicesのネットワークルールのスニペットのスクリーンショット。特定のIPアドレスで「許可」に設定された2つのIPルールを示している。
図6.ストレージ アカウントのネットワークACL。

Azureの信頼されたサービスとは、Microsoftが所有するサービスの事前定義されたリストのことで、デフォルトでは、標準的なネットワークACLをバイパスして、他のAzureリソースへの権限とアクセスが許可されています。このリストはMicrosoftが管理しており、リソースの種類(ストレージ ブロブ、Key Vaultなど)固有のものです。

T1526:クラウド サービス ディスカバリ

AzureHoundを使用することで、どのAzureプラットフォームサービス(Web Apps、Function Apps、Logic Appsなど)が使用されているかを識別できます。

攻撃者は、ストレージやIDだけでなく、どのようなプラットフォーム サービスが使われているかを把握しようとするだろう。 これらは攻撃に利用できるユニークな経路となる可能性があるからです。Web Apps、Function Apps、Kubernetesクラスタ(AKS)などのサービスを列挙することで、脅威アクターは設定ミスや脆弱性の可能性があるアプリケーション プラットフォームを特定することができます。これにより、脅威アクターは、潜在的なハイレベル サービスのターゲット メニューを得ることができます。

クラウド サービス ディスカバリにおいて、AzureHoundは以下の機能を備えています。

  • list apps
  • list web-apps
  • list function-apps
  • list logic-apps
  • list automation-accounts
  • list managed-clusters
  • list vm-scale-sets
  • list container-registries

アプリケーションのリストがあれば、脅威アクターの検索対象は基盤となるリソースにまで広がります。これにより、自動化パイプライン、Kubernetesクラスタ、クラウドの王冠のためのコンテナ登録のマッピングが可能になります。誤った設定のオートメーション アカウント1つで、攻撃者自身のコードを高い権限で実行できる可能性があります。

この検索には、一般に公開されているコンテナ レジストリのテストや、ハードコードされた認証情報、APIキー、脆弱なライブラリの探索のためのオフライン分析のためのイメージの取得も含まれます。また、放棄された資源を発見し、新たな強力な攻撃戦略を提供する可能性もあります。

例えば、ひとたび脅威アクターが忘れ去られたテスト自動化パイプラインを発見すると、その強力なアイデンティティとリソースグループに対する権利を悪用することができます。攻撃者は、この信頼されたIDを使用して、オートメーションのランブックに悪意のあるコードを注入し、クラウド パイプラインがトリガーされるのを待って、昇格した権限で悪意のあるコードを実行することができます。

クラウド パイプラインの脅威についてさらに詳しく知りたい場合は、Unit 42によるクラウド供給パイプライン攻撃の解剖分析をご覧ください。

T1580: クラウド インフラストラクチャ ディスカバリ

AzureHoundは、仮想マシン、Key Vault(キー保管庫)、管理グループなどの基盤となるインフラ リソースを列挙するツールです。

標的環境のアーキテクチャーを完全に把握するためには、脅威アクターは基盤となるインフラ コンポーネントを見つける必要があります。この手法では、コア リソースとそれを含む管理コンストラクトを列挙します。

脅威アクターは、以下を列挙することで、クラウド デプロイメントの完全なアーキテクチャマップを構築することができます。

  • 仮想マシン
  • Key Vault
  • テナント、サブスクリプション、リソースグループの階層構造

クラウド インフラストラクチャのディスカバリにおいて、AzureHound は以下の機能を備えています。

  • テナントのリストアップ
  • サブスクリプションのリストアップ
  • リソース グループのリストアップ
  • リスト管理グループのリストアップ
  • 仮想マシンのリストアップ
  • Key-Vaultのリストアップ

以前に示したBloodHoundユーザー マッピングと同様に、このユースケースでは、攻撃者がBloodHoundを使用してインフラストラクチャ要素を視覚的に調べる方法について理解することができます。図7は、これらKey Vaultに関する調査結果を示したものです。機密保持のため、ラベルやテナント情報は伏せたり黒塗りにしています。

Microsoft AzureHoundポータル インターフェースのスクリーンショット。テナント、サブスクリプション、リソース グループ、およびKey Vaultを表すアイコンが付いたネットワーク トポロジー ダイアグラムが表示されている。アイコンは、関係を示す線で結ばれている。右側の矢印は、ナビゲーション メニューの特定の項目を指します。
図7.BloodHoundによるKey Vaultのイラスト。

これで脅威アクターは、出力をスクロールする代わりに、テナント インフラ内の主要なKey Vaultを完全に俯瞰できるようになりました。テナントから個々のリソースまでの階層を視覚的にナビゲートすることができます。

例えば、Key Vaultに加えて、攻撃者はProductionサブスクリプションを表すノードをクリックすることが可能です。そして、子孫オブジェクトリストから仮想マシンを選択し、そのオブジェクトに接続されているすべての仮想マシンを即座に確認することができます。

防御担当者の視点

AzureHoundは、ユーザー、ロール、権限を列挙するうえで、Microsoft GraphとAzure REST APIに依存しています。つまり、効果的な防御には、アクセス制御、エンドポイント セキュリティ、APIアクティビティへの可視性を組み合わせたレイヤーアプローチが必要であることがわかります。目指すべき目標は、脅威アクターが認証し、実行し、組織環境で発見されずに活動することを著しく困難にすることです。

緩和策

防御担当者の観点からは、安全なコンフィギュレーションは不可欠である。MITREのディスカバリー手法の説明で前述したように、AzureHoundは、公開されているドキュメント化されたAPIを介して、特定のテナント内のAzureユーザーとリソースに関する情報を取得するために使用することができます。これらのAPIリクエストは、テナント内のセキュリティ脆弱性をさらしてしまう可能性もあるものです。設計上、この情報には、テナントごとに、そのテナントで読み取り権限を持つEntra IDアカウントを持つユーザーがアクセスできます。

Azureアカウントのセキュリティを強化するため、お客様にはMicrosoftのベストプラクティスに従うことをお勧めします。さらに、この手法が成功するために必要な不正アクセスを防ぐため、管理者には追加のセキュリティ対策の実施をお勧めします。

Microsoftが推奨するベストプラクティスと追加のセキュリティ対策に加え、以下の対策を講じることで、組織の安全性をさらに高めることができます。これらの中には、ベストプラクティスと交差するものもあれば、環境をさらに強固にするために実施できる補完的なコントロールやポリシーの考慮事項もあります。

防御の第一線は、ユーザー、グループ、またはサービスプリンシパルができることを制御する、強力なIDとアクセス制御です。組織は、すべてのアカウント、特に機密データや管理ロールにアクセスできるアカウントに対して、フィッシング攻撃に耐性のあるMFAを導入することが求められます。また、グローバル管理者または特権ロール管理者のような高度な特権タスクを実行するユーザーは、それらの職務のために別のアカウントを維持する必要があります。

Microsoft Entra ID PIMや、より広範な特権アクセス管理(Privileged Access Management: PAM)プラットフォームなどの特権ID管理(Privileged Identity Management: PIM)ソリューションは、組織が特権IDへのアクセスを管理、制御、監視することを可能にします。これらのソリューションは、標準的なユーザー認証情報の漏洩が脅威行為者に昇格アクセスを許可することを防ぐのに役立ちます。

IDおよびアクセス制御に加えて条件付きアクセスポリシー(CAP)は、ユーザーとアプリケーションのアクセスを制限することで、AzureHoundへの暴露を軽減するのに役立ちます。CAPはEntra IDの一部であり、認証時に強制されます。MFA、デバイスのコンプライアンス、信頼できる場所、クライアント アプリケーションの制限など、CAPで定義された要件を実施することで機能します。このため、CAPは、攻撃者が有効な認証情報を取得していたとしても、AzureHoundがMicrosoft GraphやAzure管理APIにアクセスするのをブロックすることができます。

もう1つの効果的な対策は、トークン バインディングで、認証トークンを特定のデバイスに確実に結びつけることです。この機能はEntra IDにおいてトークン保護として知られており、2025年8月に一般提供に移行しました。

上述の通り、Void Blizzardは盗まれた認証トークンを攻撃に使用しているように、これらのトークンは、AzureHoundによるMicrosoft Graph APIを含む、ターゲット環境への認証に使用できるものです。トークン バインディングは、盗まれたトークンを別のデバイスからは無効にするものであり、トークン盗難攻撃を軽減するのに役立ちます。

さらに、セキュア ブラウザでは、プライベートまたは特権アプリケーションへのアクセスを遮蔽し、発行されたトークンがセキュア ブラウザからのみ有効であることを保証することによって、同様の保護を提供することができます。このため、AzureHoundなどのツールでは、コマンドラインからのトークンは無効になります。

AzureHoundやその他の脅威を検知・防止するためには、アイデンティティ管理に加えて、エンドポイント レベルでの可視化が不可欠であることに変わりはありません。クラウド ディテクション&レスポンス(CDR)などのクラウド ワークロードを含め、エンドポイント ディテクション&レスポンス(EDR/XDR)ツールがすべての資産に展開されていることを確認することが大切です。

Unit 42 グローバル インシデント レスポンス レポート(2025年版)では、脅威アクターが管理対象外の資産を標的とする手法について取り上げています。このような資産とは、エンドポイント検出・対応ツール(EDR/XDR/CDR)を持たず、脅威が発見される可能性が低いと定義された資産です。

また、攻撃者が新しいコンピュート インスタンス(仮想マシン、コンテナ、サーバーレス機能など)を作成するのを検知するために、組織がクラウド セキュリティ体制管理(CSPM)とCDRツールを組み合わせて使用することも極めて重要です。これはまた、新しく作成されたコンピュート インスタンスに対する監視機能を維持するために、クラウド エンドポイント エージェントが適切にインストールされ、設定されていることを確認するのにも役立ちます。可視性のギャップを埋めることは、脅威アクターが検知されるのを回避する能力を大幅に低下させることにつながります。

AzureHoundは、Azureテナント内でアプリケーションを登録できるIDを明らかにするため、アプリケーションの登録を制御することも、AzureHoundに対する効果的な緩和策の1つです。脅威アクターは、ユーザーがアプリケーションを登録し、自分自身に昇格した権限を付与できるようにするデフォルト設定を利用することがよくあります。これにより、双方向のログインやMFAなしで、広範なディレクトリの可視化が可能になります。

ユーザ主導のアプリ登録を無効にし、管理者の同意ワークフローを要求することで、脅威アクターが悪意のあるサービス プリンシパルを作成したり、トークン化されたアプリベースの認証を通じてMFAをバイパスしたりする可能性を低減します。

ロギングに関する考察

Microsoft Graphのアクティビティ ログは、2023年10月よりプレビュー版として提供され、2024年4月に一般提供(GA)を開始しました。この重要な機能を活用することで、防御担当者はGraphサービスへのHTTPリクエストを監視し、疑わしい列挙パターンを検出することができます。

デフォルトでは Microsoft Graphアクティビティ ログは有効になっていません。防御担当者は、Microsoft Entra IDを構成して、Microsoft Graphアクティビティ ログをAzure Event Hubsなどの宛先にエクスポートする必要があります。これにより、セキュリティ情報・イベント管理(SIEM)ソリューションやEDR、XDR、CDRツールとの統合が可能になります。これらのログは、AzureHoundのようなツールがターゲットとするエンドポイントを含め、Graph APIを通過したAPIコールの詳細な詳細をキャプチャするものです。

一部のAzureHoundリクエストは、management.azure[.]com ARMエンドポイントでAzure REST APIを呼び出します。これらのARMプロバイダーへのリクエストは、Graph API呼び出しとは異なる方法でログ記録され、可視性の課題を引き起こします。

アクティビティ ログでは、新規リソースの作成やストレージアカウントの削除など、AzureHoundリクエストとは関係のないARMプロバイダからのサブスクリプションレベルのイベントを収集できます。AzureHoundが呼び出す読み取りおよび一覧表示操作(REST GET呼び出し)は、アクティビティ ログに記録されません

診断設定は、リソース プロバイダー レベルのログを記録するために、さまざまなリソース タイプに対して明示的に有効化できますが、これにより記録されるのはデータ プレーン レベルでのサービス エンドポイント読み取り操作のみです(例: mystorage.blob.core.windows[.]net または myvault.vault.azure[.]net)。ARMプロバイダーへのリクエストが行われる制御プレーンレベルでは機能しません。その結果、ストレージアカウントの一覧表示(azurehound list storage-accounts)やKey Vaultの一覧表示(azurehound list key-vaults)など、AzureHound の Azure REST API への列挙呼び出しは、アクティビティログやリソースログに表示されません。

AzureHound GitHubリポジトリは、AzureHound コマンドが使用するAPIに関する追加のコンテキストと情報を提供し、その結果としてイベントを確認すべきログを特定します。

たとえば、前述のazurehound list storage-accountsコマンドの詳細については、AzureHound API クライアントコードのストレージ アカウントに関する部分を参照してください。図8は、ストレージ アカウントの列挙にAzure REST APIを使用するAzureHoundクライアントコードを示したものです。

Microsoft Azure Storage Accountに関連するコード スニペットのスクリーンショット。サブスクリプションIDとAPIバージョン日付のパラメーターがある。
図8.AzureHoundストレージ アカウント列挙ソースコード。

図9は、Graph APIを使用したロール列挙リストロール コマンドのためのAzureHoundクライアント コードを示したものです。

Azure ADとMicrosoft Graph APIを使用したコーディング スクリプトのスクリーンショット。白地に赤と青で関数と変数が書かれている。
図9.AzureHoundロール列挙ソースコード。

Azure REST API ARMエンドポイントを経由するため、ログに表示されない可能性のあるAzureHoundリスト コマンドには、以下のものが含まれます。

  • automation-accounts
  • container-registries
  • function-apps
  • key-vaults
  • logic-apps
  • managed-clusters
  • management-groups
  • resource-groups
  • storage-accounts
  • storage-containers
  • virtual-machines
  • vm-scale-sets
  • web-apps

このロギングの弱点は、AzureHoundの予期せぬ動作を明らかにするものです。すべてのazurehoundリストコマンドの前に、ツールが使用するエンドポイントとAPIへのAzureHoundテストコールがあります。呼び出されるエンドポイントとAPIは、Azure環境(例: グローバルAzureクラウド、米国政府、中国)によって異なります。

グローバルなAzure Cloud 環境では、以下の認証とAPIエンドポイントを使用します。

  • Microsoft ID プラットフォーム エンドポイント: login.microsoftonline[.]com
  • Microsoft Graph API: graph.microsoft[.]com
  • Azure REST API ARM エンドポイント: management.azure[.]com

図10 は、これらのテスト コールのAzureHound実行時の冗長出力から抜粋したものです。

BloodHound Enterprise チームのツールである Azurehound バージョン 2.6.0 からのログを表示するコマンド ライン インターフェイスのスクリーンショット。接続のテストと、Microsoft Azure サービスに関連するデータ収集プロセスの開始を示している。
図10.AzureHound APIテスト リクエスト。

AzureHoundによるMicrosoft IDプラットフォーム エンドポイント endpoint login.microsoftonline[.]com への呼び出しは、Entra IDの非対話型サインイン ログに記録されます。前述のように、グラフAPIロギングが有効になっている場合、MicrosoftグラフAPI(hxxps[:]//graph.microsoft[.]com/v1.0/organization)へのテストコールは、Microsoftグラフのアクティビティ ログに表示されます。上記のロギングの制限により、management.azure[.]comにあるAzure REST APIへのテスト呼び出しはログに記録されません。

以下の表1は、10:57PMのlist storage-accountsリクエストと11:25PMのlist groupsリクエストのログからの情報です。ストレージ アカウントの列挙は、前述の通りAzure REST APIを使用します。

AzureHoundコマンド ライン AzureHound APIコール 記録時間 ログに記録されたRequestURI ログに記録されたユーザー エージェント
ストレージアカウントのリストアップ 到達可能性を判断するためのグラフAPIへのAzureHoundテスト コール[1] 8/1/2025, 10:57:35.185 PM hxxps[:]//graph.microsoft[.]com/v1.0/organization azurehound/v2.6.0
Azure REST APIを呼び出し、ストレージ アカウント データを列挙。 Call to REST API at management.azure[.]com/[...]Microsoft.Storage/storageAccounts/list is not logged
グループのリストアップ 到達可能性を判断するためのグラフAPIへのAzureHoundテスト コール[1] 8/1/2025, 11:25:45.561 PM hxxps[:]//graph.microsoft[.]com/v1.0/organization azurehound/v2.6.0
Microsoft Graph APIを呼び出し、グループデータを列挙。 8/1/2025, 11:25:45.651 PM hxxps[:]//graph.microsoft[.]com/v1.0/groups?%24filter=securityEnabled+eq+true&%24top=99 azurehound/v2.6.0
表にはグラフAPIのテスト コールしか含まれていないが、上記の3つのテスト コールはすべて毎回呼び出されている。

表1.Microsoft Graph API vs. Azure REST APIリクエスト ロギング。

データによると、リスト グループ コマンド ログにはグループ列挙の読み取り操作(Graph API: hxxps[:]//graph.microsoft[.]com/v1.0/groups?[...])が記録されている一方、リスト ストレージ アカウント リクエストにはストレージ アカウントの読み取り操作(Azure REST API: Microsoft.Storage/storageAccounts/list)に関連するRequestURIが記録されていないことが分かります。これは、以前紹介したREST APIのロギングの弱点です。しかし、これらのテスト コールを他のログの情報と照合することで、このアクティビティをより詳細に把握することができます。

Azure REST APIを使用するAzureHoundリスト コマンドの場合、接続をテストするために使用される最初の/organization Graph APIリクエストがログに記録されます。セッションID、IPアドレス、ユーザーID、ユーザー エージェントなどのフィールドを、Microsoft Graphアクティビティ ログやEntra IDサインイン ログの他のログ アクティビティと照合することで、イベントの関連付けに使用できます。

Microsoft Graph APIとAzure REST APIのアクティビティとリソースのログに加えて、Entra IDのサインイン ログと監査ログは、追加のコンテキストを提供することができます。

その名が示す通り、Entra IDサインイン ログは成功したサインインと失敗したサインインを記録しますが、これらのログには以下の内容も記録されます。

  • CAPポリシー評価
  • APIコールのためのトークン発行
  • ユーザー エージェントとデバイス
  • MFAの詳細

これらのログに含まれる情報は、以下のような不審なログイン パターンを特定するのに役立ちます。

  • 珍しい位置情報
  • 不可能な移動
  • Microsoft GraphとAzure管理APIのリソースへの連続的なサインイン。
  • MFAなしでサインインするアカウント

Entra 監査ログは、Microsoft Entra IDのディレクトリ レベルの設定変更を追跡します。これには以下が含まれます。

  • ユーザーとグループの変更(作成、削除、更新)
  • ロールの割り当てと削除
  • アプリの登録とサービス プリンシパルの変更
  • アプリケーションの同意
  • 条件付きアクセス ポリシーの変更
  • PIMロールのアクティブ化と非アクティブ化

そのため、監査ログはAzureHoundの活動を直接検出するのにはあまり役に立ちません。しかし、脅威アクターが永続化のために新しいユーザーを作成し、特権ロールを割り当てるなど、脅威アクターが特権をエスカレートさせた後の後続の活動を発見するのに有用とされます。

また、2025年7月にDefender XDRが新しいAdvanced Huntingテーブル「GraphApiAuditEvents」をパブリック プレビューで導入したことも特筆すべき点です。これは、Microsoft Graph Activity Logsの無駄を省いたバージョンで、余分な取り込みやストレージのコストをかけずにEntra ID Graph APIコールの可視性を提供します。スキーマは単純化され、RequestURIやトークン識別子のような主要なフィールドが含まれます。ただし、UserAgentフィールドが欠如しており、データ保持期間はデフォルトで30日間に制限されています。

この情報を使って、Cortex XDRまたはXSIAMで、関連する脅威アクターの活動をハントする方法については、次のセクションで説明します。

脅威ハンティング

Cortex Cloudには、Azureクラウドのディスカバリ アクティビティに対する様々な検出が含まれていますが、インシデント対応者や脅威ハンティング従事者は、Cortex XQLクエリを使用して、個々のイベントに関する詳細なデータをドリル ダウンすることもできます。最も基本的なレベルでは、ユーザーエージェントがAzureHound識別子(デフォルト: azurehound/<version>)を含むリクエストをCortex cloud_audit_logsデータセットに問い合わせることで実行可能です。

産業観察結果によると、多くの場合、脅威アクターは、ユーザー エージェント文字列を含むデフォルトの設定を使用してツールを操作していることから、ここに最初のハント クエリに利用できる簡単なパラメータが残されています。

オプションで、API操作のフィルターを設定して、それぞれの操作の結果をフィルターすることができます。次の例では、Entra IDユーザーのリストをMicrosoft Graph APIに問い合わせるAzureHoundアクティビティ(azurehound list users)を検索したものです。

CortexはAzureからログデータを取り込みます。Azureのアクティビティは、Microsoft Entra IDのMicrosoft Graphアクティビティログを通じて表示され、監査およびサインイン監視機能と連携しています。これにより、テナント内のMicrosoft Graph APIへのHTTPリクエストが可視化されます。

以下の図11は、匿名化のためにサニタイズされたAzureHoundリストユーザーリクエストを表す生のアクティビティ ログ エントリのサンプルです。防御担当者は、多くのフィールドを使用して、調査している状況に合った追加クエリーを作成することが可能です。たとえば、特定のsignInActivityIdcallerIpAddressをフィルタリングすることができます。

Microsoft Graph APIに関連するJSONコードのスニペットを表示したスクリーンショット。リクエストID、操作名、タイムスタンプなどの詳細がハイライトされている。
図11.AzureHoundリストユーザーの生のAzureアクティビティ ログ抽出。

ログの抽出からは、他にも有用な要素がいくつかあります。

  • ユーザー エージェント文字列は、AzureHoundがこのリクエストに使用された可能性が高いことを示しています。
  • リクエストURIフィールドは、AzureHoundが大規模な属性セット(accountEnabled、createdDateTime、displayName、mail、userPrincipalNameなど)を持つGET /users経由でユーザー データを取得していることを示しています。これはディスカバリや特権昇格のマッピングと一致しています。
  • App IDフィールドの値1950a258-227b-4e31-a9cf-717495945fc2は、Microsoft Azure PowerShellクライアントIDです。PowerShellは攻撃ツールや脅威アクターによってしばしば使用されるため、これは注意すべき対象です。
  • 最後に、UserPrincipalObjectID (454b1120-3507-4bbb-b559-87b7f64af7fa)は、認証情報が使用されたユーザーのEntra IDオブジェクトIDです。詳細については、サインイン アクティビティID(frZ7H7lx8kSlDW0b-4MfAA)とEntra IDサインイン ログを関連付けます。

単一のIDによる大量のAPI列挙の識別は、不審な発見活動を識別するのに役立つ防御側にとっても有用な戦略です。AzureHoundは、Microsoft GraphまたはAzure REST APIにクエリを実行する際に、短い時間内にAPIコールのバーストを生成することがあります。この現象は、ユーザー、ロール、仮想マシン、アプリケーションなどの大量のリソースを要求しているときや、azurehound listを使用してAzure環境全体を一度に列挙しているときに発生することがあります。ユーザー エージェント文字列や呼び出し元のIPアドレスと組み合わせることで、Azure環境の広範な列挙のためのシグナルを得ることができます。

次のXQLクエリは、この列挙を表示するのに役立つものです。operation_nameoperation_name_origフィルターは、上記で説明したように、AzureHoundが使用するGraph API GETリクエストに検索結果を限定します。

binステージとcompステージ、およびcount()関数は、データを60分単位のバケットに集計するために使用され、apiCallCountのしきい値(例では60分あたり500回の呼び出し)との比較に用いられます。apiCallCountは、Azure環境のサイズに合わせて調整する必要があります。大規模な組織では、ユーザー数、ロール数、仮想マシン数、アプリケーション数が小規模な組織よりもはるかに多くなるため、リクエスト数が多くなる可能性が高いです。

Cortex XQLクエリは、防御担当者がAzureHoundのアクティビティの詳細な指標を明らかにするために、Microsoft Graph APIのアクティビティ ログのようなソースから収集されたテレメトリを深堀するものです。定義された時間ウィンドウにわたってリクエスト量、ユーザーID、発信者IP、およびユーザー エージェントを相関させるクエリは、AzureHoundに典型的な異常な列挙パターンを識別するのに役立ちます。

結論

脅威アクターは、AzureHoundの機能を標的型クラウドのディスカバリに利用しています。ユーザー、グループ、アプリケーション、権限、リソースの関係を列挙するこの機能は、MITRE ATT&CK TTPに直接対応しています。これにより、Curious SerpensやVoid Blizzardのような脅威アクターは、環境をマッピングし、特権昇格のためのアカウントを特定し、クラウド環境の王冠の宝石を見つけるための構造化された方法を確立することに成功しています。

この活動の検出は、テレメトリの視認性に依存しています。Microsoft Graphのアクティビティ ログは、APIコールの豊富な記録を提供するものであり、防御担当者はこれを利用することでディスカバリ パターンを特定することができます。他のAzureやEntra IDのログと組み合わせることで、これらのソースは、脅威の検出とインシデント レスポンスを向上させる包括的な監視レイヤーを形成します。

Microsoft Graphアクティビティ ログを使用した脅威の検出に関するガイドでは、Graph API ログの構成、Cortex XDRとの統合、およびCortexを使用したMicrosoft Graphアクティビティの調査の手順を解説しています。

検出をMITRE ATT&CKフレームワークと整合させることで、防御担当者はこれらのログソースを活用し、可視化とプロアクティブな制御を組み合わせることができます。以下のアクションは、攻撃者の成功を阻止する組織の能力を強化するうえで重要なものです。

  • 正当な検出ツールを脅威シナリオにマッピングする
  • システム間のデータの関連付け
  • 条件付きアクセス ポリシーを適用する
  • 最小特権の原則に従う
  • 通常の行動からの逸脱を注意深く監視する

パロアルトネットワークスの保護と緩和策

パロアルトネットワークスのお客様は、以下の製品を通じて、上記の脅威に対する確実な保護を構築いただけます。

  • Cortex Cloud Identity Securityは、クラウド インフラストラクチャ権限管理(CIEM)、アイデンティティ セキュリティ体制管理(ISPM)、データアクセス ガバナンス(DAG)、ならびにアイデンティティ脅威検知と対応(ITDR)を包括し、顧客がアイデンティティ関連のセキュリティ要件を強化するために必要な機能を提供するものです。クラウド環境内のアイデンティティとそのアクセス許可を可視化することで、設定ミスや機密データへの不要なアクセスを正確に検出し、使用状況とアクセス パターンをリアル タイムで分析します。
  • Prisma Browserにはトークン保護機能が備わっています。これにより、プライベートまたは特権的なアプリケーションへのアクセスを保護し、発行されたトークンがセキュア ブラウザからのみ有効であることを確認することができます。

情報漏えいの可能性がある場合、または緊急の案件がある場合は、Unit 42インシデント レスポンス チームまでご連絡ください。

  • 北米:フリーダイヤル: +1 (866) 486-4842 (866.4.UNIT42)
  • 英国: +44.20.3743.3660
  • ヨーロッパおよび中東: +31.20.299.3130
  • アジア: +65.6983.8730
  • 日本: +81.50.1790.0200
  • オーストラリア: +61.2.4062.7950
  • インド: 00080005045107

侵害のインジケーター

ユーザー エージェント文字列:

  • azurehound/<version>

その他の資料

Enlarged Image