Ce script PowerShell est conçu pour effectuer un audit complet de Microsoft Active Directory, en se concentrant sur l'identification des vulnérabilités de sécurité et des faiblesses courantes. Son exécution facilite le repérage des domaines critiques nécessitant un renforcement, renforçant ainsi votre infrastructure contre les tactiques courantes utilisées dans les mouvements latéraux ou les attaques d'élévation de privilèges ciblant Active Directory.
Si vous avez des one-liners PowerShell décents qui pourraient être utilisés dans le script, n’hésitez pas à me le faire savoir. J’essaie de garder ce script sous forme de fichier unique sans dépendance à des outils externes (autre que ntdsutil et cmd.exe).
Exécutez-le directement sur un contrôleur de domaine avec un compte DA. Si vous ne faites pas confiance au code, je vous suggère de le lire d'abord : vous verrez qu'il est tout à fait inoffensif ! (Mais vous devriez de toute façon le faire avec tout code téléchargé sur Internet et exécuté en tant que DA, non ?)
Ce que ça fait
Informations sur l'appareil
Get-HostDetails
Audit du domaine
Get-LastWUDate
Get-DCEval
Get-TimeSource
Get-PrivilegedGroupMembership
Get-MachineAccountQuota
Get-DefaultDomainControllersPolicy
Get-SMB1Support
Get-FunctionalLevel
Get-DCsNotOwnedByDA
Get-ReplicationType
Get-RecycleBinState
Get-CriticalServicesStatus
Get-RODC
Audit des approbations de domaine
Get-DomainTrusts
Audit des comptes utilisateur
Get-InactiveAccounts
Get-DisabledAccounts
Get-LockedAccounts
Get-AdminAccountChecks
Get-NULLSessions
Get-PrivilegedGroupAccounts
Get-ProtectedUsers
Audit des informations sur les mots de passe
Get-AccountPassDontExpire
Get-UserPasswordNotChangedRecently
Get-PasswordPolicy
Get-PasswordQuality
Sauvegarde de NTDS.dit
Get-NTDSdit
Audit des objets ordinateur
Get-OldBoxes
Audit des GPO (et vérification des mots de passe dans SYSVOL)
Get-GPOtoFile
Get-GPOsPerOU
Get-SYSVOLXMLS
Get-GPOEnum
Vérification des autorisations génériques sur les groupes AD
Get-OUPerms
Vérification de l'existence de LAPS dans le domaine
Get-LAPSStatus
Vérification de l'existence de stratégies d'authentification et de silos
Get-AuthenticationPoliciesAndSilos
Vérification des zones DNS non sécurisées
Get-DNSZoneInsecure
Vérification des utilisateurs et groupes récemment créés
Get-RecentChanges
Vérification des vulnérabilités ADCS, ESC1,2,3,4 et 8.
Vérification des comptes kerberoastables à haute valeur
Vérification des comptes ASREPRoastables
Vérification des permissions ACL dangereuses sur les utilisateurs, les groupes et les ordinateurs.
Vérification des paramètres LDAP et LDAPs (signature, sessions nulles, etc.)
Arguments d'exécution
Les commutateurs suivants peuvent être utilisés en combinaison :
-installdeps installe les fonctionnalités optionnelles (DSInternals)
-hostdetails récupère le nom d'hôte et d'autres informations utiles pour l'audit
-domainaudit récupère des informations sur l'AD (niveau fonctionnel, etc.)
-trusts récupère des informations sur les approbations de domaine
-accounts identifie les problèmes de comptes (expirés, désactivés, etc.)
-passwordpolicy récupère les informations sur la politique de mot de passe
-ntds sauvegarde le fichier NTDS.dit avec ntdsutil
-oldboxes identifie les systèmes d'exploitation obsolètes (XP/2003) joints au domaine
-gpo exporte les GPO en XML et HTML pour analyse ultérieure
-ouperms vérifie les problèmes d'autorisation génériques sur les OU
-laps vérifie si LAPS est installé
Prise en charge des domaines enfants
Le script prend désormais entièrement en charge à la fois les domaines racines de forêt et les domaines enfants :
Les groupes Schema Admins et Enterprise Admins sont traités avec élégance dans les domaines enfants (où ils n'existent que dans la racine de la forêt)
Le script se termine avec succès en affichant des messages informatifs appropriés pour les groupes manquants propres à la racine de la forêt
Pas de blocage ni d'échec critique dû à des groupes manquants dans les scénarios de domaine enfant
Testé et validé sur des domaines enfants Windows Server 2022
Gestion des erreurs et robustesse
Le script implémente une gestion complète des erreurs tout au long de son exécution :
Les fonctions d'audit optionnelles échouent avec élégance sans bloquer l'exécution du script
Les erreurs de génération de rapports GPO (ex. GPO corrompues) n'empêchent pas la réalisation des autres audits
Des vérifications défensives évitent les exceptions de fichier introuvable sur les fichiers de sortie optionnels
Une distinction claire des messages d'erreur/avertissement/information permet de différencier les échecs critiques des situations attendues
L'absence de modules optionnels (DSInternals, LAPS, AdmPwd.PS) n'empêche pas les fonctions d'audit principales
Sortie XML Nessus
Génère un XML Nessus valide et correctement formaté sans nécessiter de post-traitement
Tous les caractères spéciaux sont correctement échappés à la source (&, <, >, ", ')
Le fichier de sortie est prêt pour une importation directe dans Nessus sans modifications manuelles
Élimine le besoin d'étapes de post-traitement ou de fichiers de sortie supplémentaires
Environnements testés
Validé sur Windows Server 2022 (domaines racine de forêt et enfants)
Prend en charge Windows Server 2008R2 à 2022
Gère avec succès des environnements de production complexes avec des GPO corrompues et des configurations mixtes