GPP attack
Définition
Une attaque trés simple qui permet de récupérer des identifiants stockés dans le partage SYSVOL qui peuvent être utilisés pour gagner un shell ou faire une escalade de privilèges.
Une GPP (Group policy Preference) est une ancienne fonctionnalité qui permet de configurer des préférences sur les machines d’un Active Directory. Contrairement aux GPO, les GPP ne sont pas strictement appliqués sur les machines d’un domaine AD et permettent aux utilisateures de modifier les paramètres après leur application.
Les GPP sont souvent utilisé pour :
- Créer des raccourcis sur les bureaux
- Configurer des lecteurs réseaux automatiquement
- Changer les fonds d’écran
Principe de l’attaque
Avant la mise à jour de sécurité MS14-025, les adminsitrateurs utilisaient les GPP pour déployer des mots de passe via des fichiers XML stockés dans le SYSVOL de l’AD dans le dossier policies (groups.xml,Drives.xml,Services.xml). Ces permettent grâce aux mots de passe de configurer des parametres comme :
- Le mot de passe des comptes locaux
- Mappage de lecteurs avec identifiants
- Services configurés avec des comptes priviligiés
- Tâches planifiés avec des mots de passe stockés
Le problème est que ces mots de passe étaient chiffré en AES avec une clé statique identique pour tout le monde qui a été rendu public. Cela signifie que toute personne accédeant au partage SYSVOL peut déchiffrer ces mots de passe.
Pour exploiter cette attaque, on peut soit chercher le fichier manuellement et chercher la variable cpassword :
Puis la déchiffrer à l’aide de gpp-decrypt :
Soit utiliser le module smb_enum_gpp de metasploit si on a des identifiants :
Cette vulnérabilité à maintenant était corrigé mais les anciens fichiers xml peuvent persister. Il convient donc de les supprimer pour corriger cette faille.