Krbtgt

Krbtgt est un compte critique d’infrastructure dans la sécurité Active Directory, tout simplement !

Il s’agit d’un compte built-in présent dans tout annuaire Active Directory, situé au niveau du chaque domaine et porté par les contrôleurs en lecture/écriture (RWDC par opposition à RODC).

Par défaut, son statut est désactivé, le mot de passe associé est inconnu dans la mesure où il est généré aléatoirement. Le compte krbtgt historise autrement ses deux derniers mots de passe.

Krbtgt est particulier, important et stratégique, puisqu’un élément de son mot de passe est utilisé dans le mécanisme du protocole Kerberos pour générer les tickets (au niveau du KDC) lors des processus d’authentification au sein de l’annuaire Active Directory.
Précisément, le hash du mot de passe du compte krbtgt est utilisé pour crypter/chiffré et signer tous les tickets Kerberos.

Par rapport à l’historisation évoquée, une unique modification du mot de passe du compte krbtgt est insuffisante. C’est inefficace puisque l’ancien mot de passe demeure connu (le hash également de ce fait), donc effectif et valable dans ce cas, faisant que tous les tickets Kerberos déjà émis avec ce paramètre restent valides.

Par rapport au risque de compromission de l’annuaire Active Directory, la recommandation est de changer deux fois le mot de passe du compte krbtgt. Cela, dans le but d’éviter que celui-ci puisse être sujet aux attaques baptisées Golden Ticket.

D’une façon générale, pour des questions de sécurité et de prévention, il est recommandé de changer régulièrement ce mot de passe ; comme par exemple, tous les six mois en laissant au moins 10 heures entre les deux changements requis (cf. Maximum lifetime for user ticket). Pour rappel, 10 heures représentent la valeur par défaut de validité du ticket pour un compte « lambda » par opposition à « Protected Users« . Vous pouvez/devez vérifier ce paramètre au niveau du domaine pour ajuster le temps d’attente si nécessaire lors de votre processus de sécurisation (Computer Configuration\Windows Settings\Security Settings\Account Policies\Kerberos Policy).

Lors du premier changement, il faut laisser le temps au système de cacher (au sens mise en cache) l’ancien hash pour assurer la réplication vers l’ensemble des contrôleurs de domaine.
La recommandation de l’ANSSI quant à elle est de changer le mot de passe krbtgt tous les 40 jours (à évaluer si cela est réaliste vis-à-vis de votre manière de fonctionner). Aussi, ajustez votre cadence de changement selon la taille de votre infrastructure et la capacité de vos équipes.

Cette modification du mot de passe krbtgt reste une opération simple et élémentaire. Elle demande toutefois une certaine organisation ainsi que le respect de certaines règles. Le risque que vous encourez est d’invalider tous les tickets en cours en cas de changement successif trop rapide. Ceci déstabilisera votre infrastructure en cassant l’authentification Kerberos. Notez que ce risque peut être une réponse (une parade) en cas d’attaque avérée.

Enfin, les contrôleurs de domaine de type RODC (en lecture seule) ont chacun leur propre compte krbtgt avec la convention de nommage suivante : krbtgt_xxxxx. Par analogie, il est utilisé pour crypter et signer les tickets Kerberos sur leurs propres sites. Chaque RODC a un compte krbtgt spécifique pour garantir une isolation cryptographique.

 

Thierry Adrian, août 2020