• Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN
info@firstattribute.com
by FirstAttribute
Active Directory FAQActive Directory FAQ
  • Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN

Kerberos Token mit PowerShell und .Net auslesen

Sep 23, 2015 (Letztes Update) | Posted by Hannes Hayashi KnowHow, PowerShell |

 

Kerberos Token mit PowerShell und .Net auslesen

Das Active Directory bietet viele verschieden Authentifizierungsmöglichkeiten an, darunter sind die bekanntesten NTLM und Kerberos. In diesem Artikel möchte nur einen konkreten Anwendungsfall darstellen und eine schnelle Lösungsmöglichkeit anbieten.

Nach einer kurzen Einführung zu Kerberos und .Net-Klassen in PowerShell, stelle ich das Skript get-sids-from-token.ps1 vor

Inhaltsverzeichnis

  • 1 Einführung Kerberos-Token
  • 2 Kerberos-Token über Powershell-Skript auslesen
    • 2.1 [System.Security.Principal.WindowsIdentity]::GetCurrent()
    • 2.2 SIDs gegen Domäne auflösen
  • 3 Fertiges PS-Skript
 

Einführung Kerberos-Token

Wenn sich ein Anwender an seiner Workstation anmeldet und diese in ein Active Directory gejoint ist, so erhält der Anwender nach erfolgreicher Authentifizierung gegen einen Domain Controller ein sogenanntes “Kerberos-Token”. Dieses Token enthält unter anderem die SIDs (Security Identifiers) der Gruppen, in denen er oder sie Mitglied ist. Möchte der Anwender dann auf eine Ressource, beispielsweise auf ein zentrales Filesystem, zugreifen, so zeigt er sein Token vor. Ressourcen sind meist über sogenannte ACLs (Access Control Lists) geschützt. Diese beinhalten verschieden Regeln (ACEs – Access Control Entries). Diese definieren, welche SIDs mit welchen Rechten auf die Ressource zugreifen können. Der Anwender erhält Zugriff auf eine Ressource, wenn sein Kerberos-Token eine SID enthält, die Zugriff auf die Ressource gewährt. Wenn nicht, bleibt ihm der Zugriff verwehrt.

Wichtig: Ein Anwender erhält ein Kerberos-Token nur bei einem Login-Vorgang. Wenn nach dem Login Gruppenmitgliedschaften geändert werden, hat dies keinen Einfluss auf bereits ausgestellte Tokens. Erst bei einer Neuanmeldung erhält der Anwender ein aktuelles Token!

Für Debugging-Zwecke ist es oft hilfreich zu wissen, ob ein Anwender bestimmte Gruppenmitgliedschaften in seinem Token hat. Es gibt viele Möglichkeiten diese zu erhalten. Eine der bekanntesten ist klist.

Ich möchte aber heute auf eine andere, zwar nicht so bekannte aber dennoch elegante Möglichkeit eingehen: Powershell!
 

Kerberos-Token über Powershell-Skript auslesen

Damit wir per PowerShell das Kerberos-Token auslesen können, verwenden wir eine .Net-Klasse in einem Powershell-Skript.

Die Klasse ist [System.Security.Principal.WindowsIdentity] und ist hier dokumentiert.

Eine der Methoden der Klasse ist GetCurrent() (weitere Infos).

Die Methode gibt quasi den aktuellen User-Kontext als .Net-Objekt zurück.
Wie in einem meiner Artikel Net Code in PowerShell verwenden beschrieben, können wir diese Klasse auch problemlos in Powershell verwenden! Und zwar folgendermaßen:

 

[System.Security.Principal.WindowsIdentity]::GetCurrent()

Mittels [System.Security.Principal.WindowsIdentity]::GetCurrent() erhalten wir dann folgende Ausgabe:

Kerberos-token-Powershell

PS C:\Users\tuser1> $token = [System.Security.Principal.WindowsIdentity]::GetCurrent()
PS C:\Users\tuser1> $token

AuthenticationType : Kerberos
ImpersonationLevel : None
IsAuthenticated   : True
IsGuest           : False
IsSystem           : False
IsAnonymous       : False
Name               : SANCTUARY\tuser1
Owner             : S-1-5-21-2667348191-198858073-1110801464-1189
User               : S-1-5-21-2667348191-198858073-1110801464-1189
Groups             : {S-1-5-21-2667348191-198858073-1110801464-513, S-1-1-0, S-1-5-32-545, S-1-5-4…}
Token             : 3300

Der relevante Teil für uns ist “Groups”. Dieser enthält die SIDs des aktuellen Kerberos-Tokens:

Kerberos-PowerShell-Groups 

SIDs gegen Domäne auflösen

Damit wir die Liste besser lesen können, müssen wir die SIDs nun gegen die Domäne auflösen.

Die Objekte in unserer SID-Liste sind vom Typ System.Security.Principal.IdentityReference.SecurityIdentifier, welche vom BaseType System.Security.Principal.IdentityReference ist. Wir können also die Translate-Methode verwenden.

Als targetType verwendet wir “NTAccount”.

translate

PS C:\Users\tuser1> $groupSIDS = $token.Groups
PS C:\Users\tuser1> $groupSIDs[10]

                           BinaryLength AccountDomainSid                       Value
                           ———— —————-                       —–
                                     28 S-1-5-21-2667348191-198858073-111080… S-1-5-21-2667348191-198858073-111080…

PS C:\Users\tuser1> $groupSIDs[10].Translate([System.Security.Principal.NTAccount])

Value
—–
SANCTUARY\F-A2-SALES-Abteilung1-RW

 

Fertiges PS-Skript

Das fertige Skript zum Auslesen der aktuell im Kerberos-Ticket befindlichen Gruppen sieht folgendermaßen aus:

Download: get-sids-from-token.ps1

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() # Get current user context
$groupSIDs = $token.Groups # Get SIDs in current Kerberos token
foreach($sid in $groupSIDs) { # for each of those SIDs…
            try { # try to..
                        Write-Host (($sid).Translate([System.Security.Principal.NTAccount])) # translate the SID to an account name
            }
            catch { # if we can’t translate it…
                        Write-Warning („Could not translate “ + $sid.Value + „. Reason: “ + $_.Exception.Message) # Output a warning and the corresponding exception
            }
}

 


 

FirstAttribute AG

Dieser Artikel entstand bei Projekten der FirstAttribute AG
AD Consulting
| AD Migration

Sie planen Veränderungen an Ihrem AD?
Nehmen Sie Kontakt zu uns auf, wir hören Ihnen gern zu.


 

Artikel weiterempfehlen:
  • teilen
  • tweeten
  • sharen
  • xingen
  • mailen
Artikel erstellt am: 23.09.2015
Tags: .NetKerberosPowerShellToken
1

You also might be interested in

LDAP-Powershell-Suche

LDAP Suche mit Powershell – Find-LdapObject

Aug 21, 2014

für einen täglichen Report suchte ich nach einer Möglichkeit einer[...]

Powershell Mail-an-Mitglieder-einer-AD-Gruppe

E-Mail an Mitglieder einer AD Gruppe senden

Jun 28, 2016

Manchmal ist es notwendig alle Nutzer einer Anwendung kurz per[...]

Azure Active Directory PowerShell Version 2

Azure Active Directory PowerShell Version 2

Aug 29, 2017

Microsoft hat die PowerShell cmdlets zur Verwaltung des AzureAD aktualisiert.[...]

Leave a Reply

<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>
Cancel Reply

FirstWare IDM-Portal im Test: IT-Administrator 08-2022

 

ADFAQ-FirstAttribute

Wer schreibt ?

Team der FirstAttribute AG

Consultants und Entwickler der FirstAttribute arbeiten seit mehr als 20 Jahren in IAM- und Cloud-Transition-Projekten.
Zusammen verfügen Sie über einen wertvollen Erfahrungsschatz im Bereich Active Directory und Azure AD und teilen diesen auf Active Directory FAQ.

Neueste Artikel

  • 8 Tipps für mehr Sicherheit in Active Directory und Backups von AD
  • Azure AD Custom Security Attributes ermöglichen flexible Berechtigungsstrukturen
  • Dateiberechtigungen in MS Teams und SharePoint Online verwalten – So funktioniert es
  • AD-Gruppen in Microsoft Teams verwenden – Dynamische Gruppen in der Praxis
  • Verbindung zwischen Microsoft 365 und SharePoint Online zu Azure AD

Unsere IAM-Lösungen

Ihre IAM-Lösung: FirstWare IDM-Portal

 

my-IAM für Cloud Identity Management in Microsoft Teams

Kontakt aufnehmen

Sie haben eine Frage oder Anmerkung? Schicken Sie uns schnell eine Nachricht.

Nachricht senden
Jetzt AD Tasks vereinfachen und delegieren: FirstWare IDM-Portal

Folgen Sie uns

Kontakt

  • FirstAttribute AG
  • Am Büchele 18, 86928 Hofstetten, Germany
  • +49 89 215 442 400
  • https://www.firstattribute.com

Schlagwörter

.Net ACL Active Directory AD LDS AD Objekt Azure AD Berechtigung Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange-Ordner Exchange-Postfach Exchange Migration Federation FirstWare Get-Mailbox Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal LDAP m365 Microsoft Azure Migration New-ADUser Novell NTFS Office 365 PowerShell QMM QMM AD QMM Exchange Quest Migration Manager Schema Set-ADUser SID SID History Update Windows 10 Windows Server 2012 R2

Neueste Kommentare

  • activedirectoryfaq.com sharepoint login - infoslist bei Windows 365 und Azure AD verstehen in Theorie und Praxis
  • Domäne Letzte Anmeldung - ObenGesichert.com bei LastLogon vs. LastLogonTimestamp
  • Teams Code Zur Anmeldung - ObenGesichert.com bei Authentifizierung für MS Teams in hybriden Netzwerken
Login
Impressum
Datenschutzerklärung

© 2023 · Active-Directory-FAQ by firstattribute.com

Prev Next