Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Path: blob/master/documentation/modules/auxiliary/gather/kerberos_enumusers.md
Views: 11784
Vulnerable Application
The kerberos_enumusers module is used to enumerate valid Domain Users via Kerberos from a wholly unauthenticated perspective. It utilises the different responses returned by the service to identify users that exist within the target domain. It is also able to identify whether user accounts are enabled or disabled/locked out.
Verification Steps
When verifying the module in the listed examples, it is recommended to test the following accounts:
Valid account
Invalid account
Locked/Disabled account
Account with spaces
AS-REP Roastable accounts
Target
To use kerberos_enumusers, make sure you are able to connect to the Kerberos service on a Domain Controller.
Scenarios
The following demonstrates basic usage, using a custom wordlist, targeting a single Domain Controller to identify valid domain user accounts.
Create a new ./users.txt
file, then run the module:
ASREPRoasting
Accounts that have Do not require Kerberos preauthentication
enabled, will receive an ASREP response with a ticket present. The technique of cracking this token offline is called ASREPRoasting.
Cracking ASREP response with John:
Cracking ASREP response with Hashcat:
You can see previously creds with:
Options
The kerberos_enumusers
module only requires the RHOST
, DOMAIN
and USER_FILE
options to run.
The DOMAIN option
This option is used to specify the target domain. If the domain name is incorrect an error is returned and domain user account enumeration will fail.
An example of setting DOMAIN:
The USER_FILE option
This option is used to specify the file containing a list of user names to query the Domain Controller to identify if they exist in the target domain or not. One per line.
An example of setting USER_FILE:
The Timeout option
This option is used to specify the TCP timeout i.e. the time to wait before a connection to the Domain Controller is established and data read.
An example of setting Timeout: