Skip to content

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

bash
curl -sSL https://install.python-poetry.org | python3 -

Paso 2: Instalar dependencias del sistema

bash
sudo apt-get update
sudo apt-get install -y libssl-dev libkrb5-dev libffi-dev python-dev build-essential

Paso 3: Instalar Rust (requerido para soporte RDP)

bash
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

bash
git clone https://github.com/Porchetta-Industries/CrackMapExec
cd CrackMapExec
poetry install

Paso 6: Ejecutar CrackMapExec

bash
# Opción A: Con poetry run
poetry run crackmapexec --help

# Opción B: Activar Poetry shell (más cómodo)
poetry shell
crackmapexec --help

Nota: 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

bash
sudo apt install docker.io

Paso 2: Clonar y construir imagen

bash
git clone https://github.com/Porchetta-Industries/CrackMapExec -q
cd CrackMapExec
sudo docker build -t crackmapexec .

Paso 3: Ejecutar contenedor

bash
sudo docker run -it --entrypoint=/bin/bash --name crackmapexec -v ~/.cme:/root/.cme crackmapexec

Paso 4: Reiniciar contenedor después

bash
sudo docker start crackmapexec
sudo docker exec -it crackmapexec bash

Linux - 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:

  1. Descargar Python embeddable desde python.org/downloads/windows
  2. Ejecutar CrackMapExec:
cmd
C:\htb> python.exe cme <opciones>

Solucionar errores de path length en Windows:

cmd
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f

Ubicació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:

bash
crackmapexec smb 10.10.10.1

Múltiples IPs:

bash
crackmapexec smb 10.10.10.1 10.10.10.2 10.10.10.3

Rango CIDR:

bash
crackmapexec smb 10.10.10.1/24

Hostname:

bash
crackmapexec smb internal.local

Archivo con targets:

bash
crackmapexec smb targets.txt

Protocolos soportados

ProtocoloPuerto Defecto
SMB445
WINRM5985/5986
MSSQL1433
LDAP389
SSH22
RDP3389
FTP21

Ver opciones disponibles

Opciones generales:

bash
crackmapexec --help

Opciones específicas de protocolo (ejemplo LDAP):

bash
crackmapexec ldap --help

Estructura de comandos

Sintaxis general

bash
crackmapexec [protocolo] [target] [opciones]

Ejemplo: Password spray con WinRM

bash
crackmapexec winrm 10.10.10.1 -u users.txt -p password.txt --no-bruteforce --continue-on-success

Cambiar protocolo (misma lógica aplica para todos)

bash
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

bash
-t THREADS          # Número de threads concurrentes (default: 100)

Timeout

bash
--timeout TIMEOUT   # Timeout en segundos (default: None)

Jitter (delay aleatorio)

bash
--jitter INTERVAL   # Delay aleatorio entre conexiones

Verbose

bash
--verbose           # Salida detallada

Exportar resultados

bash
--export /ruta/completa/archivo.txt

Nota: Requiere ruta completa. Ejemplo:

bash
crackmapexec smb 10.10.10.1 [opciones] --export $(pwd)/export.txt

Módulos

CrackMapExec soporta módulos específicos por protocolo. Cada módulo proporciona funcionalidades adicionales.

Ver módulos disponibles para un protocolo

bash
crackmapexec ldap -L

Ejemplo de módulos LDAP:

  • MAQ — Recupera atributo MachineAccountQuota
  • adcs — Encuentra PKI Enrollment Services
  • daclread — Lee Discretionary Access Control Lists
  • get-desc-users — Obtiene descripciones de usuarios (pueden contener contraseñas)
  • laps — Recupera contraseñas LAPS
  • ldap-signing — Verifica si LDAP signing está requerido
  • trusted-for-delegation — Usuarios/computadoras con flag TRUSTED_FOR_DELEGATION
  • password-not-required — Usuarios con flag PASSWD_NOTREQD
  • admin-count — Objetos con adminCount=1
  • users — Enumera usuarios habilitados del dominio
  • groups — Enumera grupos del dominio

Usar un módulo

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