MachineAccountQuota : pourquoi tout utilisateur peut encore ajouter dix ordinateurs à votre domaine
Dans un domaine Active Directory laissé à ses valeurs par défaut, n'importe quel utilisateur authentifié peut joindre jusqu'à dix ordinateurs au domaine. Ce paramètre hérité d'une autre époque n'a plus d'utilité dans une organisation qui gère ses postes, mais il reste un maillon de nombreuses chaînes d'attaque. C'est l'une des corrections les plus rentables que nous recommandons.
Un paramètre d'un autre temps
L'attribut ms-DS-MachineAccountQuota, porté par l'objet racine du domaine, fixe le nombre de comptes ordinateurs qu'un utilisateur sans droit particulier peut créer. Sa valeur par défaut est de 10. Il fonctionne avec le droit utilisateur « Ajouter des stations de travail au domaine », accordé par défaut aux utilisateurs authentifiés dans la stratégie des contrôleurs de domaine.
Ce mécanisme visait les petites structures où chacun joignait son poste lui-même. Aujourd'hui, la jonction est réalisée par le support, par un outil de déploiement ou par un processus d'enrôlement. Le quota ne sert plus qu'à une chose : permettre à n'importe quel compte du domaine, y compris un compte compromis, de disposer d'un compte ordinateur dont il connaît le mot de passe.
Pourquoi un compte ordinateur intéresse un attaquant
Un compte ordinateur n'est pas un simple objet d'inventaire. C'est un principal de sécurité complet, avec un mot de passe, des noms de principal de service (SPN) et la capacité d'obtenir des tickets Kerberos. Pour un attaquant qui ne dispose que d'un compte utilisateur standard, en créer un ouvre plusieurs possibilités :
- Délégation contrainte basée sur la ressource : si l'attaquant parvient à écrire l'attribut de délégation d'une machine cible, par exemple en relayant une authentification vers LDAP, il lui faut un compte doté d'un SPN et dont il connaît le secret pour en tirer parti. Le quota le lui fournit ;
- Chaînes de relais : plusieurs techniques combinant coercition d'authentification et relais aboutissent à la création d'un compte ordinateur pour conserver un accès ;
- Certificats : le groupe « Ordinateurs du domaine » peut souvent s'inscrire sur des modèles de certificats destinés aux machines, avec parfois des paramètres trop permissifs ;
- Vulnérabilités passées : certaines failles d'usurpation de nom de compte, corrigées depuis, exploitaient précisément la possibilité de créer et renommer un compte ordinateur.
Aucune de ces attaques ne repose uniquement sur le quota, mais celui-ci supprime une étape. Le mettre à zéro rend plusieurs scénarios nettement plus difficiles pour un attaquant qui part d'un simple compte utilisateur.
Indice dans l'annuaire. Les comptes ordinateurs créés via le quota portent l'attribut ms-DS-CreatorSID, qui identifie l'utilisateur créateur. Le lister donne une image immédiate de l'usage réel du quota, et parfois de comptes que personne ne sait expliquer.
Mettre le quota à zéro sans casser les processus
La modification est simple : passer ms-DS-MachineAccountQuota à 0. La préparation l'est moins, car il faut savoir qui joint aujourd'hui des postes avec un compte non délégué. Nous procédons ainsi :
- Inventorier les créations : comptes ordinateurs portant un
ms-DS-CreatorSID, journaux de création de comptes ordinateurs sur les contrôleurs de domaine. - Identifier les processus : techniciens du support, séquences de déploiement, solutions d'enrôlement hybride, outils de gestion de parc. Chacun doit utiliser un compte ou un groupe identifié.
- Déléguer sur des unités d'organisation précises : accorder au groupe de jonction le droit de créer des objets ordinateurs, et les droits nécessaires sur ces objets, uniquement dans les UO de destination.
- Retirer le droit « Ajouter des stations de travail au domaine » aux utilisateurs authentifiés, ou le réserver au groupe de jonction.
- Passer le quota à 0, puis surveiller les échecs de jonction pendant quelques semaines.
Bien concevoir la délégation de jonction
Le compte de jonction devient lui-même sensible : il peut créer des comptes ordinateurs dans certaines UO. Il ne doit donc pas avoir d'autres droits, son mot de passe doit être géré, et s'il est utilisé par une séquence de déploiement, il ne doit pas être stocké en clair dans un partage lisible par tous. Le pré-enregistrement des comptes ordinateurs, créés à l'avance par une personne habilitée, est une alternative qui limite encore les droits nécessaires.
Notez que des mises à jour de sécurité de Windows ont durci les règles de réutilisation d'un compte ordinateur existant lors d'une jonction : un compte créé par un autre utilisateur ne peut plus être réutilisé librement. Si vos processus reposaient sur ce comportement, la délégation explicite est de toute façon la bonne réponse.
Ce qu'un audit vérifie
- La valeur de
ms-DS-MachineAccountQuotasur chaque domaine de la forêt. - Les titulaires du droit « Ajouter des stations de travail au domaine ».
- Les comptes ordinateurs créés par des utilisateurs non délégués, via
ms-DS-CreatorSID. - Les délégations de création d'objets ordinateurs sur les UO et leur périmètre.
- La protection des comptes utilisés par les processus de jonction et de déploiement.