Az - Cloud Kerberos Trust
Reading time: 13 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
この投稿は https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/ の要約であり、攻撃に関するさらなる情報を確認できます。この技術については https://www.youtube.com/watch?v=AFay_58QubYでもコメントされています。
Kerberos Trust Relationship Overview
Cloud Kerberos Trust (Entra ID -> AD) -- この機能(Windows Hello for Businessの一部)は、一方向の信頼を確立し、オンプレミスのADがEntra IDを信頼してADのためにKerberosチケットを発行します。これを有効にすると、ADに**AzureADKerberos$コンピュータオブジェクトが作成され(読み取り専用ドメインコントローラとして表示される)、リンクされたkrbtgt_AzureAD
**アカウント(セカンダリKRBTGT)が作成されます。Entra IDはこれらのアカウントの鍵を保持し、ADユーザーのために「部分的」Kerberos TGTを発行できます。ADドメインコントローラはこれらのチケットを尊重しますが、RODCのような制限があります:デフォルトでは、高特権グループ(Domain Admins、Enterprise Adminsなど)は拒否され、通常のユーザーは許可されます。これにより、Entra IDは通常の条件下でドメイン管理者を信頼を介して認証できなくなります。しかし、後で見るように、十分なEntra IDの権限を持つ攻撃者はこの信頼設計を悪用できます。
Pivoting from Entra ID to On-Prem AD
シナリオ: 対象組織はCloud Kerberos Trustをパスワードレス認証のために有効にしています。攻撃者はEntra ID(Azure AD)でGlobal Administrator権限を取得しましたが、まだオンプレミスのADを制御していません。攻撃者はまた、ドメインコントローラへのネットワークアクセスを持つ足場を確保しています(VPNまたはハイブリッドネットワーク内のAzure VM経由)。クラウドの信頼を利用して、攻撃者はAzure ADの制御を活用してAD内でDomain Adminレベルの足場を取得できます。
前提条件:
-
Cloud Kerberos Trustがハイブリッド環境で構成されている(指標:ADに
AzureADKerberos$
RODCアカウントが存在する)。 -
攻撃者はEntra IDテナント内でGlobal Admin(またはHybrid Identity Admin)権限を持っている(これらの役割はAD Connectの同期APIを使用してAzure ADユーザーを変更できます)。
-
攻撃者が認証できる少なくとも1つのハイブリッドユーザーアカウント(ADとAADの両方に存在)が必要です。これは、その資格情報を知っているかリセットするか、パスワードレスの方法(例:一時的アクセスパス)を割り当ててプライマリリフレッシュトークン(PRT)を生成することで取得できます。
-
デフォルトのRODC「拒否」ポリシーに含まれない高特権のオンプレミスADターゲットアカウント。実際には、AD Connect同期アカウント(通常は**MSOL_***と名付けられる)が優れたターゲットであり、AD内でDCSync(レプリケーション)権限を持っていますが、通常は組み込みの管理グループのメンバーではありません。このアカウントは通常Entra IDに同期されないため、そのSIDは衝突なく偽装するために利用可能です。
攻撃手順:
- Azure AD同期APIアクセスを取得する: Global Adminアカウントを使用して、Azure AD Provisioning(同期)APIのアクセストークンを取得します。これはROADtoolsやAADInternalsのようなツールを使用して行うことができます。例えば、ROADtools(roadtx)を使用して:
# Using roadtx to get an Azure AD Graph token (no MFA)
roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph
(Alternatively, AADInternals' Connect-AADInt
can be used to authenticate as Global Admin.)
- ハイブリッドユーザーのオンプレミス属性を変更する: Azure AD 同期APIを利用して、選択したハイブリッドユーザーのonPremises Security Identifier (SID)とonPremises SAMAccountNameをターゲットADアカウントに一致させます。これにより、Azure ADに対してクラウドユーザーが偽装したいオンプレミスアカウントに対応していることを効果的に伝えます。オープンソースのROADtools Hybridツールキットを使用して:
# Example: modify a hybrid user to impersonate the MSOL account
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
--sourceanchor <ImmutableID_of_User>\
--sid <TargetAD_SID> --sam <TargetAD_SAMName>
ユーザーの
sourceAnchor
(不変ID) は、変更するAzure ADオブジェクトを特定するために必要です。このツールは、ハイブリッドユーザーのオンプレSIDとSAMアカウント名をターゲットの値(例:MSOL_xxxxアカウントのSIDとSAM)に設定します。Azure ADは通常、Graphを介してこれらの属性を変更することを許可していません(読み取り専用です)が、同期サービスAPIはそれを許可し、グローバル管理者はこの同期機能を呼び出すことができます。
- Azure ADから部分的なTGTを取得する: 変更後、ハイブリッドユーザーとしてAzure ADに認証します(例えば、デバイス上でPRTを取得するか、彼らの資格情報を使用します)。ユーザーがサインインすると(特にドメイン参加またはEntra参加のWindowsデバイス上で)、Azure ADはそのアカウントに対して部分的なKerberos TGT (TGTAD)を発行します。これはCloud Kerberos Trustが有効になっているためです。この部分的なTGTはAzureADKerberos$ RODCキーで暗号化され、設定したターゲットSIDが含まれています。これをROADtoolsを介してユーザーのためにPRTを要求することでシミュレートできます:
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>
この出力は、部分的なTGTとセッションキーを含む.prt
ファイルを生成します。アカウントがクラウド専用のパスワードであった場合、Azure ADはPRTレスポンスにTGT_ADを含めます。
- 部分的TGTをフルTGTに交換(AD上で): 部分的TGTは、ターゲットアカウントのフルTGTを取得するためにオンプレミスのドメインコントローラーに提示できます。これは、
krbtgt
サービス(ドメインの主要なTGTサービス)に対してTGSリクエストを実行することで行います。基本的に、チケットをフルPACを持つ通常のTGTにアップグレードします。この交換を自動化するためのツールが利用可能です。例えば、ROADtools Hybridのスクリプトを使用します:
# Use the partial TGT from the PRT file to get a full TGT and NTLM hash
python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash
このスクリプト(またはImpacketの同等物)は、ドメインコントローラーに連絡し、ターゲットADアカウントの有効なTGTを取得します。特別なKerberos拡張が使用されている場合、アカウントのNTLMハッシュも含まれます。**KERB-KEY-LIST-REQ
**拡張は自動的に含まれ、DCにターゲットアカウントのNTLMハッシュを暗号化された返信で返すように要求します。その結果、ターゲットアカウントのための資格情報キャッシュ(full_tgt.ccache
)または回収されたNTLMパスワードハッシュが得られます。
- ターゲットを偽装し、ドメイン管理者に昇格する: これで攻撃者は実質的にターゲットADアカウントを制御しています。たとえば、ターゲットがAD Connect MSOLアカウントであった場合、ディレクトリに対するレプリケーション権限を持っています。攻撃者は、そのアカウントの資格情報またはKerberos TGTを使用して、ADからパスワードハッシュをダンプするDCSync攻撃を実行できます(ドメインKRBTGTアカウントを含む)。例えば:
# Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash)
secretsdump.py 'AD_DOMAIN/<TargetSAM>$@<DC_IP>' -hashes :<NTLM_hash> LOCAL
これはすべてのADユーザーのパスワードハッシュをダンプし、攻撃者にKRBTGTハッシュを提供します(これにより、ドメインKerberosチケットを自由に偽造でき)、実質的にDomain Admin権限をADに対して持つことになります。ターゲットアカウントが別の特権ユーザーであった場合、攻撃者はそのユーザーとして任意のドメインリソースにアクセスするために完全なTGTを使用できます。
- クリーンアップ: オプションとして、攻撃者は同じAPIを介して変更されたAzure ADユーザーの元の
onPremisesSAMAccountName
とSIDを復元するか、単に作成された一時ユーザーを削除できます。多くの場合、次のAzure AD Connect同期サイクルでは、同期された属性の不正な変更が自動的に元に戻されます。(ただし、この時点でダメージはすでに発生しています -- 攻撃者はDA権限を持っています。)
warning
クラウドトラストと同期メカニズムを悪用することにより、Azure ADのグローバル管理者はRODCポリシーによって明示的に保護されていないほぼすべての ADアカウントを偽装できます。たとえそのアカウントがクラウド同期されていなくてもです。デフォルトの構成では、これはAzure ADの侵害からオンプレミスADの侵害への完全な信頼を橋渡しします。
参考文献
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。