Un mot de passe gMSA n'est pas stocké ; il est calculé à partir de la clé racine KDS de la forêt plus des attributs du compte (msDS-ManagedPasswordID). Normalement, le DC effectue ce calcul et seuls les hôtes autorisés récupèrent le résultat. L'attaque Golden gMSA s'empare de la clé racine KDS elle-même : extrayez-la une fois, et vous pouvez calculer les mots de passe actuels et futurs de chaque gMSA lié à cette clé, hors ligne, sans jamais contacter un DC. C'est l'analogue gMSA du golden ticket, et il est pire sur un point : contrairement à krbtgt, la clé racine KDS ne peut pas être renouvelée, de sorte qu'une clé compromise constitue une exposition permanente.
L'attaque#
Extraire la clé racine KDS nécessite un privilège élevé (Domain Admin, ou SYSTEM sur un DC) une fois ; après quoi le calcul est non privilégié et hors ligne :
# Semperis GoldenGMSA: read the KDS root key (privileged, once)
GoldenGMSA.exe kdsinfo
# Enumerate gMSAs and their managed-password IDs
GoldenGMSA.exe gmsainfo
# Compute a gMSA's password fully offline: SID + its managed-password ID (from gmsainfo) + the root key
GoldenGMSA.exe compute --sid <gMSA-SID> --pwdid <managed-password-id> --kdskey <base64-kds-key>
La sortie est le mot de passe du gMSA (et donc son hash NT / ses clés Kerberos), utilisé avec pass-the-hash ou overpass-the-hash.
Pourquoi c'est durable#
- La clé racine KDS ne tourne jamais : il n'y a pas d'équivalent d'un double reset de
krbtgt, donc une fois la clé fuitée, chaque gMSA associé reste forgeable jusqu'à ce que chaque gMSA soit migré vers une nouvelle clé. - Le calcul est hors ligne, il ne produit donc aucun log d'authentification sur le DC, contrairement à la récupération légitime de
msDS-ManagedPassword. - Il couvre tous les gMSA sous la clé à la fois, y compris les comptes de service privilégiés, faisant d'une seule extraction de clé une skeleton key de comptes de service à l'échelle de la forêt.
Notes d'exploitation#
- Il s'agit de persistance et de portée latérale, pas d'accès initial : vous avez besoin de la lecture privilégiée ponctuelle de la clé racine KDS (depuis le DC, ou depuis une sauvegarde/
ntds.dit). - L'équivalent delegated-MSA, Golden dMSA, applique la même idée aux dMSA de Server 2025 ; associez cela à la voie dMSA BadSuccessor lorsque des dMSA sont présents.
- Visez les gMSA qui exécutent des services privilégiés ; un mot de passe gMSA forgé vaut autant que les droits du compte de service.
Outils#
- GoldenGMSA (Semperis) : extraire la clé racine KDS et calculer les mots de passe gMSA hors ligne.
- GoldenDMSA (Semperis) : la variante delegated-MSA pour Server 2025.