RPC (Port 135, 111) Enumerate Windows and Linux RPC (Remote Procedure Call) services to discover SMB shares, users, and system information. RPC enables inter-process communication and is heavily used in Windows domains for SMB, Active Directory, and administrative tasks.
Quick Reference Windows RPC (Port 135) rpcclient -U "" -N 10.10.10.10 rpcclient -U 'username%password' 10.10.10.10
Linux RPC (Port 111)
Windows RPC Enumeration rpcclient (Null Session) rpcclient -U "" -N 10.10.10.10 rpcclient -U "" 10.10.10.10 rpcclient -U 'username%password' 10.10.10.10 rpcclient -U 'DOMAIN\username%password' 10.10.10.10
rpcclient Commands srvinfo enumdomains querydominfo
Share Enumeration netshareenumall netsharegetinfo <share_name>
User Enumeration enumdomusers queryuser <RID> queryuser 0x457 queryusergroups <RID>
Group Enumeration enumdomgroups querygroup <RID> querygroupmem <RID>
Alias Enumeration enumalsgroups builtin queryaliasmem builtin <RID>
RID Cycling / Brute Force Manual RID Cycling for i in $(seq 500 1100); do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i) " | grep "User Name\|user_rid\|group_rid" && echo "" done
CrackMapExec RID Brute crackmapexec smb 10.10.10.10 -u 'guest' -p '' --rid-brute crackmapexec smb 10.10.10.10 -u 'username' -p 'password' --rid-brute
NetExec RID Brute nxc smb 10.10.10.10 -u 'guest' -p '' --rid-brute
Understanding RIDs RID (Relative Identifier):
Unique identifier for objects in Windows
Represented in hexadecimal format
Combined with domain SID to create unique SID
Example:
Domain SID: S-1-5-21-3842939050-3880317879-2865463114
User RID: 0x457 (hex) = 1111 (decimal)
Full User SID: S-1-5-21-3842939050-3880317879-2865463114-1111
Common RIDs:
500 - Administrator
501 - Guest
512 - Domain Admins
513 - Domain Users
514 - Domain Guests
515 - Domain Computers
516 - Domain Controllers
samrdump.py samrdump.py 10.10.10.10 samrdump.py DOMAIN/username:password@10.10.10.10
lookupsid.py lookupsid.py DOMAIN/username:password@10.10.10.10 lookupsid.py DOMAIN/username:password@10.10.10.10 20000
SMB Enumeration via RPC smbmap smbmap -H 10.10.10.10 smbmap -u username -p password -H 10.10.10.10 smbmap -u username -p password -H 10.10.10.10 -R 'Share Name' smbmap -u username -p password -H 10.10.10.10 --download 'Share\file.txt'
CrackMapExec crackmapexec smb 10.10.10.10 --shares -u '' -p '' crackmapexec smb 10.10.10.10 --shares -u 'username' -p 'password' crackmapexec smb 10.10.10.10 -u username -p password -M spider_plus --share 'Share Name' crackmapexec smb 10.10.10.10 -u username -p password --users crackmapexec smb 10.10.10.10 -u username -p password --groups crackmapexec smb 10.10.10.10 -u username -p password --loggedon-users
enum4linux Basic Enumeration enum4linux -a 10.10.10.10 enum4linux -U 10.10.10.10 enum4linux -S 10.10.10.10 enum4linux -G 10.10.10.10 enum4linux -P 10.10.10.10
enum4linux-ng ./enum4linux-ng.py 10.10.10.10 -A -C ./enum4linux-ng.py 10.10.10.10 -u username -p password -A
Linux RPC (Port 111) rpcinfo rpcinfo -p 10.10.10.10 rpcinfo -s 10.10.10.10 rpcinfo -t 10.10.10.10 <program> <version> rpcinfo -u 10.10.10.10 <program> <version>
Nmap nmap -p 111 --script rpcinfo 10.10.10.10 nmap -p 111 --script nfs-* 10.10.10.10
Common Workflow Windows RPC Assessment rpcclient -U "" -N 10.10.10.10 enumdomusers netshareenumall querydominfo for i in $(seq 500 1100); do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i) " | grep "User Name" && echo "" done crackmapexec smb 10.10.10.10 -u '' -p '' --rid-brute --shares --users
Linux RPC Assessment rpcinfo -p 10.10.10.10 showmount -e 10.10.10.10 nmap -p 111 --script rpcinfo,nfs-* 10.10.10.10
SMB Enumeration use auxiliary/scanner/smb/smb_version set RHOSTS 10.10.10.10run use auxiliary/scanner/smb/smb_enumusers set RHOSTS 10.10.10.10run use auxiliary/scanner/smb/smb_enumshares set RHOSTS 10.10.10.10run
Notes Windows RPC (Port 135):
Used for DCOM, WMI, and various Windows services
Enables SMB enumeration via rpcclient
Null sessions may be allowed (misconfiguration)
RID cycling reveals hidden users
Essential for Active Directory enumeration
Linux RPC (Port 111):
Portmapper service
Maps RPC program numbers to network ports
Used by NFS, NIS, and other services
Less commonly exploited than Windows RPC
Null Sessions:
Anonymous connection to IPC$ share
Allows enumeration without credentials
Disabled by default on modern Windows
Common misconfiguration on older systems
RID Cycling:
Brute force user enumeration via RIDs
Reveals users not shown by enumdomusers
Can discover service accounts and hidden users
Works even with restricted enumeration
Security Considerations:
RPC exposes extensive system information
Null sessions allow anonymous enumeration
User and group information disclosed
Share permissions can be enumerated
Password policies revealed
Common Misconfigurations:
Null sessions enabled
Anonymous RPC access allowed
Overly permissive share permissions
Weak password policies
Service accounts with descriptive names
Attack Surface:
User enumeration
Share enumeration
Password policy discovery
Group membership disclosure
Service account identification
Domain trust relationships
Tools Comparison:
rpcclient - Interactive RPC client, manual enumeration
enum4linux - Automated enumeration wrapper
CrackMapExec - Modern, feature-rich SMB/RPC tool
smbmap - Share enumeration and file operations
Impacket - Python-based RPC tools