““Evil VM”: From Guest Compromise To Entra Admin In 9 Easy Steps” Jul 17, 2025 by Simon Maxwell-Stewart より
「もし私がより遠くを見渡せたのだとすれば、それは巨人たちの肩の上に立っていたからだ」 ─ アイザック・ニュートン
Dirk-jan Mollema氏に心から感謝します。ROADtools の公開、後述するフィッシング攻撃手法の開発、そして私のトランスポートキー復号の問題を親身に助けてくださったことに深く御礼申し上げます。また、AADInternals を共有してくださった Dr. Nestori Syynimaa 氏にも、心からの感謝を捧げます。このツールと数々の有用なブログは、本稿で解説する攻撃にとって不可欠なものでした。最後に、正しい方向を示し、あきらめないよう背中を押してくれた上司の Fletcher Davis にも感謝します。
このブログでは、Azure VM のニッチな機能の悪用によって、通常はユーザーがデバイスを Entra ID に参加させるのを防ぐ制御をバイパスする手法を検証します。次に、こうした悪用を既知のプライマリ・リフレッシュ・トークン(PRT)窃取手法との組み合わせで、防御側にとってのリスクがどのように増幅されるかを示します。最後に、Entra ID におけるこれらのラテラルムーブメント(ネットワーク環境内での侵害の横展開)技術を軽減するための基本的な防御策について解説します。
このブログは、以前私たちが行った「Restless Guests(落ち着きのないゲスト)」という調査に基づいています。そこでは、Entra ID(旧 Azure AD)において、B2B ゲストが明示的な承認なしにテナント内でサブスクリプションの所有者になれることをお伝えしました。今回は、「restless guest」をターゲットディレクトリに挿入する手順についても詳しく説明します。
Entra ID セキュリティにおけるデバイス ID の理解
まずは、Entra ID におけるデバイスの基本から始めましょう。
デバイスは、扱いが難しいセキュリティプリンシパル(主体)と言えます。ディレクトリに対して認証することは可能ですが、ユーザーやサービスプリンシパルのように、ディレクトリロールやRBAC ロールを直接割り当てることはできません。たとえば、デバイス単体ではアクセストークンを要求することはできません。
デバイスにアイデンティティを付与する主な目的は、識別情報を提供することです。これにより、管理者はデバイスを監視・保護し、ユーザーがリソースへアクセスできるかどうかを判断する材料として活用できます。たとえば、信頼されたデバイス上のユーザーには、そうでないマシン上のユーザーよりも広いアクセス権限が与えられることがあります。
これは、条件付きアクセスポリシーによって実現されており、ポリシーがユーザーにアクセスを許可するかどうかを判断する際に、デバイスは重要な信号の一つとなっています。
「デバイス(エンドポイント)は、Microsoft のゼロトラスト概念における重要な要素です。デバイスは、Registered、Joined、または Hybrid Joined として Azure AD に登録されることができます。条件付きアクセスは、サービスへのアクセスを許可または拒否する判断基準の一つとして、デバイス情報を使用します。」— Dr. Nestori Syynimaa(@DrAzureAD)
出典:AADInternals.com
デバイスは Entra ディレクトリ上で、以下のいずれかの形で識別情報(ID)を取得します:
- 「登録済みデバイス(registered devices)」:ユーザー所有のいわゆる「BYOD(私物持ち込みデバイス)」
- 「参加済みデバイス(joined devices)」:組織所有のデバイス
どちらの場合も、Entra ID はプライベート/パブリック証明書を用いて、一意のデバイス ID を生成します。
この証明書に加えて、「トランスポートキー(transport key)」が重要なセキュリティ層として機能します。このキーは、Entra ID からデバイスへ送信される機密データを暗号化し、「保有証明(proof of possession)」としても機能します。つまり、このキーを保持するデバイスだけが、暗号化された内容を復号できるのです。
このようなデバイス ID とセキュリティにおける重要な役割から、証明書とキーは通常、TPM(Trusted Platform Module)内に保管されます。TPM は、Windows マシンに搭載されたハードウェアセキュリティチップ(またはファームウェアモジュール)であり、暗号鍵やシークレットの安全な保管と管理のために設計されています。
攻撃者にとって特に重要なのは、Entra ID がどのように「参加済みデバイス」に対して プライマリ・リフレッシュ・トークン(PRT)を発行するかという点です。
それでは、次に PRT について詳しく見ていきましょう。
Entra ID における PRT(Primary Refresh Token)とは何か、なぜ重要なのか
プライマリ・リフレッシュ・トークン(PRT)は、Entra ID 環境におけるシングルサインオン(SSO)を実現するために使用されるトークンです。これは、参加済みデバイスから Entra ID にログインしたユーザーに対して発行されます。
PRT は初期状態で 14 日間有効ですが、ユーザーがデバイス上で継続的にアクティブな状態にある限り、自動的に更新され、最長で 90 日間まで有効期間が延長されます。
このトークンの主な役割は、シームレスなシングルサインオンを可能にすることです。つまり、ユーザーが再認証することなく、Microsoft の各種アプリケーションやサービスに対してリフレッシュトークンやアクセストークンを要求できるようになります。
PRT は非常に価値の高いトークンであるため、その保護には TPM(Trusted Platform Module)を利用することが強く推奨されています。