On dépile le NTDS #6 - LAPS, des attributs particuliers (1/2)

Partie 1 : LAPS, des attributs particuliers

Dans cet article, nous allons parler de la solution LAPS (Local Administrator Password Solution) et de sa représentation dans la base NTDS. Cette solution, publiée pour la première fois le 1er mai 2015 par Microsoft, a pour objectif la suppression de la gestion manuelle des comptes d’administration locaux des machines dans un environnement Active Directory.  

Note : Microsoft a publié en avril 2023 une nouvelle version de LAPS. Dans cet article, nous parlons uniquement de l’ancienne version rebaptisée LAPS legacy, version la plus répandue aujourd’hui en production. Nous reviendrons sur la nouvelle version et les avantages qu’elle apporte dans un prochain article. 

La genèse de LAPS 

La gestion des comptes locaux dans un domaine est toujours compliquée. Il est encore aujourd’hui très commun d’identifier un même mot de passe pour le compte local built-in Administrateur sur l’ensemble des postes ou des serveurs du domaine. Cette faille de sécurité permet à un attaquant ayant compromis une seule machine de se déplacer latéralement sur l’ensemble des machines du domaine en réutilisant ce même mot de passe ou son condensat (cf. technique de Pass-The-Hash)

La mise à disposition de la solution LAPS fait donc suite à une difficulté de gérer les mots de passe des administrateurs locaux. Microsoft avait mis en place une stratégie de groupe (GPO) qui permettait d’automatiser le déploiement et la gestion du compte administrateur local des postes de travail. Celle-ci permettait de déployer rapidement, sur tous les postes du domaine, le même compte administrateur et le même mot de passe. Cependant, Microsoft lui-même ne recommandait pas d’utiliser cette fonctionnalité.(1) 

Dès 2012, un article sur le blog de Sogeti ESSEC(2) montre comment déchiffrer les mots de passe utilisés dans les GPP(3)(Préférences de Stratégie de Groupe) ce qui pousse Microsoft, en mai 2014, à publier un avis de sécurité (MS14-025) pour bloquer cette fonctionnalité.  

LAPS voit ensuite le jour en 2015 pour pallier ce problème. Disponible à partir de Windows Server 2003 SP1 et de Windows Vista SP2, LAPS permet de gérer le mot de passe de l’administrateur local. Celui-ci est aléatoire, unique et changé régulièrement (par défaut tous les 30 jours) sur les machines du domaine. Ces mots de passe sont stockés de manière centralisée dans l’annuaire Active Directory et restreints aux utilisateurs autorisés en utilisant les ACL. Les mots de passe sont protégés lors du transit du client au serveur en utilisant Kerberos et AES. 

Mise à jour du schéma 

La solution LAPS n’est pas directement intégrée au service Active Directory. Une installation a posteriori est nécessaire et modifie le schéma pour ajouter deux nouveaux attributs : ms-Mcs-AdmPwd et ms-Mcs-AdmPwdExpirationTime. 

ms-Mcs-AdmPwd : contient le mot de passe en clair du compte d’administration de la machine (sous forme binaire) 

ms-Mcs-AdmPwdExpirationTime: contient la date d’expiration du mot de passe nécessitant un renouvellement (sous forme timestamp)   

Attributs LAPS ajouter sur le compte machine PC-014
Attributs LAPS ajoutés sur le compte machine PC-01(4) 

Il est ensuite nécessaire d’instaurer une délégation de droits appropriée afin que les machines aient la possibilité de mettre à jour leurs mots de passe LAPS locaux et que les groupes privilégiés aient accès à la lecture de l’attribut confidentiel ms-Mcs-AdmPwd. D’autres actions telles que l’installation de l’extension sur les clients et la mise en place d’une GPO sont requises.   

Note : Par défaut, l’attribut ms-Mcs-AdmPwd ne peut être ni lu ni modifié excepté par les Administrateurs de domaine. Une délégation des droits doit être mise en place et peut amener à des erreurs de configurations (ex. : mot de passe accessible à tous les utilisateurs permettant à n’importe qui de prendre le contrôle de toutes les machines).

Stockage dans le NTDS 

D’un point de vue de la base de données NTDS, aucune modification ne va être opérée dans la table MSysObjects qui contient toutes les colonnes présentes dans la datatable (cf. https://www.xmco.fr/active-directory/on-depile-le-ntds-partie-2/). La modification va s’opérer directement dans la datatable. La méthode pour retrouver le nom des colonnes correspondant aux attributs ms-Mcs-AdmPwd et ms-Mcs-AdmPwdExpirationTime est donc différent des autres attributs présents à l’installation du service Active Directory. En effet, le nom des colonnes LAPS diffère d’un domaine à un autre. 

Voici la méthodologie :  

  1. Parcours du NTDS à la recherche d’une colonne dont le nom LDAP correspond à la valeur ms-Mcs-AdmPwd et ms-Mcs-AdmPwdExpirationTime. Si aucune de ces valeurs n’est identifiée, la solution LAPS (legacy) n’a pas été déployée. 
  2. Récupération de l’ID (msDS-IntId) de ces deux objets respectifs permettant d’en déduire le nom des colonnes contenant le mot de passe LAPS (« ATTf » + msDS-IntId) et sa date d’expiration (« ATTq » + msDS-IntId).  
  3. Parsing des comptes machine du NTDS en récupérant le mot de passe et la date d’expiration de chaque machine du domaine. 
Fonction permettant de rechercher le nom des colonnes
Fonction permettant de rechercher le nom des colonnes 
Fonction permettant de récupérer le contenu des attributs LAPS de chaque compte machine
Fonction permettant de récupérer le contenu des attributs LAPS de chaque compte machine 

Le script permettant de lire les mots de passe LAPS à partir d’un NTDS est disponible à l’adresse suivante : https://github.com/xmco/ntds_extract/blob/main/Part-6-LAPS/extract_laps_attributes.py

Note : Contrairement aux autres types de secrets (hash des mots de passe utilisateur, clé Kerberos, etc.) les mots de passe LAPS sont stockés en clair dans le NTDS. Il n’est donc pas nécessaire de posséder la BOOTKEY contenue dans la ruche SYSTEM pour les extraire (cf. https://www.xmco.fr/active-directory/on-depile-le-ntds-partie-3/). Lorsque l’on rencontre une sauvegarde de NTDS lors d’un test d’intrusion, il est intéressant d’en extraire les mots de passe LAPS, sous réserve que la sauvegarde ne soit pas trop vieille.  

Nous avons donc vu l’étude de deux attributs particuliers issus de l’installation d’un composant tiers. La solution LAPS est fortement recommandée dans un environnement Active Directory mais nécessite d’être vigilant sur les droits d’accès sur ces attributs dans l’annuaire. Nous verrons dans un prochain article les nouveautés apportées par la nouvelle version de LAPS avec notamment le chiffrement des mots de passe dans le NTDS et le support d’Azure AD.   


(1) https://adsecurity.org/?p=384

(2) https://web.archive.org/web/20150417202739/http://esec-pentest.sogeti.com/post/Exploiting-Windows-2008-Group-Policy-Preferences

(3) Avec Windows Server 2008, Microsoft a introduit des paramètres supplémentaires aux stratégies de groupe afin d’offrir des possibilités supplémentaires.

(4) https://www.it-connect.fr/chapitres/installation-de-laps-sur-un-controleur-de-domaine/

Bastien Cacace

Découvrir d'autres articles

  • Active Directory

    On dépile le NTDS #2 – La Datatable

    Lire l'article
  • Active Directory

    On dépile le NTDS #5 – Les comptes machines dans l’Active Directory

    Lire l'article
  • NTDS - Partie 4
    Active Directory

    On dépile le NTDS #4 – Les comptes dans l’Active Directory

    Lire l'article