
GPOHound — Mis à jour !
Outil offensif de vidage et d'analyse de GPO qui exploite et enrichit les données de BloodHound
GPOHound
GPOHound est un outil pour extraire et analyser les objets de stratégie de groupe (GPO) extraits du partage SYSVOL.
Il fournit un format structuré et formalisé pour aider à découvrir les mauvaises configurations, les paramètres non sécurisés et les chemins d'élévation de privilèges dans les environnements Active Directory.
L'outil s'intègre à la base de données Neo4j de BloodHound, l'utilisant comme source de type LDAP pour les informations Active Directory tout en l'enrichissant en ajoutant de nouvelles relations (arêtes) et propriétés de nœuds basées sur l'analyse.
Fonctionnalités
Extraction
-
Extrait les GPO dans un format JSON structuré ou arborescent
-
Gère plusieurs domaines
-
Résout les noms de GPO avec les GUID de GPO
-
Filtre la sortie par fichiers GPO, GUID de GPO et domaines
-
Recherche dans les paires clé/valeur à l'aide d'expressions régulières
Analyse
-
Regroupe les paramètres par objet impacté (ex. : Groupes locaux, Registre)
-
Détecte les membres ajoutés aux groupes locaux privilégiés
-
Détecte les paramètres de registre non sécurisés, les informations d'identification stockées et les droits de privilège
-
Prend en charge le déchiffrement des informations d'identification VNC et des mots de passe GPP
-
Trouve les domaines, conteneurs et UO affectés par les GPO
-
Obtient les GPO appliqués à un utilisateur, un ordinateur, une UO, un conteneur ou un domaine spécifique
-
Enrichit les données BloodHound avec des relations et des propriétés
Installation
Installer avec pip
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
Installer avec pipx
pipx install "git+https://github.com/cogiceo/GPOHound"
Configuration d'APOC pour Neo4j
Vous devez configurer Neo4j APOC pour l'enrichissement des données BloodHound :
-
Si vous utilisez l'installation standard de Neo4j, vous pouvez activer APOC en copiant le fichier
jard'APOC dans le dossier des plugins, puis en redémarrant Neo4j :cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/ neo4j restart -
Si vous installez Neo4j avec "Docker Compose", ajoutez la variable d'environnement
NEO4J_PLUGINS=["apoc"]:neo4j: image: neo4j:latest environment: - NEO4J_PLUGINS=["apoc"]
Pour plus de détails ou d'autres méthodes d'installation, consultez la documentation officielle d'APOC.
Ajouter des requêtes BloodHound
Pour visualiser les relations et propriétés ajoutées par GPOHound, vous pouvez importer les requêtes personnalisées du fichier customqueries.json dans BloodHound. Par défaut, ce fichier se trouve dans ~/.config/bloodhound/customqueries.json.
Prérequis
Extraction de SYSVOL
Commencez par télécharger le contenu de SYSVOL depuis le contrôleur de domaine.
-
Télécharger l'intégralité du
SYSVOL:gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD -
Télécharger uniquement les GPO :
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos -
Télécharger avec exclusions :
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
Extraction LDAP
Récupérez toutes les données nécessaires depuis LDAP :
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
BloodHound
Pour l'enrichissement des données BloodHound, vous devez collecter les données BloodHound à l'aide d'un collecteur tel que bloodhound.py ou SharpHound.exe, puis importer les données recueillies dans l'interface BloodHound.
Utilisation
Des exemples de fichiers GPOHound sont disponibles dans example.zip. Extrayez-les avec unzip example.zip.
Consultez CONFIG.md pour des instructions sur la personnalisation des valeurs par défaut et des configurations.
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
Analyse
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
Extraction
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
Analyse
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
Analyse et enrichissement actuels
[!IMPORTANT]
- Les conditions telles que les filtres de sécurité, les filtres WMI et le ciblage au niveau des éléments ne sont pas interprétées.
- Les conflits de GPO ne sont pas simulés, afin d'éviter de manquer des paramètres valides.
Groupes locaux
-
Détection des utilisateurs affectés aux groupes locaux privilégiés lors de la connexion
-
Détection des groupes locaux privilégiés intégrés renommés
-
Détection des trustees ajoutés aux groupes locaux privilégiés à l'aide de "Variables de processus de préférence" (ex. : %ComputerName%, %DomainName%)
-
Détection des trustees abusables via le détournement de
sAMAccountName -
Détection de tout trustee ajouté aux groupes locaux privilégiés :
Groupe Arête Administrateurs AdminToUtilisateurs du Bureau à distance CanRDPUtilisateurs COM distribués ExecuteDCOMUtilisateurs de la gestion à distance CanPSRemoteOpérateurs de sauvegarde CanPrivEscOpérateurs d'impression CanPrivEscOpérateurs de configuration réseau CanPrivEsc
Registre
| Analyse | Propriété |
|---|---|
| Le groupe "Tout le monde" inclut "Ouverture de session anonyme" | — |
| La signature de session du serveur SMB n'est pas activée | smbSigningEnabled: false |
| La signature de session du serveur SMB n'est pas requise | smbSigningRequired: false |
| L'authentification NTLMv1 est prise en charge | NTLMv1Support: true |
| Mot de passe par défaut de la connexion automatique Windows | — |
| Informations d'identification VNC (Générique : RealVNC, TightVNC, TigerVNC, etc.) | *VNC*PASS* (divers) |
| Mots de passe stockés FileZilla | — |
| Mot de passe proxy PuTTY | — |
| Informations d'identification stockées TeamViewer | — |
| Sessions enregistrées WinSCP | — |
| Mot de passe stocké Picasa | — |
Droits de privilège
Les trustees privilégiés par défaut, ainsi que les comptes de service dont les SID commencent par S-1-5-8, sont exclus de l'analyse.
| Privilège | Description | Arête |
|---|---|---|
| SeDebugPrivilege | Permet à l'utilisateur de déboguer et d'interagir avec tout processus | CanPrivEsc |
| SeBackupPrivilege | Accorde l'accès aux fichiers sensibles | CanPrivEsc |
| SeRestorePrivilege | Contourne les autorisations d'objet lors de la restauration | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Permet l'usurpation de jeton pour l'élévation vers SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | Permet la création d'un processus sous le contexte d'un autre utilisateur | CanPrivEsc |
| SeTakeOwnershipPrivilege | Permet aux utilisateurs de prendre possession d'objets système | CanPrivEsc |
| SeTcbPrivilege | Accorde la capacité d'agir en tant que partie du système d'exploitation | CanPrivEsc |
| SeCreateTokenPrivilege | Permet la création de jetons d'authentification | CanPrivEsc |
| SeLoadDriverPrivilege | Autorise le chargement/déchargement de pilotes | CanPrivEsc |
| SeManageVolumePrivilege | Accorde les privilèges de gestion de volume ou de disque | CanPrivEsc |
| SeEnableDelegationPrivilege | Permet de faire confiance aux comptes d'ordinateur et d'utilisateur pour la délégation |
Améliorations
- Améliorer la journalisation
- Intégrer LDAP
- Intégrer SMB
- Analyser les extensions restantes
- Interface web
- Mettre en évidence les conflits potentiels entre les GPO
Documentation GPO
SYSVOL et LDAP
- [MS-GPAC] Extension de configuration d'audit
- [MS-GPCAP] Extension de protocole des stratégies d'accès centralisées
- [MS-GPEF] Extension du système de fichiers de chiffrement
- [MS-GPFAS] Structure de données du pare-feu et de la sécurité avancée
- [MS-GPFR] Extension de protocole de redirection de dossiers
- [MS-GPIE] Extension de maintenance d'Internet Explorer
- [MS-GPNAP] Extension de protection d'accès réseau (NAP)
- [MS-GPNRPT] Extension de données de la table de stratégie de résolution de noms (NRPT)
- [MS-GPOL] Protocole de base
- [MS-GPPREF] Structure de données de l'extension des préférences
- [MS-GPREG] Encodage de l'extension de registre
- [MS-GPSB] Extension de protocole de sécurité
- [MS-GPSCR] Encodage de l'extension de scripts
- [MS-GPSI] Extension de protocole d'installation de logiciels
LDAP uniquement
- [MS-GPDPC] Extension de connexions d'imprimante déployées
- [MS-GPWL] Extension de protocole sans fil/filaire