Kerbrute is a tool written in Go for enumerating Active Directory users and performing password spraying by abusing the Kerberos protocol. Instead of authenticating against SMB or LDAP, it sends AS-REQ requests to the Domain Controller: if a user exists but the password is wrong, the KDC responds differently than when the user does not exist, which lets you tell valid accounts apart without generating a conventional failed logon.
The key nuance is that enumeration with userenum is pre-authentication: it does not count as a failed login attempt, so it neither increments the lockout counter nor typically generates event 4625. Spraying, on the other hand, DOES consume attempts: that is why it matters to know the Account Lockout Policy and to use --safe and --delay to avoid locking out accounts and giving away your presence.
userenum does not lock accounts, spraying does. Enumerating users is pre-auth and does not increment the failure counter; the moment you test passwords with passwordspray or bruteuser you consume real attempts.
Before spraying, find out the domain's Account Lockout Policy and use --safe: it stops as soon as it detects the first lockout and avoids locking out half of Active Directory.
Kerbrute needs to reach the KDC on the Domain Controller's port 88/tcp. If DNS resolution fails, point to the DC manually with --dc; for tickets by FQDN use the full name, not the IP.
Watch the clock: Kerberos rejects requests skewed by more than 5 minutes (KRB_AP_ERR_SKEW). Sync your time with the DC's (for example with ntpdate) before you start.
Kerbrute does not crack hashes: the valid accounts it produces (-o valid.txt) are the raw material for chaining with Impacket's GetNPUsers.py to perform AS-REP Roasting.
Responsible use
These commands are for systems you own or have explicit written authorisation to test (labs, CTFs, contracted engagements). Using them against third-party infrastructure without permission is illegal in most countries.
Kerbrute es una herramienta escrita en Go para enumerar usuarios de Active Directory y realizar password spraying abusando del protocolo Kerberos. En lugar de autenticarse contra SMB o LDAP, envía peticiones AS-REQ al Domain Controller: si un usuario existe pero la contraseña es incorrecta, el KDC responde distinto que si el usuario no existe, lo que permite distinguir cuentas válidas sin generar un logon fallido convencional.
El matiz clave es que la enumeración con userenum es pre-autenticación: no cuenta como un intento de login fallido, así que no incrementa el contador de bloqueo ni suele generar el evento 4625. El spraying, en cambio, SÍ consume intentos: por eso importa conocer la Account Lockout Policy y usar --safe y --delay para no bloquear cuentas y delatar tu presencia.
userenum no bloquea cuentas, spraying sí. Enumerar usuarios es pre-auth y no incrementa el contador de fallos; en el momento en que pruebas contraseñas con passwordspray o bruteuser consumes intentos reales.
Antes de rociar, averigua la Account Lockout Policy del dominio y usa --safe: para en cuanto detecta el primer lockout y evita bloquear medio Active Directory.
Kerbrute necesita alcanzar el KDC por el puerto 88/tcp del Domain Controller. Si la resolución DNS falla, indica el DC a mano con --dc; para tickets por FQDN usa el nombre completo, no la IP.
Vigila el reloj: Kerberos rechaza peticiones con más de 5 minutos de desfase (KRB_AP_ERR_SKEW). Sincroniza tu hora con la del DC (por ejemplo con ntpdate) antes de empezar.
Kerbrute no crackea hashes: las cuentas válidas que saca (-o valid.txt) son la materia prima para encadenar con GetNPUsers.py de Impacket y hacer AS-REP Roasting.
Uso responsable
Estos comandos son para entornos propios o con autorización explícita por escrito (laboratorios, CTF, auditorías contratadas). Usarlos contra infraestructura ajena sin permiso es ilegal en la mayoría de países.