Az - Cloud Kerberos Trust
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ce post est un résumé de https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/ qui peut être consulté pour plus d'informations sur l'attaque. Cette technique est également commentée dans https://www.youtube.com/watch?v=AFay_58QubY.
Lorsqu'une relation de confiance est établie avec Azure AD, un contrôleur de domaine en lecture seule (RODC) est créé dans l'AD. Le compte d'ordinateur RODC, nommé AzureADKerberos$
. De plus, un compte krbtgt
secondaire nommé krbtgt_AzureAD
. Ce compte contient les clés Kerberos utilisées pour les tickets que crée Azure AD.
Par conséquent, si ce compte est compromis, il pourrait être possible d'usurper l'identité de n'importe quel utilisateur... bien que cela ne soit pas vrai car ce compte est empêché de créer des tickets pour tout groupe AD privilégié commun comme Domain Admins, Enterprise Admins, Administrators...
Cependant, dans un scénario réel, il y aura des utilisateurs privilégiés qui ne sont pas dans ces groupes. Donc le nouveau compte krbtgt, s'il est compromis, pourrait être utilisé pour les usurper.
De plus, lorsqu'un utilisateur s'authentifie sur Windows en utilisant une identité hybride, Azure AD délivrera un ticket Kerberos partiel avec le PRT. Le TGT est partiel car AzureAD a des informations limitées sur l'utilisateur dans l'AD sur site (comme l'identifiant de sécurité (SID) et le nom).
Windows peut alors échanger ce TGT partiel contre un TGT complet en demandant un ticket de service pour le service krbtgt
.
Comme il pourrait y avoir des services qui ne prennent pas en charge l'authentification Kerberos mais NTLM, il est possible de demander un TGT partiel signé avec une clé krbtgt
secondaire en incluant le champ KERB-KEY-LIST-REQ
dans la partie PADATA de la demande, puis d'obtenir un TGT complet signé avec la clé krbtgt
principale y compris le hachage NT dans la réponse.
Lorsque AzureAD génère un TGT partiel, il utilisera les détails qu'il a sur l'utilisateur. Par conséquent, si un administrateur global pouvait modifier des données comme l'identifiant de sécurité et le nom de l'utilisateur dans AzureAD, lors de la demande d'un TGT pour cet utilisateur, l'identifiant de sécurité serait différent.
Il n'est pas possible de faire cela via Microsoft Graph ou Azure AD Graph, mais il est possible d'utiliser l'API que Active Directory Connect utilise pour créer et mettre à jour des utilisateurs synchronisés, ce qui peut être utilisé par les administrateurs globaux pour modifier le nom SAM et le SID de tout utilisateur hybride, et ensuite, si nous nous authentifions, nous obtenons un TGT partiel contenant le SID modifié.
Notez que nous pouvons faire cela avec AADInternals et mettre à jour les utilisateurs synchronisés via la cmdlet Set-AADIntAzureADObject.
Le succès de l'attaque et l'obtention des privilèges d'administrateur de domaine dépendent de la satisfaction de certaines conditions préalables :
La capacité à modifier des comptes via l'API de synchronisation est cruciale. Cela peut être réalisé en ayant le rôle d'administrateur global ou en possédant un compte de synchronisation AD Connect. Alternativement, le rôle d'administrateur d'identité hybride suffirait, car il accorde la capacité de gérer AD Connect et d'établir de nouveaux comptes de synchronisation.
La présence d'un compte hybride est essentielle. Ce compte doit être modifiable avec les détails du compte de la victime et doit également être accessible pour l'authentification.
L'identification d'un compte de victime cible au sein d'Active Directory est une nécessité. Bien que l'attaque puisse être exécutée sur n'importe quel compte déjà synchronisé, le locataire Azure AD ne doit pas avoir répliqué les identifiants de sécurité sur site, nécessitant la modification d'un compte non synchronisé pour obtenir le ticket.
De plus, ce compte doit posséder des privilèges équivalents à ceux d'un administrateur de domaine mais ne doit pas être membre des groupes d'administrateurs AD typiques pour éviter la génération de TGT invalides par le RODC AzureAD.
La cible la plus appropriée est le compte Active Directory utilisé par le service de synchronisation AD Connect. Ce compte n'est pas synchronisé avec Azure AD, laissant son SID comme une cible viable, et il détient intrinsèquement des privilèges équivalents à ceux d'un administrateur de domaine en raison de son rôle dans la synchronisation des hachages de mots de passe (en supposant que la synchronisation des hachages de mots de passe est active). Pour les domaines avec installation express, ce compte est préfixé par MSOL_. Pour d'autres cas, le compte peut être identifié en énumérant tous les comptes dotés de privilèges de réplication d'annuaire sur l'objet de domaine.
Check it in the original post: https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)