Skip to content
Enumerate usernames on a domain where you have no creds by using SMB Relay with low priv.
Branch: master
Clone or download
Latest commit fe83d79 Jan 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Initial commit Apr 14, 2018


Quick and easy way to get domain usernames while on an internal network.

Hit me up: @skorov8

How it works

RidRelay combines the NTLM Relay attack, common lsarpc based queries and RID cycling to get a list of domain usernames. It takes these steps:

  1. Spins up an SMB and HTTP servers and waits for an incoming connection
  2. The incoming credentials are relayed to a specified target, creating a connection with the context of the relayed user
  3. Queries are made down the SMB connection to the lsarpc pipe to get the list of domain usernames. This is done by cycling up to 50000 RIDs
  4. The password policy is extracted through the samr pipe

(For best results, use with Responder)


  • Python 2.7 (sorry but impacket doesn't play nice with 3 :( )
  • Impacket v0.9.17 or above


pipenv install --two
pipenv shell

# Optional: Run if installing impacket
git submodule update --init --recursive
cd submodules/impacket
pip install .
cd ../..


First, find a target host to relay to. The target must be a member of the domain and MUST have SMB Signin off. CrackMapExec can get this info for you very quick!

Start RidRelay pointing to the target:

python -t


Also output usernames to file

python -t -o path_to_output.txt

Highly Recommended: Start Responder to trick users to connecting to RidRelay

Shout out

Mad props go to:

  • Ronnie Flathers (@ropnop) - Original idea on low priv smb relaying


  • Add password policy enumeration DONE
  • Dynamic relaying based on where incoming creds have admin rights
  • Getting active sessions???
  • Connect with Bloodhound???
You can’t perform that action at this time.