Mot de passe dans une GPO, mauvaise idée !
Sommaire
I. Présentation
Les stratégies de groupe et notamment les paramètres de Préférences permettent d'automatiser la configuration des ordinateurs clients d'un domaine, aussi bien au niveau Ordinateur qu'au niveau Utilisateur.
Certaines préférences permettent une action possédant un champ "mot de passe", par exemple lorsque l'on souhaite changer le mot de passe d'un utilisateur local, mapper un lecteur réseau, créer une tâche planifiée, etc.
Cependant, stocker les mots de passe dans les objets GPO ce n'est pas une bonne idée... voyons pourquoi.
II. Le stockage des mots de passe
Les objets GPO sont stockés dans le répertoire "SYSVOL", ce dernier étant disponible pour les postes clients de votre domaine pour "publier" les GPO, et, il est également répliqué entre vos différents contrôleurs de domaine.
Les paramètres de type "Préférences" d'un objet GPO sont représenté par un ou plusieurs fichiers au format XML contenant l'ensemble des paramètres "Préférences" à déployer sur les postes clients ciblés, selon ce que vous avez configuré dans la GPO via l'interface graphique.
Par sécurité, ce mot de passe n'est pas stocké en clair dans le fichier XML, il est chiffré. Chiffré oui, enfin, d'après les informations fournies par Microsoft le chiffrement/déchiffrement utilise AES-32 bits ce qui n'est pas fiable, pas sécurisé.
D'ailleurs, lorsqu'un mot de passe est indiqué dans un objet GPO, une pop-up apparaît avec indiqué : "Ce mot de passe est stocké avec l'objet de stratégie de groupe dans SYSVOL et est détectable, bien qu'il soit masqué".
Si l'on édite un fichier XML contenant un mot de passe, on verra qu'il apparaît sous l'attribut "cpassword" comme ceci :
Dans l'exemple ci-dessus, il s'agit d'un paramètre préférence qui modifie le mot de passe de l'utilisateur "Invité" sur les ordinateurs du domaine.
Sur son Developer Network, Microsoft donne des précisions concernant le chiffrement des mots de passe des fichiers de préférences pour les GPO. Si vous souhaitez obtenir des détails sur la clé AES-32 bits utilisée, consultez le chapitre "2.2.1.1.4 Password Encryption" de la page suivante : Password Encryption
III. Les risques
Sur un domaine, tous les utilisateurs authentifiés ont un accès en lecture à SYSVOL afin de pouvoir lire les objets GPO, les scripts de connexion, etc... Comme le précise Microsoft sur son Technet :
"A password in a preference item is stored in SYSVOL in the GPO containing that preference item. To obscure the password from casual users, it is not stored as clear text in the XML source code of the preference item. However, the password is not secured. Because the password is stored in SYSVOL, all authenticated users have read access to it. Additionally, it can be read by the client in transit if the user has the necessary permissions."
De ce fait, si un pirate réussit à s'authentifier sur votre domaine grâce à un compte utilisateur, il pourra ensuite accéder en lecture au SYSVOL, récupérer la valeur "cpassword" chiffrée dans un fichier XML et la déchiffrer. À la suite de cela, il sera en possession d'un mot de passe (cela sera plus ou moins grave selon le mot de passe concerné...).
De plus, il est à noter que depuis 2012 un module "Group Policy Preferences Password" est présent dans MetaSploit, afin d'exploiter ce manque de sécurité.
La description du module est la suivante : "This module enumerates the victim machine’s domain controller and connects to it via SMB. It then looks for Group Policy Preference XML files containing local user accounts and passwords and decrypts them using Microsofts public AES key. Tested on WinXP SP3 Client and Win2k8 R2 DC."
Un pirate avec MetaSploit et un compte sur le domaine pourra scanner l'Active Directory et ainsi parvenir à obtenir le mot de passe chiffré via le fichier XML dans SYSVOL et il n'aura plus qu'à le déchiffrer.
IV. Paramètres de préférences concernés
Plusieurs paramètres de préférences proposent un champ "Mot de passe" :
- Propriétés des utilisateurs locaux
- Création d'une source de données
- Mappage d'un réseau
- Service Windows
- Tâche planifiée
V. Quels objets GPO contiennent des mots de passe ?
Afin de savoir quels sont les objets GPO de votre domaine qui contiennent un mot de passe, vous pouvez les scruter un par un via la console de gestion des stratégies de groupe, en sélectionnant l'objet GPO puis en cliquant sur l'onglet "Paramètres" afin d'afficher un résumé.
Sinon, vous pouvez développer un script PowerShell pour vérifier cela, mais il en existe surement sur internet (voir sur le script center).
Ensuite, si vous souhaitez retirer la valeur de mots de passe que vous aviez indiquée dans l'objet GPO, deux choix s'offrent à vous :
- Via l'interface graphique, supprimer la valeur du champ "Mot de passe"
- Via l'édition du fichier XML, supprimer la valeur de l'attribut "cpassword" et enregistrer
En conclusion de ce tutoriel, j'ajouterais qu'il est préférable d'éviter toute utilisation des mots de passe dans une stratégie de groupe. Cela est trop dangereux en terme de sécurité, il est préférable d'attendre que Microsoft sécurise ce système afin de pouvoir l'utiliser sereinement.