Windows Benutzer SID abfragen mit wmic useraccount get
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. Die Benutzer 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 Benutzer 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
Alle Benutzer SID abfragen
Möchte man nun die SID aller Benutzerkonten abfragen, geht das mit folgendem Befehl in einem Command Prompt Win+Rcmd
wmic useraccount get sid,name
Es werden alle SIDs und Benutzernamen ausgegeben.
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.
Spezifische Benutzer SID abfragen
Soll gezielt die SID eines Benutzers abgefragt werden, zum Beispiel seine eigene SID, kann dies mit folgendem Command abgerfagt werden.
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.
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.
wmic useraccount where sid='S-1-5-21-4147432549-3588766049-1627529166-1001' get name
Benutzer SID in der PowerShell abfragen
In der PowerShell sieht die Benutzer SID abfrage wie folgt aus.
[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.
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 Benutzer 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.
