Unauthenticated User Enumeration
Before any credentials exist, a valid username list enables AS-REP roasting against accounts with pre-authentication disabled, and password spraying once a common password is identified. Multiple protocols expose user lists without authentication: use whichever responds.
- Kerbrute: validate usernames via Kerberos AS-REQ error codes
- RID brute (impacket-lookupsid): enumerate accounts by iterating SID RIDs
- nxc anonymous SMB: list domain users via null session or guest account
- rpcclient null session: fallback for older or misconfigured DCs
Kerbrute: Kerberos username validation
Kerbrute sends an AS-REQ for each candidate username and distinguishes valid accounts from invalid ones by the KDC error code. Accounts with pre-authentication disabled return the AS-REP hash directly without a password.
[+] VALID USERNAME: jsmith@corp.local [+] VALID USERNAME: svc-backup@corp.local [!] svc-mssql@corp.local - Valid user, no pre-auth required
Accounts flagged no pre-auth required are immediately roastable: feed them to impacket-GetNPUsers without waiting for a full user list. See AS-REP Roasting.
RID brute: impacket-lookupsid
SIDs in AD follow a predictable pattern: domain SID plus an incremented RID. lookupsid iterates RIDs and resolves each to an account name. Works via null session or guest account on most default configurations.
500: CORP\Administrator (SidTypeUser) 501: CORP\Guest (SidTypeUser) 1103: CORP\jsmith (SidTypeUser) 1104: CORP\svc-backup (SidTypeUser) 1105: CORP\DC01$ (SidTypeComputer)
nxc: anonymous SMB user listing
nxc's --users flag enumerates domain users via null session or guest authentication. Output is cleaner than rpcclient for scripting.
SMB 10.10.10.10 445 DC01 jsmith Badpwdcount: 0 SMB 10.10.10.10 445 DC01 svc-backup Badpwdcount: 0
rpcclient: null session fallback
rpcclient null session enumeration is less reliable on modern DCs but still works in older or misconfigured environments.
user:[jsmith] rid:[0x44f] user:[svc-backup] rid:[0x450] user:[Administrator] rid:[0x1f4]
With a valid user list, check the password policy in Password Policy and Spray Surface before running any spray. Accounts identified by kerbrute as having pre-authentication disabled go directly to AS-REP Roasting.
References
-
Kerberos username enumeration via AS-REQ probing, no credentials required
-
lookupsid for RID brute-forcing domain users via null session
-
NetExec (nxc): GitHubREPO: NetExec (nxc): GitHub, github.com/Pennyw0rth/NetExec (opens in new tab)
anonymous SMB user enumeration with --users flag
-
Usernames/xato-net wordlist for kerbrute user enumeration