FindAdminAccess
Un utilitaire en C# qui énumère les ordinateurs du domaine et teste l'accès administratif à ceux-ci, incluant les vérifications de connectivité, la vérification des privilèges administrateur et le test d'écriture sur le partage C$.
Fonctionnalités
- Énumérer tous les ordinateurs d'un domaine Active Directory
- Tester la connectivité réseau
- Vérifier l'accès administratif via l'API Service Control Manager (SCM)
- Tester l'écriture sur le partage administratif C$
- Prise en charge du traitement synchrone et asynchrone
- Spécification flexible du domaine et du contrôleur de domaine
- Mode de test d'un seul ordinateur
Prérequis
- .NET Framework (ou .NET Core/5+)
- Système d'exploitation Windows
- Machine jointe au domaine ou informations d'identification du domaine
- Autorisations de requête Active Directory appropriées
- Droits administratifs sur les ordinateurs cibles (pour vérifier l'accès)
Utilisation
Syntaxe de base
FindAdminAccess.exe [options]
Options
| Option | Description |
|---|
--async | Traiter les ordinateurs de manière asynchrone pour une exécution plus rapide |
--domain <nom> | Spécifier le nom du domaine (ex. contoso.com) |
--dc <serveur> | Spécifier le contrôleur de domaine à interroger |
--computer <nom> | Tester un seul ordinateur spécifique |
--help, -h, /? | Afficher le message d'aide |
Exemples
Tester tous les ordinateurs du domaine actuel (synchrone) :
FindAdminAccess.exe
Tester tous les ordinateurs de manière asynchrone (plus rapide mais gourmand en ressources) :
FindAdminAccess.exe --async
Spécifier le domaine et le contrôleur de domaine :
FindAdminAccess.exe --domain contoso.com --dc dc01.contoso.com
Tester un ordinateur spécifique :
FindAdminAccess.exe --computer SERVER01 --async
Sortie
L'outil affiche les résultats dans un tableau :
Computer Name Online Admin Handle C$ Writable
---------------------------------------------------------------------------
SERVER01.contoso.com Yes Yes Yes
WORKSTATION02.contoso.com Yes No N/A
OFFLINE-PC.contoso.com No N/A N/A
Descriptions des colonnes
- Computer Name : Nom de domaine complet (FQDN) de l'ordinateur
- Online : Indique si l'ordinateur répond au ping
- Admin Handle : Indique si l'accès administratif (SCM) est disponible
- C$ Writable : Indique si le partage administratif C$ est accessible en écriture
Fonctionnement
- Énumération des ordinateurs : Interroge Active Directory à l'aide de
PrincipalContext et ComputerPrincipal pour récupérer tous les objets ordinateur
- Vérification de la connectivité : Utilise un ping ICMP avec un délai d'expiration d'une seconde pour vérifier la connectivité réseau
- Test d'accès administrateur : Tente d'ouvrir le Service Control Manager avec les droits
SC_MANAGER_ALL_ACCESS via P/Invoke
- Test du partage C$ : Tente de créer et supprimer un fichier test sur le partage administratif C$
Compilation
Visual Studio
- Ouvrez la solution dans Visual Studio
- Compilez le projet (Ctrl+Maj+B)
Ligne de commande
csc /out:FindAdminAccess.exe Program.cs
Ou avec l'interface CLI .NET :
dotnet build
Dépannage
Si vous rencontrez des erreurs de connexion au domaine, essayez les étapes suivantes :
- Vérifiez la résolution DNS du domaine/contrôleur de domaine
- Vérifiez que les ports LDAP (389/636/3268/3269) sont accessibles
- Essayez d'utiliser uniquement
--dc sans le paramètre --domain
- Essayez d'utiliser le FQDN du contrôleur de domaine au lieu de son adresse IP
- Assurez-vous d'avoir les autorisations de requête sur le domaine
Remarques
- Le test de la machine locale est dans la liste des tâches à faire (TODO)
- Le mode asynchrone améliore significativement les performances pour les grands domaines
- Les tentatives d'accès administrateur échouées ne génèrent pas d'erreurs détaillées par défaut (peut être activé dans le code)
Auteur
Lsecqt