← retour aux outils back to tools

# ridenum

Outil de cyclage de RID (Relative Identifier) pour l'énumération d'utilisateurs Windows. Itère sur les RID via des sessions null SMB ou des connexions authentifiées pour énumérer tous les comptes utilisateurs d'un domaine ou d'une base SAM locale. RID (Relative Identifier) cycling tool for Windows user enumeration. Iterates through RIDs over null sessions or authenticated SMB to enumerate all user accounts in a domain or local SAM database.

↗ https://github.com/trustedsec/ridenum

## Overview

ridenum cycles through Windows RIDs (Relative Identifiers) using SMB null sessions or authenticated connections to enumerate user accounts. Every Windows user has a SID ending in a RID — by iterating through RIDs, you can discover all accounts even when SAMR enumeration is restricted.

## Basic Usage

Basic RID cycling (null session)

    ridenum.py 10.10.10.1 500 50000

With authentication

    ridenum.py 10.10.10.1 500 50000 username password

Default range (500-50000)

    ridenum.py 10.10.10.1 500 50000

Save output

    ridenum.py 10.10.10.1 500 50000 > users.txt

## RID Ranges

    # Well-known RIDs:
    # 500 = Administrator
    # 501 = Guest
    # 502 = KRBTGT (domain)
    # 512 = Domain Admins (group)
    # 513 = Domain Users (group)
    # 514 = Domain Guests (group)

    # User accounts start at 1000 (typically)
    # Scan range 500-10000 for most environments

For large domains, scan up to 100000

    ridenum.py 10.10.10.1 500 100000

## Authentication Modes

Null session (may be restricted on modern Windows)

    ridenum.py 10.10.10.1 500 50000

Authenticated with username/password

    ridenum.py 10.10.10.1 500 50000 "DOMAIN\user" password

Local account

    ridenum.py 10.10.10.1 500 50000 user password

## Alternative Methods

Using rpcclient directly

    rpcclient -U "" -N 10.10.10.1

→ > enumdomusers (if SAMR enumeration allowed) > queryuser RID (query specific RID)

    # Automated RID cycling with rpcclient
    for i in $(seq 500 1100); do
      rpcclient -U "" -N 10.10.10.1 -c "queryuser $(printf '%x' $i)" 2>/dev/null | grep "User Name"
    done

    # Using impacket-lookupsid
    impacket-lookupsid guest@10.10.10.1
    impacket-lookupsid domain/user:password@10.10.10.1

## Tips

- RID cycling works when standard SAMR enumeration is blocked
- impacket-lookupsid is the preferred modern alternative — more reliable
- Domain user RIDs are consistent domain-wide; local accounts only on that machine
- Found usernames feed into Kerberoasting, AS-REP roasting, and spray attacks
- `impacket-lookupsid guest@target` works on older Windows with null sessions

Help / Man page

    ridenum.py target start_rid end_rid [username] [password]

    target      IP address of Windows host
    start_rid   Starting RID (usually 500)
    end_rid     Ending RID (500-50000 covers most)
    username    (optional) Authentication username
    password    (optional) Authentication password

    Output: Lists all discovered usernames with their RIDs

## Vue d’ensemble

ridenum cycle à travers les RID (Relative Identifiers) Windows en utilisant des sessions null SMB ou des connexions authentifiées pour énumérer les comptes utilisateurs. Chaque utilisateur Windows possède un SID se terminant par un RID : en itérant sur les RID, il est possible de découvrir tous les comptes même quand l’énumération SAMR est restreinte.

## Utilisation basique

    # Cyclage de RID basique (session null)
    ridenum.py 10.10.10.1 500 50000

    # Avec authentification
    ridenum.py 10.10.10.1 500 50000 username password

    # Plage par défaut (500-50000)
    ridenum.py 10.10.10.1 500 50000

    # Sauvegarder la sortie
    ridenum.py 10.10.10.1 500 50000 > users.txt

## Plages de RID

    # RID bien connus :
    # 500 = Administrateur
    # 501 = Invité
    # 502 = KRBTGT (domaine)
    # 512 = Domain Admins (groupe)
    # 513 = Domain Users (groupe)
    # 514 = Domain Guests (groupe)

    # Les comptes utilisateurs commencent typiquement à 1000
    # Scanner la plage 500-10000 pour la plupart des environnements

Pour les grands domaines, scanner jusqu’à 100000

    ridenum.py 10.10.10.1 500 100000

## Modes d’authentification

    # Session null (peut être restreinte sur les Windows modernes)
    ridenum.py 10.10.10.1 500 50000

    # Authentifié avec utilisateur/mot de passe
    ridenum.py 10.10.10.1 500 50000 "DOMAIN\user" password

    # Compte local
    ridenum.py 10.10.10.1 500 50000 user password

## Méthodes alternatives

Utiliser rpcclient directement

    rpcclient -U "" -N 10.10.10.1

→ > enumdomusers (si l’énumération SAMR est autorisée) > queryuser RID (interroger un RID spécifique)

    # Cyclage de RID automatisé avec rpcclient
    for i in $(seq 500 1100); do
      rpcclient -U "" -N 10.10.10.1 -c "queryuser $(printf '%x' $i)" 2>/dev/null | grep "User Name"
    done

    # Avec impacket-lookupsid
    impacket-lookupsid guest@10.10.10.1
    impacket-lookupsid domain/user:password@10.10.10.1

## Conseils

- Le cyclage de RID fonctionne quand l’énumération SAMR standard est bloquée
- impacket-lookupsid est l’alternative moderne à privilégier : plus fiable
- Les RID d’utilisateurs de domaine sont cohérents sur tout le domaine ; les comptes locaux uniquement sur cette machine
- Les noms d’utilisateurs trouvés alimentent le Kerberoasting, l’AS-REP roasting et les attaques par spray
- `impacket-lookupsid guest@target` fonctionne sur des Windows plus anciens avec sessions null

Aide / Page de manuel

    ridenum.py target start_rid end_rid [username] [password]

    target      IP address of Windows host
    start_rid   Starting RID (usually 500)
    end_rid     Ending RID (500-50000 covers most)
    username    (optional) Authentication username
    password    (optional) Authentication password

    Output: Lists all discovered usernames with their RIDs