Windows Internals: SID e RID

In Windows ogni computer viene identificato univocamente tramite un codice: il SID, Security Identifier. Inoltre, ogni utente all’interno di un computer, viene identificato da un codice relativo al sistema, il RID (Relative ID).

Come possiamo visualizzaere SID e RID? Si può utilizzare PsGetsid, dalla raccolta PsTools, di cui ho già parlato in un altro articolo nel quale illusravo l’utilizzo di PsExec.

Una volta scaricato ed estratto dall’archivio, è possibile eseguire PSGetsid da linea di comando. Se lo si esegue senza parametri, il programma estrae il SID della macchina:

PsGetsid.exe
SID for \\PH:
S-1-5-21-1234567890-1234567890-123456789

E’ possibile anche specificare il nome di un utente; in questo caso, oltre al SID, verrà estratto anche il RID:

PsGetsid.exe angelor
SID for PH\angelor:
S-1-5-21-1234567890-1234567890-123456789-1002

E’ abbastanza evidente che SID e RID sono molto simili; l’unica differenza è che nel RID esistono alcune cifre aggiuntive alla fine.

Vediamo come si compongono questi codici, e cosa significano questi numeri:

  • La S identifica la stringa come codice SID
  • Il numero 1 indica la revisione. Al momento, in tutte le versioni di Windows non è mai cambiato.
  • 5 è il codice dell’authority che ha emesso il SID; fa riferimento alla SECURITY_NT_AUTHORITY.
  • 21-1234567890-1234567890-123456789 rappresenta un computer o un dominio
  • Infine il 1002 è il Relative ID (RID), codice che identifica un utente in un sistema.

Un’ultima osservazione: un RID uguale o superiore a 1000 indica che l’utente non è stato creato da Windows, bensì è stato generato manualmente da un utente, insomma non si tratta di un utente built-in. L’Administrator ha sempre RID 500.