Pour comprendre pourquoi le Kerberoasting fonctionne, il faut d’abord comprendre les bases de Kerberos.
Kerberos est un protocole d’authentification qui permet aux utilisateurs et aux services (comme les applications, les bases de données et les serveurs) de s’authentifier et de communiquer en toute sécurité au sein d’Active Directory et d’autres domaines.
Le processus d’authentification Kerberos utilise un système de tickets. Au cœur de ce système se trouve le centre de distribution de clés (KDC), qui s’exécute sur le contrôleur de domaine du réseau.
Le KDC est essentiellement le gardien du domaine. Il authentifie les utilisateurs et les services sur le réseau et leur délivre des tickets. Les tickets sont des identifiants qui prouvent l’identité des utilisateurs et leur permettent d’accéder à d’autres ressources sur le réseau. Les utilisateurs et les services échangent ces tickets pour vérifier leur identité les uns auprès des autres.
Lorsqu’un utilisateur se connecte à un domaine, il s’authentifie d’abord auprès du KDC et reçoit un ticket d’octroi de tickets (TGT). Ce TGT permet à l’utilisateur de demander l’accès aux services de domaine.
Lorsque l’utilisateur souhaite accéder à un service, il envoie une requête au service d’octroi de tickets (TGS) du KDC. Le TGT accompagne cette demande pour garantir l’identité de l’utilisateur.
En réponse, le KDC émet un ticket de service, également appelé « ticket TGS », qui est chiffré à l’aide du mot de passe du compte de service. Cela permet de s’assurer que seul le service cible peut valider la demande d’accès de l’utilisateur. L’utilisateur présente ce ticket de service au service cible, qui authentifie l’utilisateur et lance une session sécurisée.
Quelques détails dans la conception de Kerberos laissent la porte ouverte au Kerberoasting.
Premièrement, le KDC ne vérifie pas si les utilisateurs sont autorisés ou non à accéder à un service. Tout utilisateur peut demander un ticket pour n’importe quel service. Il appartient aux services individuels d’appliquer les permissions et de bloquer les utilisateurs non autorisés. De ce fait, les pirates n’ont pas besoin de s’emparer des comptes des administrateurs de domaine ou d’autres utilisateurs privilégiés. Tout compte compromis fait l’affaire.
Deuxièmement, chaque service d’un domaine Kerberos doit être associé à un compte de service responsable de l’exécution du service sur le domaine. Les comptes de service permettent à Kerberos d’authentifier les services, d’émettre des tickets de service et d'appliquer des contrôles de sécurité. Ces comptes constituent également une cible pour les pirates, car ils ont tendance à avoir des privilèges élevés.
Troisièmement, les tickets Kerberos sont chiffrés, en utilisant les hachages de mot de passe des comptes associés comme clés. Il est important de noter que pour le Kerberoasting, les tickets de service utilisent les hachages de mot de passe des comptes de service concernés.
Les mots de passe de compte sont des clés de chiffrement symétriques pratiques, car le KDC et le service associé sont les seuls qui doivent connaître ce mot de passe. Mais comme les tickets sont chiffrés à l’aide de hachages de mots de passe, les pirates peuvent avoir recours à l’ingénierie inverse pour reconstituer les mots de passe des comptes de service en décodant le chiffrement d’un ticket.
En outre, l’option « Le mot de passe n’expire jamais » est souvent activée sur les comptes de service configurés manuellement. Dans les réseaux en place depuis longtemps, cela signifie que les comptes de service utilisent des mots de passe très anciens qui suivent des directives de sécurité obsolètes, ce qui les rend faciles à déchiffrer.