CrackMapExec - Introducción, Instalación y Targets
¿Qué es CrackMapExec?
CrackMapExec (CME) es una herramienta diseñada para evaluar la seguridad de grandes redes compuestas por estaciones de trabajo y servidores Windows.
Características principales
CME utiliza la librería Impacket para trabajar con protocolos de red y realizar técnicas de post-explotación. Automatiza tareas comunes durante assessments internos y acumula credenciales encontradas en una base de datos para referencia futura.
Historia y versiones
- Versión 5.4 — Última versión disponible públicamente (HTB Academy)
- Versión 6+ — Creada por mpgn pero removida después
- NetExec — Fork comunitario que continúa el desarrollo (https://github.com/Pennyw0rth/NetExec)
CME está desarrollado por @byt3bl33d3r y @mpgn_x64. El repositorio privado de Porchetta Industries se sincroniza con el público cada 6 meses.
Instalación
Linux - Instalación con Poetry
Paso 1: Instalar Poetry
curl -sSL https://install.python-poetry.org | python3 -Paso 2: Instalar dependencias del sistema
sudo apt-get update
sudo apt-get install -y libssl-dev libkrb5-dev libffi-dev python-dev build-essentialPaso 3: Instalar Rust (requerido para soporte RDP)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh
# Seleccionar opción 1 (Proceed with installation)Paso 4: Cerrar terminal y abrir una nueva
Paso 5: Clonar e instalar CrackMapExec
git clone https://github.com/Porchetta-Industries/CrackMapExec
cd CrackMapExec
poetry installPaso 6: Ejecutar CrackMapExec
# Opción A: Con poetry run
poetry run crackmapexec --help
# Opción B: Activar Poetry shell (más cómodo)
poetry shell
crackmapexec --helpNota: El prompt mostrará (crackmapexec-py3.X) cuando estés en el Poetry shell. Para salir, usa exit.
Linux - Instalación con Docker
Paso 1: Instalar Docker
sudo apt install docker.ioPaso 2: Clonar y construir imagen
git clone https://github.com/Porchetta-Industries/CrackMapExec -q
cd CrackMapExec
sudo docker build -t crackmapexec .Paso 3: Ejecutar contenedor
sudo docker run -it --entrypoint=/bin/bash --name crackmapexec -v ~/.cme:/root/.cme crackmapexecPaso 4: Reiniciar contenedor después
sudo docker start crackmapexec
sudo docker exec -it crackmapexec bashLinux - Usar Binarios Precompilados
Ventaja: No requiere instalación, solo Python disponible.
Descargar desde CrackMapExec Releases. Disponibles para Python 3.8, 3.9, 3.10 en Windows, Linux y macOS.
Windows - Usar Binarios
Si no tienes Python instalado:
- Descargar Python embeddable desde python.org/downloads/windows
- Ejecutar CrackMapExec:
C:\htb> python.exe cme <opciones>Solucionar errores de path length en Windows:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /fUbicación de logs y base de datos
CrackMapExec guarda logs y base de datos en ~/.cme
Targets y Protocolos
Formatos de targets soportados
IP único:
crackmapexec smb 10.10.10.1Múltiples IPs:
crackmapexec smb 10.10.10.1 10.10.10.2 10.10.10.3Rango CIDR:
crackmapexec smb 10.10.10.1/24Hostname:
crackmapexec smb internal.localArchivo con targets:
crackmapexec smb targets.txtProtocolos soportados
| Protocolo | Puerto Defecto |
|---|---|
| SMB | 445 |
| WINRM | 5985/5986 |
| MSSQL | 1433 |
| LDAP | 389 |
| SSH | 22 |
| RDP | 3389 |
| FTP | 21 |
Ver opciones disponibles
Opciones generales:
crackmapexec --helpOpciones específicas de protocolo (ejemplo LDAP):
crackmapexec ldap --helpEstructura de comandos
Sintaxis general
crackmapexec [protocolo] [target] [opciones]Ejemplo: Password spray con WinRM
crackmapexec winrm 10.10.10.1 -u users.txt -p password.txt --no-bruteforce --continue-on-successCambiar protocolo (misma lógica aplica para todos)
crackmapexec smb 10.10.10.1 [opciones]
crackmapexec mssql 10.10.10.1 [opciones]
crackmapexec ldap 10.10.10.1 [opciones]
crackmapexec ssh 10.10.10.1 [opciones]
crackmapexec rdp 10.10.10.1 [opciones]
crackmapexec ftp 10.10.10.1 [opciones]Opciones comunes
Threads
-t THREADS # Número de threads concurrentes (default: 100)Timeout
--timeout TIMEOUT # Timeout en segundos (default: None)Jitter (delay aleatorio)
--jitter INTERVAL # Delay aleatorio entre conexionesVerbose
--verbose # Salida detalladaExportar resultados
--export /ruta/completa/archivo.txtNota: Requiere ruta completa. Ejemplo:
crackmapexec smb 10.10.10.1 [opciones] --export $(pwd)/export.txtMódulos
CrackMapExec soporta módulos específicos por protocolo. Cada módulo proporciona funcionalidades adicionales.
Ver módulos disponibles para un protocolo
crackmapexec ldap -LEjemplo de módulos LDAP:
MAQ— Recupera atributo MachineAccountQuotaadcs— Encuentra PKI Enrollment Servicesdaclread— Lee Discretionary Access Control Listsget-desc-users— Obtiene descripciones de usuarios (pueden contener contraseñas)laps— Recupera contraseñas LAPSldap-signing— Verifica si LDAP signing está requeridotrusted-for-delegation— Usuarios/computadoras con flag TRUSTED_FOR_DELEGATIONpassword-not-required— Usuarios con flag PASSWD_NOTREQDadmin-count— Objetos con adminCount=1users— Enumera usuarios habilitados del dominiogroups— Enumera grupos del dominio
Usar un módulo
crackmapexec [protocolo] [target] -M [module_name] -o [module_options]Contexto general
CME es el "Swiss Army Knife" para pentesting de redes Windows. Automatiza lo que normalmente requeriría múltiples herramientas:
- ¿Testear credenciales en 100 máquinas? CME lo hace en paralelo
- ¿Dumpar hashes de múltiples sistemas? CME con módulos lo automatiza
- ¿Encontrar máquinas donde un usuario es admin? CME enumera rápidamente
Ventajas:
- Soporta múltiples protocolos (no solo SMB)
- Funciona en Linux, Windows, macOS
- Soporte para SOCKS proxy y pivoting
- Base de datos centralizada de credenciales
- Salida intuitiva y fácil de parsear
- Módulos para enumeration y exploitation
Conclusión
CrackMapExec es la herramienta más importante para assessments internos de Windows porque automatiza y simplifica tareas que de otro modo requerirían scripts custom o múltiples herramientas. Una vez entiendes la sintaxis básica para un protocolo, aplica para todos.