Aller au contenu

Le Kerberoasting en une page

Le compte de service est ce collègue qui ne prend jamais de congés, ne change jamais de mot de passe et détient les clés de la maison : on le trouve fiable, et on n’est pas le seul.

Schéma animé : le risque en une phrase, puis cinq parades qui transforment un compte de service, suivies d'une limite. Le risque : n'importe quel compte du domaine peut obtenir un ticket chiffré avec le secret d'un compte de service à SPN ; si ce secret est faible, il se devine hors ligne, sans bruit, et ouvre tous les droits du compte. Le compte de service svc-sql, avant puis après les parades : son SPN, MSSQLSvc/sql01, reste inchangé car le service en a besoin. Secret : « Printemps2019! », choisi par un humain, est barré ; parade 1, un gMSA dont le secret est géré par le domaine ; parade 2, sinon un mot de passe aléatoire de 25 caractères ou plus. Chiffrement : RC4 accepté est barré ; parade 3, AES seul (0x18), RC4 refusé. Droits : Admins du domaine est barré ; parade 4, ceux de son service, rien d'autre. Journal : 4769 collecté, jamais lu, est barré ; parade 5, 4769 au SIEM, avec une alerte sur RC4 (0x17) ou sur une rafale de SPN. Verdict avant les parades : ticket obtenu, secret deviné, les clés du domaine. Verdict après : le ticket se demande toujours, il ne mène plus nulle part. Légende des parades : 1, gMSA, un secret de machine que personne ne connaît, rien à deviner ; 2, sinon, mot de passe aléatoire de 25 caractères ou plus, en coffre ; 3, AES seul, clé salée et itérée, deviner devient bien plus lent ; 4, moindre privilège, si le secret tombe, un service tombe, pas le domaine ; 5, événement 4769 lu, un ticket RC4 ou une rafale de SPN se voient. Limite : demander un ticket est normal, on ne l'interdit pas ; on le rend inutile.

  • Le risque tient en une phrase. Tout compte authentifié du domaine peut obtenir un ticket de service pour n’importe quel SPN ; ce ticket est chiffré avec une clé dérivée du mot de passe du compte de service, et un mot de passe faible se retrouve hors ligne, loin de tout journal.
  • On ne ferme pas la porte, on vide la pièce. Délivrer des tickets est le métier du contrôleur de domaine. La défense consiste à rendre le ticket inexploitable, par la force du secret et la modestie des droits.
  • gMSA d’abord. Le compte de service géré de groupe (depuis Windows Server 2012) porte un mot de passe aléatoire très long, que le domaine renouvelle seul (tous les 30 jours par défaut) et qu’aucun humain ne connaît. Il n’y a rien à deviner.
  • Sinon, un vrai secret. Quand l’application refuse le gMSA : mot de passe aléatoire de 25 caractères ou plus, rangé dans un coffre, renouvelé par outillage plutôt que par la mémoire de quelqu’un.
  • AES seul, RC4 refusé. L’attribut msDS-SupportedEncryptionTypes du compte à 0x18 (AES128 et AES256). La clé RC4 n’est autre que le condensat NT, sans sel ni itérations ; la clé AES est salée et dérivée par 4096 itérations (RFC 3962). Avant de couper RC4, on mesure qui le demande encore.
  • Moindre privilège. Aucun SPN sur un compte d’administration, aucun compte de service dans un groupe privilégié : si le secret tombe un jour, c’est un service qui tombe, pas le domaine.
  • L’événement 4769 se lit. Émis par les contrôleurs de domaine à chaque ticket de service délivré, il donne le compte demandeur, le SPN et le type de chiffrement (0x17 pour RC4, 0x12 pour AES256). Un ticket RC4 pour un compte censé être en AES, ou une rafale de SPN distincts depuis un même compte, méritent une alerte.

Pour aller plus loin : Kerberos et KDC dans Active Directory, attaques et durcissement · Active Directory délégations et chemins d’attaque · Authentifier les personnes et les services · Vault PAM et enregistrement des sessions admin · Calibrer les alertes d’un SIEM sans noyer le SOC · NTLM, fonctionnement et durcissement.

À lire aussi

Pages voisines