Tags: Active Directory, Verschlüsselung, PowerShell
Nachdem DES schon lange als unsicher gilt, beschleunigt CVE-2022-37966 nun den Abschied von RC4 für die Verschlüsselung von Kerberos-Tickets. Wenn man Konten keinen Algorithmus zugewiesen hat, dann kommt künftig AES zum Einsatz. Welche Accounts durch eine schwache Verschlüsselung gefährdet sind, kann man mit PowerShell ermitteln.
Dem automatischen Umstieg auf eine stärkere Verschlüsselung kann in manchen Umgebungen eine ungünstige Konfiguration entgegenstehen. Dies ist etwa der Fall, wenn bestimmten Konten spezifische Algorithmen zugewiesen wurden.
Prüfen sollte man zudem, ob per Gruppenrichtlinie bestimmte Verfahren für die Verschlüsselung zugelassen wurden. Zuständig dafür ist die Einstellung Netzwerksicherheit: Für Kerberos zulässige Verschlüsselungstypen konfigurieren.
Sie findet sich unter Computerkonfiguration => Richtlinien => Windows-Einstellungen => Sicherheitseinstellungen => Lokale Richtlinien => Sicherheitsoptionen.
Wurde hier unter anderem DES aktiviert, das Windows standardmäßig nicht mehr unterstützt, dann sollte man nachsehen, ob Accounts im Attribut UserAccountControl das Flag Nur Kerberos-DES-Verschlüsselungstypen für dieses Konto gesetzt haben. Sie wären dann auf den veralteten und unsicheren Algorithmus beschränkt. Daher sollte man dieses Flag entfernen.
Für einzelne Benutzer kann man das in Active Directory-Benutzer und -Computer unter der Registerkarte Konto tun.
Wenn man alle Konten finden möchte, die auf diese Weise konfiguriert sind, dann erledigt dies folgender Aufruf von PowerShell:
Get-ADUser -Filter 'UserAccountControl -band 0x200000'
Das Bit-weise und von UserAccountControl mit 0x200000 zeigt, ob das Flag für die DES-Verschlüsselung gesetzt ist. Wenn man dieses entfernen möchte, dann kann man dies so tun:
Get-ADUser -Filter 'UserAccountControl -band 0x200000' |
foreach {Set-ADAccountControl -Identity $_ -UseDESKeyOnly $false}
Auf RC4 prüfen
Das Active Directory ist bei der Speicherung der bevorzugten Algorithmen für die Kerberos-Verschlüsselung nicht konsistent. Während sich die Information für den exklusiven Gebrauch von DES im Attribut UserAccountControl befindet, legt es sonst die Konfiguration unter msDS-SupportedEncryptionTypes ab.
Auch dieses Attribut von Typ unsigned long fungiert als Bitmask, so dass man den Status der einzelnen Flags prüfen muss, um zu sehen, welche Algorithmen zugelassen sind. Im Fall von RC4 handelt es sich um das dritte Bit. Entsprechend sieht eine Abfrage so aus:
Get-ADUser -Filter 'msDS-SupportedEncryptionTypes -band 0x4' `
-Properties msDS-SupportedEncryptionTypes |
Select name, msDS-SupportedEncryptionTypes
RC4 aus dem Attribut entfernen
Um RC4 bei diesen Konten zu entfernen, kann man so vorgehen:
Durch die Subtraktion von 4 wird das dritte Bit auf null gesetzt, alle Werte für die anderen Algorithmen bleiben jedoch erhalten.
Wenn man das Attribut hingegen komplett neu schreiben möchte, dann kann man dafür den Parameter KerberosEncryptionType verwenden:
Im obigen Beispiel würde man allen Konten, die bisher RC4 als zulässigen Algorithmus konfiguriert haben, die zwei AES-Algorithmen zuweisen. Verwendet man "none" als Wert für den Parameter, dann wird das Attribut auf 0x0 gesetzt und das Konto nutzt somit das Standardverfahren für die Verschlüsselung.
Verschlüsselungstyp für alle User dokumentieren
Wenn man den Status des AD-Attributs für die Kerberos-Verschlüsselung dokumentieren möchte, dann kann dies mit Hilfe der Tabelle in diesem Blog-Beitrag tun. Sie enthält nicht nur die Werte für die einzelnen Algorithmen, sondern auch für sämtliche Kombinationen davon.
Das folgende Script erzeugt für alle Benutzerkonten in der OU Finance eine CSV-Ausgabe, die man bei Bedarf in eine Datei schreiben könnte:
Der try/catch-Abschnitt fängt Fehler ab, die dadurch entstehen, dass das Attribut keinen Wert enthält, wenn sich der Benutzer noch nie angemeldet hat.
Ein Wert von 0x0 entspricht laut Tabelle "Not defined - defaults to RC4_HMAC_MD5". Dies ändert sich jedoch mit KB5019081, so dass Microsoft künftig AES als Standard verwendet. Dies könnte man im Script entsprechend aktualisieren.
Zusammenfassung
Da Kerberos-Tickets häufig ein Ziel für Angriffe sind, um erhöhte Privilegien zu erhalten, sollte man sicherstellen, dass das Active Directory dafür eine starke Verschlüsselung einsetzt. DES und nun auch RC4 erfüllen diese Anforderung nicht.
Mit dem November-Update 2022 wechselt Microsoft automatisch zu AES, es sei denn, Konten wurde gezielt ein anderer Algorithmus zugewiesen. Daher ist es wichtig, AD-User darauf zu prüfen, ob sie einzig auf DES festgelegt oder ob sie explizit für RC4 konfiguriert wurden.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Split-brain DNS in Active Directory einrichten
- UserAccountControl: Sicherheitseinstellungen für AD-Konten prüfen und ändern
- Gruppen in Azure Active Directory mit PowerShell verwalten
- Wann haben Benutzer zuletzt ihr Passwort im Active Directory geändert?
- AD-Konten mit ChangePasswordAtLogon in PowerShell finden, Wechsel des Passworts erzwingen
Weitere Links
2 Kommentare
Hallo Wolfgang, ich weiß nicht, ob du es mitbekommen hast. Man darf das RC4 nicht entfernen. Es wird leider von Microsoft noch für einen anderen Zweck missbraucht. Kunden die dies zuvor schon umgesetzt haben, hatten ihre liebe Not mit den aktuellen CUs.
Hallo Karl, habe ich mitbekommen :-) Dieser Beitrag behandelt im Allgmeinen, wie man die konfigurierten Verschlüsselungstypen abfragt bzw. ändert. Ich gebe hier keine Empfehlung für bestimmte Algorithmen.