Pentester un contrôleur de domaine (Active Directory) avec crackmapexec.
Rappel : L’article qui va suivre contient des techniques et méthodes qui peuvent s’avérer être illégales et dangereuses si elles sont utilisées à mauvais escient. Ce tutoriel a été construit dans un but pédagogique et doit en aucun cas être utilisé contre un particulier, une entreprise, une organisation à but non lucratif ou une administration publique de quelconque pays. le-guide-du-sysops.fr se dédouane de toute responsabilité en cas de problèmes ou d’incidents de quelque nature que ce soit après le visionnage de cet article.
Bonjour à tous ! Aujourd’hui nous partons à la découverte de l’utilitaire crackmapexec, qui va nous permettre de pouvoir pentester un domaine active active directory, à travers le protocole SMB si celui-ci est actif sur la machine cible en question. Toutes les commandes ci-dessous seront exécutées via l’utilisateur root.
Laboratoire virtuel :
- Adresse réseau général : 192.168.145.0/24
- Windows Server 2019 Datacenter : 192.168.145.128/24 (Rôle ADDS/DNS)
- Kalilinux 2020.2 192.168.145.152/24
Sur Kali linux vérifiez que vous avez le logiciel crackmapexec, sinon installez-le.
apt install crackmapexec
Dans un premier temps, nous allons cartographier le réseau en exécutant un SCAN de port (445 en l’occurrence…) sur l’ensemble des machines connectées au réseau :
crackmapexec smb 192.168.145.0/24
Nous obtenons deux résultats. Le premier représente ma machine cliente hôte Windows 10 (192.168.145.1/24). Le deuxième représente une machine Windows Server (192.168.145.128/24), qui a comme nom NetBIOS DC (qui peut faire penser à : « Domain Controller ») et comme domaine coud.local.
Contrairement à ce qui est indiqué, cette machine n’est pas un ordinateur Windows 10 mais un serveur Windows Server 2019 DataCenter. En effet, je pense que logiciel n’a pas été encore mis à jour, car il détecte bien les anciennes versions de WS comme Windows server 2016. Quoi qu’il en soit, une machine identifiée comme étant un ordinateur Windows 10, mais portant un nom faisant référence à un serveur doit vous alerter…
Ndlr : Les faux positifs de ce genre peuvent arriver souvent, lors de prises d’empreintes avec des logiciels comme NMAP etc. J’en appelle à votre expérience et à votre esprit de déduction, pour déterminer si oui ou non une machine est bien ce qu’elle prétend être.
De ce fait, nous allons pouvoir tenter une attaque brute force pour essayer de trouver des couples user/password, peu importe si ce futur compte est administrateur ou pas (dans un premier temps).
Ndlr : Ce qui suit est un scénario optimiste, bien sûr je connaissais en amont le mot de passe du compte user. (Le mot de passe et le compte étaient présents dans le fichier top-usernames-shortlist.txt et xato-net-10-million-passwords-10.txt que j’avais édités avant ce tutoriel, pour conduire ce test).
Si-vous souhaitez télécharger un ensemble de dicos login/mdp facilement, installez le paquet seclists sur votre machine. Vous aurez alors la même arborescence que moi pour la commande suivante !
apt install seclists
# commande générique
crackmapexec smb 192.168.145.128 -u /lien/vers/votre/dico-users -p /lien/vers/votre/dico-de-mdp
Commençons l’attaque brute force dès à présent.
# commande si vous avez seclists
crackmapexec smb 192.168.145.128 -u /usr/share/seclists/Usernames/top-usernames-shortlist.txt -p /usr/share/seclists/Passwords/xato-net-10-million-passwords-10.txt
Après quelques secondes, je trouve le mot de passe de l’utilisateur user. Celui-ci est un simple utilisateur qui ne dispose d’aucun droit particulier sur le domaine coud.local, mais vous allez voir ce que nous pouvons faire simplement avec cet utilisateur… (Je précise de nouveau que ce n’est pas de la magie, mais que de base j’avais inscrit dans le dico de mots de passe, celui rattaché au compte « user » : aze890!. En pratique, vous risquez de mettre beaucoup plus de temps, voir ne jamais trouver de couple login/password).
Lister tous les utilisateurs du domaine coud.local
crackmapexec smb 192.168.145.128 -u 'user' -p 'aze890!' --users
Lister tous les groupe du domaine coud.local
crackmapexec smb 192.168.145.128 -u 'user' -p 'aze890!' --group
Lister tous les partages réseaux SMB, même ceux ou on a zero droit.
crackmapexec smb 192.168.145.128 -u 'user' -p 'aze890!' --shares
Obtenir la politique des mots de passe du domaine
crackmapexec smb 192.168.145.128 -u 'user' -p 'aze890!' --pass-pol
Vous avez surement dû trouver le(s) compte(s) administrateur(s) du domaine, (dans mon cas c’est administrato[email protected], vu que ma machine est en anglais). Généralement certaines organisations peuvent préfixer certains comptes avec adm_<user>@domaine.local, a_<user>@domaine.local etc. Soyez attentif à la nomenclature des comptes et des groupes ! Le compte administrateur par défaut étant très rarement renommé (et pourtant… cela est une très bonne pratique de sécurité)
Voilà, nous en avons fini avec ce compte « standard » user, maintenant pour obtenir plus d’informations, nous devons essayer de brute forcer le mot de passe d’un administrateur du domaine par exemple… Bonne chance 🙂
Si vous souhaitez approfondir le sujet, je vous donne le lien de l’article qui m’a inspiré pour la rédaction de celui-ci. Vous verrez notamment un ensemble d’autres commandes, pour continuer votre pentest une fois que vous aurez réussi a obtenir l’id + mdp d’un compte administrateur : https://www.hackingarticles.in/lateral-moment-on-active-directory-crackmapexec/
++
Geoffrey pour Le guide du sysops
En savoir plus sur Le Guide Du SecOps
Subscribe to get the latest posts sent to your email.