Windows Benutzer SID abfragen
Für System Administratoren ist das abfragen von Informationen zur Umgebung und Konfiguration eine alltägliche Arbeit. Eine dieser Information ist die SID (Security Identifier), diese von Windows zur Identifikation von Benutzer und Gruppen verwendet wird. Benutzernamen in einem Netzwerk können doppelt vorhanden sein, damit es zu keinem Konflikt kommt, wird jedem Benutzer eine eindeutige SID zugewiesen.
Bei der zuwiesung der Benutzer Rechte, verwendet Windows die dafür definierte SID. Eine SID ist ungefähr so aufgebaut wie ein GUID (Globally Unique Identifier), das jedes Objekt bei Windows besitzt. SIDs erhalten aber ausschließlich sicherheitsrelevate Objekte, da die SID zur Echtheitsbestätigung verwendet wird.
Durch diese SID wird der Benutzer im ganzen Netzwerk identifiziert. Auch wenn der Name des Benutzer geändert wird, bleibt die SID bestehen, wird der Benutzer im Netzwerk gelöscht, wird seine SID aufgehoben.
Aufbau meiner SID
S-1-5-21–4147432549-3588766049-1627529166-1001
Die SID (Security Identifier) Token haben folgende Bedeutungen:
S | Es handelt sich um eine SID |
1 | Revisionsnummer |
5 | Identifier Authority |
18 | Systemprofile |
19 | Localservice |
20 | NetworkService |
21 | Benutzerprofile |
4147432549-3588766049-1627529166 | Domain ID, Computer ID |
1001 | Benutzer ID (RID) |
Tabelle mit SID der Systemkonten
SID Abfragen
Möchte man nun die SID aller Benutzerkonten abfragen, geht das mit folgendem Befehl in einem Command Prompt (cmd).
1 2 |
wmic useraccount get sid,name |
Es werden alle SIDs und Benutzernamen ausgegeben.
1 2 3 4 5 6 7 8 9 10 11 |
C:\>wmic useraccount get sid,name Name SID Administrator S-1-5-21-4147432549-3588766049-1627529166-500 DefaultAccount S-1-5-21-4147432549-3588766049-1627529166-503 john S-1-5-21-4147432549-3588766049-1627529166-1001 Gast S-1-5-21-4147432549-3588766049-1627529166-501 |
Hier die SIDs der lokalen Konten. Bei einer abfrage in einer Netzwerk Domäne können es einige mehr sein.
Computer- und Domänen-SIDs bestehen aus einer Basis-SID und einer relativen ID (RID), die an die Basis-SID angehängt wird. Wenn der Computer einer Domäne angehört, kommt eine andere SID ins Spiel. Der Computer verfügt weiterhin über eine eigene Computer-SID und eigene lokale Konten und Gruppen, ist jedoch auch Mitglied einer Domäne und verfügt daher über eine SID, die das Computerkonto in dieser Domäne darstellt. Die SID eines Computerkonto besteht aus der SID des Administratorenkonto, abzüglich der RID, die letzten 3 bit oder 4 bit (500) entfallen.
Soll gezielt die SID eines Benutzers abgefragt werden, so zum Beispiel seine eigene SID, kann dies mit folgendem Command abgerfagt werden.
1 2 |
wmic useraccount where name='%username%' get name,sid |
Möchte man die SID eines anderen Benutzers wissen, kann anstelle von %username% ein Benutzer angegeben werden, zB, john.
Mit folgendem Befehl lässt sich die SID des mit dem gerade angemeldeten Benutzer in einer AD-Domäne feststellen.
1 2 |
wmic useraccount where (name='%username%' and domain='%userdomain%') get domain,name,sid |
In umgekehrter folge geht es auch, es soll der Benutzername einer SID abgefragt werden.
1 2 |
wmic useraccount where sid='S-1-5-21-4147432549-3588766049-1627529166-1001' get name |
In der PowerShell sieht die abfrage wie folgt aus.
1 2 |
[wmi] "win32_userAccount.Domain='$env:UserDomain',Name='$env:UserName'" |
Es wird der Benutzername und die SID des in der Domäne company angemeldeten Benutzers ausgegeben.
1 2 3 4 5 6 7 8 9 |
PS C:\> [wmi] "win32_userAccount.Domain='$env:UserDomain',Name='$env:UserName'" AccountType : 512 Caption : company\john Domain : company SID : S-1-5-21-4147432549-3588766049-1627529166-1001 FullName : john smith Name : john |
Hiermit kann beispielsweise mit der SID der ProfileImagePath zum Benutzerprofil in der Registry gefunden werden, um Reparaturen oder Anpassungen vornehmen zu können. Auch wird die SID als ObjectID in SQL-Tabellen verwendet, um Benutzer aus Active Directory in einer Anwendung identifizieren und authorisieren zu können, so zum Beispiel bei Dynamics AX.