サイト内の現在位置

脆弱なEntra IDの環境構築ツール「EntraGoat」を試してみた

NECセキュリティブログ

2025年11月21日

昨今、企業のクラウド移行が進む中、オンプレミスのActive DirectoryからMicrosoft Entra ID(以降、Entra ID)へ移行するケースが増えてきています。それに伴い、ペネトレーションテストの対象としてEntra IDを扱う機会も多くなってきました。こうした変化に対応するため、ペネトレーションテストを行う検査員にもEntra IDに対する攻撃手法を身につけることが求められています。

Entra IDの攻撃手法を学ぶうえで有用なツールとして「EntraGoatnew window[1]new window[2]」があります。EntraGoatを利用すると、脆弱な設定を持つEntra ID環境を容易に構築でき、CTF(Capture the Flag)形式で複数の攻撃シナリオを検証できます。

本ブログでは、EntraGoatの概要と使用方法を紹介するとともに、用意されている6つのシナリオの中からシナリオ4「I (Eligibly) Own That」の内容を解説します。

  • 注意:
    本ブログの内容の悪用は厳禁です。また、本ブログの内容を使用したことによって発生する不利益等について筆者はいかなる責任も負いません。

目次

EntraGoatについて

EntraGoatは、Semperis社が提供する「意図的に脆弱な設定を持つEntra ID環境」を構築するための学習用ツールです。Black Hat 2025new window[3][4]でも紹介されており、検証用のEntra IDテナントに対して自動的に脆弱な設定を追加し、さまざまな攻撃シナリオを再現できます。

本ブログ執筆時点では、以下の6つのシナリオが用意されています。

  • Scenario 1: Misowned and Dangerous - Owner's Manual to Global Admin
  • Scenario 2: Graph Me the Crown (and Roles)
  • Scenario 3: Group MemberShipwreck - Sailed into Admin Waters
  • Scenario 4: I (Eligibly) Own That
  • Scenario 5: Department of Escalations - AU Ready for This?
  • Scenario 6: CBA (Certificate Bypass Authority) - Root Access Granted

また、CTF形式のWebインターフェース(図 1参照)が用意されています。各シナリオには「背景」「前提情報」「ヒント」「Flag入力フォーム」などが提示されます。これらを参照しながらシナリオを進めていく構成となっています。

図 1 EntraGoatの問題一覧ページ

EntraGoatの使用方法

EntraGoatを用いて脆弱なEntra ID環境を構築するうえで、最低限必要なものは以下の4つです。

  • 検証用のEntra IDテナント
  • グローバル管理者権限
  • PowerShell 7+
  • Microsoft Graph PowerShell SDK

起動方法は非常に簡単で、準備したEntra IDテナントに対し、グローバル管理者権限を持つユーザで、図 2のように起動したいシナリオのセットアップスクリプトを実行するだけです。

図 2 シナリオ4のセットアップスクリプトの実行

設定を元に戻したい場合は、図 3のように該当シナリオのクリーンアップスクリプトを実行することで、環境を元の状態に戻すことができます。

図 3 シナリオ4のクリーンアップスクリプトの実行

また、CTF形式のWebのフロントエンドを起動するには、以下の2つが必要です。

  • Node.js
  • npm

フロントエンドの起動も簡単で、図 4のコマンドを実行するだけで開始できます。起動後、「http://localhost:3000」にアクセスすることで、CTF形式の問題ページを参照できます。

図 4 フロントエンドの起動

「シナリオ 4: I (Eligibly) Own That」の紹介

本ブログでは、EntraGoatに含まれるシナリオの中から、Privileged Identity Management(以下、PIM)を悪用するシナリオ4について紹介します。

シナリオ4の概要

シナリオ4の問題文は、図 5の通りです。日本語に意訳すると、以下の内容が示されています。

「あなたは“何かありそうな”Entra IDアカウントにアクセスしました。グループメンバーシップやロール割り当てを確認すると、権限昇格につながる手掛かりがあるように見えます。ただし、初期状態ではいずれの権限もアクティブになっていません。Privileged Identity Managementのステータスを確認し、適切なアクセスを有効化して、グローバル管理者権限の取得を目指しましょう。」

さらに、シナリオ4で使用する初期アクセス用のユーザ名とパスワードが提示されています。

  • woody.chen@<テナントドメイン>
  • GoatAccess!123
図 5 シナリオ4の問題説明ページ

EntraGoatのシナリオ解答者は、これらの情報を基に、最終的にグローバル管理者権限の取得を目指して権限昇格を進めていきます。

シナリオ4の解説

まずは、初期アクセス用に与えられたユーザ「woody.chen」を用いて情報収集を行います。現状の設定を把握するため、AzureHound(図 6)とROADrecon(図 7)の2つのツールを用いてユーザ、グループ、ロールなどの情報を列挙しました。

図 6 AzureHoundを用いた情報収集
図 7 ROADreconを用いた情報収集

高い権限を持つユーザやグループ、サービスプリンシパルなどが確認できたものの、現状の設定では初期アクセス用ユーザ「woody.chen」から、ゴールであるグローバル管理者「EntraGoat Administrator S4」へ権限昇格できる経路は見つかりませんでした(図 8、図 9を参照)。

zoom拡大する
図 8 AzureHoundを用いた高権限オブジェクトの調査
zoom拡大する
図 9 ROADreconを用いたロール情報の調査

次に、問題文に記載されている通り、PIMの設定状況を確認します。PIMは、特権ロールや特権グループへのアクセスを必要なときだけ一時的に有効化して利用するための仕組みです。しかし、PIMの設定が不十分な場合、利用者自身が事前に割り当てられた特権ロールや特権グループを任意にアクティブ化できてしまう可能性があります。

以下の手順でPIMの設定を確認します。

  1. new windowhttps://entra.microsoft.com にアクセスします。
  2. 初期アクセス用のユーザでログインします。
  3. 「IDガバナンス」→「Privileged Identity Management」を開きます。
  4. 「タスク」→「自分のロール」を開きます。
  5. 「Microsoft Entra ロール」や「グループ」を開き、「資格のある割り当て」にアクティブ化可能な設定がないかを確認します。

この操作の結果、PIMにより「Application Operations Team」グループのOwnerロールを初期アクセス用ユーザ「woody.chen」に一時的に付与できることが判明しました(図 10参照)。

zoom拡大する
図 10 PIMのグループ設定の確認

続いて、該当グループのアクティブ化を行います。右側の「操作」欄にある「アクティブ化」からグループをアクティブ化できます(図 11参照)。

図 11 PIMによるグループのアクティブ化

以上の操作により、「Application Operations Team」グループのOwnerロールを一時的に取得できました。グループのOwner権限を持つ場合、自身をそのグループにメンバーとして追加できるため、グループが保有する権限を利用した操作が可能となります。

次に、「Application Operations Team」グループの設定および権限を確認します。「割り当てられたロール」に権限昇格につながる設定が含まれていました。

以下の手順で「割り当てられたロール」を確認します。

  1. new windowhttps://entra.microsoft.com にアクセスします。
  2. 初期アクセス用のユーザでログインします。
  3. 「Entra ID」→「グループ」を開きます。
  4. 「すべてのグループ」→「Application Operations Team」を開きます。
  5. 「管理」→「割り当てられたロール」→「資格のある割り当て」を開きます。

この結果、PIMにより「アプリケーション管理者」ロールを一時的に利用可能であることが判明しました(図 12参照)。

zoom拡大する
図 12 「Application Operations Team」の割り当てられたロールの画面

PIMを用いて「アプリケーション管理者」ロールをアクティブ化するため、自身を「Application Operations Team」グループに所属させます。

以下の手順でグループメンバーを追加することができます。

  1. new windowhttps://entra.microsoft.com にアクセスします。
  2. 初期アクセス用のユーザでログインします。
  3. 「Entra ID」→「グループ」を開きます。
  4. 「すべてのグループ」→「Application Operations Team」を開きます。
  5. 「メンバー」→「メンバーの追加」から初期アクセス用のユーザである「woody.chen」を追加します。

以上の操作により、図 13の通り、グループメンバーにユーザが追加されます。

zoom拡大する
図 13 Woody (woody.chen)ユーザがグループメンバーに追加されている様子

続いて、再度PIMの設定画面を開き、「アプリケーション管理者」ロールをアクティブ化します。

以下の手順でアクティブ化します。

  1. new windowhttps://entra.microsoft.com にアクセスします。
  2. 初期アクセス用のユーザでログインします。
  3. 「IDガバナンス」→「Privileged Identity Management」を開きます。
  4. 「タスク」→「自分のロール」を開きます。
  5. 「Microsoft Entra ロール」→「資格のある割り当て」を開きます。
  6. 「アプリケーション管理者」ロールの「アクティブ化」を選択します(図 14参照)。
  7. 「期間」と「理由」を設定して、アクティブ化します(図 15参照)。
zoom拡大する
図 14 PIMのロール設定の確認
図 15 PIMによるロールのアクティブ化

以上の操作により、初期アクセスユーザ「woody.chen」は「アプリケーション管理者」権限を一時的に利用できるようになりました。

ここで改めて、AzureHoundにより確認された権限関係を整理します(図 16参照)。

  • 「Application Administrator(アプリケーション管理者)」ロールは、「Infrastructure Monitoring Tool」サービスプリンシパルに対してAZAddSecret権限を持つ
    → クライアントシークレットを追加し、このサービスプリンシパルとして認証可能
  • 「Infrastructure Monitoring Tool」サービスプリンシパルはAZGlobalAdmin権限を持つ
    → 「EntraGoat Administrator S4」ユーザのパスワード変更や一時アクセスパス発行が可能

この結果、攻撃者は「EntraGoat Administrator S4」ユーザとしてログイン可能になります。

zoom拡大する
図 16 「EntraGoat Administrator S4」ユーザへの権限昇格パス

まず、「Infrastructure Monitoring Tool」サービスプリンシパルにクライアントシークレットを追加し、そのサービスプリンシパルとしてログインします。これは図 17のコマンドにより実行できます。必要なobjectIDとappIdは、ROADreconから確認できます(図 18参照)。

図 17 クライアントシークレット付与とログイン
図 18 ROADrecon「Infrastructure Monitoring Tool」の詳細

図 17の実行後、図 19の出力から「Infrastructure Monitoring Tool」サービスプリンシパルとしてログインできていることが確認できます。

図 19 「Infrastructure Monitoring Tool」サービスプリンシパルでログインできている様子

最後に、「EntraGoat Administrator S4」ユーザに対して一時アクセスパスを発行します。一時アクセスパスは、認証不能となったユーザを一時的に回復させるための機能であり、発行後は一定期間パスワードレスでログインできます。

図 20のコマンドで一時アクセスパスを発行でき、成功すると図 21のように一時アクセスパスが出力されます。

図 20 一時アクセスパスの発行
図 21 一時アクセスパスの出力

発行した一時アクセスパスを用いてログインを行います。図 22の通り、一時アクセスパスの入力を求められますので、発行された値を入力します。図 23の画面から、ログインが成功したことを確認できます。

図 22 一時アクセスパスを用いたログイン
図 23 「「EntraGoat Administrator S4」でログインできている様子

以上で、初期アクセス用のユーザ「woody.chen」からグローバル管理者である「EntraGoat Administrator S4」ユーザに昇格することができました。EntraGoatのフラグは、「EntraGoat Administrator S4」ユーザのプロパティにある拡張属性に記載されています(図 24参照)。

zoom拡大する
図 24 拡張属性に記載されたフラグ

まとめ

本ブログでは、脆弱なEntra ID環境を構築できるツール「EntraGoat」について紹介しました。「EntraGoat」を使用することで検証環境を容易に構築でき、シナリオに沿って攻撃手法を実際に試すことが可能です。また、本ブログではPIMを悪用した権限昇格のシナリオについて解説しました。PIMの設定が不十分な場合、本シナリオのように権限昇格に悪用される恐れがあり、適切な設定と管理が重要です。今回紹介したもの以外にも、EntraGoatには5つのシナリオが用意されており、いずれも学習用途として非常に有用ですので、ぜひ併せて試していただくことをお勧めします。

参考文献

執筆者プロフィール

松本 隆志(まつもと たかし)
セキュリティ技術センター リスクハンティング・アナリシスグループ

マルウェア解析や攻撃者の行動分析などの業務を経て、現在はペネトレーションテスト、脆弱性診断などに従事。これまでに Botconf、JSAC、CODE BLUEで講演。
CISSP、情報処理安全確保支援士(RISS)、CPENT、LPT Master、SANS FOR710 メダルを保持。
趣味は、CTFとコーヒーを飲むこと。

執筆者の他の記事を読む

アクセスランキング