SharpHound : collecte des données depuis un poste hors domaine
Dans ce chapitre, nous allons voir comment utiliser SharpHound pour collecter les données de l'Active Directory, et ce, depuis un poste qui n'est pas intégré au domaine que l'on souhaite analyser.
I. Réseau, DNS et authentification
Lorsque l'on est sur un poste Windows non intégré au domaine, plusieurs choses vont nous compliquer la tâche :
- Nous n'allons pas pouvoir profiter de l'authentification de notre session Windows pour nous authentifier sur le domaine.
- Notre poste ne connaitra pas le nom de domaine à cibler, ni le serveur DNS, ni le contrôleur de domaine.
Il faut donc lui indiquer explicitement ces éléments, en commençant par configurer notre interface réseau pour que son serveur DNS soit le contrôleur de domaine (cas le plus fréquent). Pour confirmer que c'est bien le cas, vous pouvez utiliser la commande "ipconfig /all"
:
Une fois cela fait, nous pourrons ouvrir avec une Invite de commande ou une console PowerShell un "runas.exe" en spécifiant les identifiants d'un utilisateur valide du domaine cible :
runas /netonly /user:it-connect.tech\arocket cmd.exe
Cette commande exécute une instance de l'Invite de commandes ("cmd.exe") avec les identifiants du domaine indiqués ("it-connect.tech\arocket") et en utilisant le mode d'authentification réseau uniquement ("/netonly"). Grâce à cette commande, les opérations réseau seront effectuées avec les droits de l'utilisateur spécifié, donc en étant authentifié sur le domaine (si les identifiants fournis sont corrects bien sûr).
Vous pouvez confirmer que vous accédez bien au domaine en essayant de lister les partages réseaux du DC (les partages "SYSVOL" et "NETONLY" sont forcément accessibles à tout utilisateur authentifié) :
net view \\it-connect.tech
Voici le résultat attendu :
Sur ma console PowerShell en arrière-plan, les partages réseaux ne m'étaient pas accessibles, car j'étais sur une session locale sur un poste non intégré au domaine. J'ai ensuite démarré une Invite de commande via "runas /netonly" avec un compte valide sur le domaine "it-connect.tech". Sur cette Invite de commande au premier plan, les partages réseaux du contrôleur de domaine me sont bien accessibles.
II. Collecte des données de l'Active Directory
À présent, nous n'avons plus qu'à lancer SharpHound :
.\Sharphound.exe
Voici le résultat attendu :
On voit ici que SharpHound est parvenu à retrouver le domaine lui-même, à identifier son contrôleur de domaine, il est parvenu à établir une connexion LDAP avec ce dernier et a extrait 3604 objets. Sur le poste depuis lequel nous avons effectué notre collecte, nous avons à présent une archive ZIP :
Gardez bien cette archive ZIP et assurez-vous de ne pas la stocker n'importe où pour qu'elle ne tombe pas entre de mauvaises mains. Elle contient des informations sensibles sur les chemins d'attaque de votre Active Directory, voire des mots de passe.
La majorité des problèmes qui peuvent survenir sont principalement dus au DNS, étant donné que votre poste n'est pas dans le domaine, il peut arriver qu'il ne puisse pas nativement résoudre les noms DNS des machines du domaine. Commencez par confirmer que vous pouvez joindre le contrôleur de domaine au niveau réseau via son adresse IP, puis ses services (RPC, SMB, LDAP), et que vous avez le bon serveur DNS de paramétré (le contrôleur de domaine lui-même en général). Si les problèmes persistent, c'est probablement dû à un problème d'authentification.