Pour analyser ou défendre efficacement une GPO, les analystes doivent comprendre qu’une GPO n’est pas un fichier unique. Il s’agit d’un objet virtuel divisé en deux composants distincts stockés à différents endroits sur les contrôleurs de domaine.
Group Policy Container (GPC)
stocké au sein de la base de données LDAP d’Active Directory (ntds.dit). Il contient les propriétés logiques de la GPO, y compris sa version, son statut, et les listes de contrôle d’accès (ACL) qui dictent qui est autorisé à la modifier.
Group Policy Template (GPT)
stocké sur le système de fichiers dans le partage SYSVOL (\\<domaine>\SYSVOL\<domaine>\Policies\{GUID}). Ce dossier contient les fichiers de configuration physiques réels, les fichiers de stratégie de registre (Registry.pol), et les scripts que les machines clientes téléchargent et exécutent.
Les machines clientes traitent et appliquent les GPO de manière hiérarchique. En cas de conflit, la dernière politique appliquée l’emporte. L’ordre est le suivant :
Locale → Site → Domaine → Unité d’Organisation (OU).
2. Base de référence forensique : auditer l’environnement
Lors de la réponse à incident, distinguer les configurations informatiques légitimes des modifications malveillantes d’un attaquant nécessite d’établir une ligne de base (baseline).
La ligne de base théorique (GPMC) : demandez un rapport HTML depuis la console de gestion des stratégies de groupe (GPMC). Cela montre la configuration prévue à travers le domaine.
La vérité terrain (côté client) : exécutez gpresult /h rapport.html sur un terminal compromis. Cela révèle l’ensemble résultant des stratégies (RSoP - Resultant Set of Policy) réellement appliqué à la machine. Une divergence entre le rapport GPMC et la sortie de gpresult est une découverte forensique critique.
Menace historique : la faille cPassword (CVE-2014-1812)
Historiquement, les administrateurs utilisaient les préférences de stratégie de groupe (GPP) pour pousser des mots de passe d’administrateur local vers les postes de travail. Ces mots de passe étaient stockés dans le partage SYSVOL à l’intérieur d’un fichier Groups.xml, chiffrés avec une clé AES que Microsoft a accidentellement publiée sur MSDN. Les acteurs de la menace scannent systématiquement le SYSVOL à la recherche de ces fichiers pour obtenir une élévation de privilèges immédiate.
Les adversaires abusent des GPO par le biais de deux vecteurs principaux : la modification directe de la GPO via des permissions mal configurées, ou le contournement des permissions via le relais d’authentification.
En utilisant des outils comme BloodHound, les attaquants cartographient le domaine pour trouver des GPO sur lesquelles un utilisateur ou un groupe faiblement privilégié et compromis possède des permissions GenericWrite, GenericAll ou WriteDacl.
À l’aide d’outils comme SharpGPOAbuse, l’attaquant modifie la GPO pour établir une persistance sur toutes les machines de l’OU :
Tâches planifiées : injection d’une tâche planifiée immédiate pour télécharger et exécuter une balise Cobalt Strike.
Droits d’administrateur local : déploiement d’une politique de “Groupes restreints” pour ajouter le compte de domaine de l’attaquant au groupe local Administrateurs de chaque machine.
Comme démontré par les recherches de Synacktiv, GPOddity représente un chemin d’attaque hautement sophistiqué exploitant la nature même de la synchronisation entre GPC et GPT.
Si un attaquant force une machine (ex: en utilisant PetitPotam) à s’authentifier vers une machine contrôlée par l’attaquant via NTLM, l’attaquant peut relayer l’authentification NTLM vers le service LDAP du contrôleur de domaine.
Via LDAP, l’attaquant modifie l’attribut gPCMachineExtensionNames d’une GPO appliquée à la machine victime, lui ordonnant de télécharger un Group Policy Template (GPT) malveillant hébergé sur un serveur SMB frauduleux contrôlé par l’attaquant, ce qui conduit à une exécution de code à distance (RCE) instantanée.
Puisque les GPO sont modifiées légitimement par le personnel informatique, la recherche d’anomalies comportementales est primordiale. L’artefact principal pour suivre la modification des GPO sur un contrôleur de domaine est l’Événement 5136 (Un objet du service d’annuaire a été modifié).
title: Modification suspecte d'une stratégie de groupe (Événement 5136)
id: 8d9e0f1a-2b3c-4d5e-6f7a-8b9c0d1e2f3a
status: experimental
description: Détecte les modifications non autorisées ou suspectes apportées aux objets de stratégie de groupe au sein du conteneur LDAP d'Active Directory.
logsource:
product: windows
service: security
detection:
selection:
EventID: 5136
ObjectClass: 'groupPolicyContainer'
filter_legit:
# Exclure les serveurs de gestion connus ou les comptes administrateurs
Administration par niveaux (Tiering) : les GPO qui s’appliquent aux actifs de Tier 0 (Contrôleurs de Domaine) ne doivent pouvoir être modifiées que par des comptes de Tier 0. Assurez-vous qu’aucun utilisateur standard ou groupe de helpdesk ne détienne de permissions GenericWrite sur des GPO critiques.
Exiger la signature SMB et LDAP Channel Binding : pour neutraliser GPOddity et les autres attaques par relais NTLM contre LDAP, imposez le LDAP Channel Binding et exigez la signature SMB (SMB Signing) sur l’ensemble du domaine.
Surveiller l’intégrité de SYSVOL : implémentez le contrôle d’intégrité des fichiers (FIM) ou des règles Sysmon spécialisées sur les contrôleurs de domaine pour déclencher une alerte lors d’écritures de fichiers non autorisées dans les répertoires \\SYSVOL\...\Policies\.