Kerberos Encryption

Im Jahr 2023 unterstützt Windows sowohl RC4 als auch AES als Verschlüsselungsverfahren. Das Nov 2022 Update hat aber AES als neuen Default gesetzt. Auf dem Weg zur Abschaltung habe ich einige Wireshark Traces erstellt und wundersame Effekte beobachtet.

Encryption Codes

Wenn Sie Kerberos etwas kennen, dann meldet sich der Benutzer an, u mein Ticket Granting Ticket TGT) zu bekommen und in der Folge dann vom Ticket Granting Service (TGS) ein Serviceticket zu erhalten. da aber weder Client noch Server voneinander wissen, was sie können, sehen wir in Wireshark mehrere Kerberos-Pakete, mit denen Protokolle ausgehandelt werden. Zum Schutz der Pakete werden Informationen mit Verwahren wie AES, RC4, DES, 3DES verschlüsselt und mit MD5, SHA-1, HMAC, CRC32 Prüfsummen versehen. Bei so viel Optionen müssen sich die Partner auf etwas einigen.

Hinweis: Wenn ihre Netzwerkkarte ein TCP Checksum Offloading macht, kann es sein, dass Wireshark die empfangenen Pakete nicht dekodiert
Wenn Sie nur Kerberos-Pakete analysieren, dann ist ein Capture Filter wie "udp port 88 or tcp port 88" direkt auf dem Interface hilfreich

Ähnlich wie beim TLS Handshake gibt es auch bei Kerberos eine Aushandlung, indem der Client beim Request eine Liste der von ihm verstandenen Verschlüsselung/Prüfsummen-Verfahren mit sendet und der Empfänger sich eine kompatible und hoffentlich die sicherste Version aussucht. Entsprechend finden wir im ersten Kerberos-Paket in Klartext eine Liste der vom Absender nutzbaren Verfahren:

  • Windows 2016 Feb2023 SU

  • RedHat 6
     

  • Windows XP SP3!

Lassen Sie sich nicht verwirren: Manchmal wird "RC4"  auch als "ARCFOUR" ausgeschrieben.

Es gibt natürlich noch viel mehr Crypto-Verfahren und auch die Tabelle ist nur eine Momentaufnahme.

Nr Name Sicherheit Kerberos Verwendung mit Windows

18

aes256-cts-hmac-sha1-96

sicher

>=1.3

seit Windows Vista

17

aes128-cts-hmac-sha1-96

sicher

>=1.3

seit Windows Vista

16

des3-cbc-sha1

abgekündigt

>=1.1

nein

23

arcfour-hmac-md5

abgekündigt

>=1.3

seit Windows 2000

24

arcfour-hmac-md5-56

abgekündigt

>=1.3

seit Windows 2000

-135

arcfour-hmac-old-exp

 

>=1.3

seit Windows 2000

1

des-cbc-crc

schwach

<1.18

seit Windows 2000 bis Windows 2003

2

des-cbc-md4

schwach

<1.18

Nein

3

des-cbc-md5

schwach

<1.18

seit  Windows 2000 bis Windows 2003

 

arcfour-hmac-exp

schwach

>=1.3

seit Windows 2000

 

aes128-cts-hmac-sha256-128

sicher

>=1.15

nein

 

aes256-cts-hmac-sha384-192

sicher

>=1.15

nein

 

camellia128-cts-cmac

?

>=1.9

nein

 

camellia256-cts-cmac

?

>=1.9

nein

Sie sehen schon, dass es einige Verfahren gibt, die man definitiv nicht mehr einsetzen sollte. Insbesondere das DES-Verfahren ist so schwach, dass selbst Microsoft nur bis Windows 2003 genutzt hat und höhere Versionen es gar nicht mehr anbieten. Allerdings nutzt Windows im Jahr 2023 immer noch RC und AES, wobei durch das Nov 2022 Updates das Standardverfahren von RC4 auf AES umgestellt wurde.

Hier war Microsoft wieder schnell, denn ich habe selbst im Jahr 2023 noch Wireshark-Traces gesehen, bei denen DES einem Windows DC/KDC angeboten wurde.

Even before RFC 6649 was formally published, Microsoft disabled (by default) DES with the release of server 2008 R2 Windows 7.  If you were supporting Active Directory in 2009, you most likely did not even notice DES had been disabled by your newly upgraded domain controllers because Active Directory is designed to select the highest level of encryption that is supported by the client and target of a Kerberos ticket.   Support for AES ticket encryption was introduced with the release of Server 2008 / Windows 7 but it was not automatically enabled on domain accounts in order to ensure backward compatibility.
Quelle: https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/decrypting-the-selection-of-supported-kerberos-encryption-types/ba-p/1628797

Welche Verfahren von dem Client jeweils angeboten werden, kann ein Administrator natürlich konfigurieren. Bei UNIX ist dies in der Datei KRB5.CONF/KDC.CONF hinterlegt während bei Windows eine Gruppenrichtlinie bzw. ein Registrierungsschlüssel dies steuert:

Die Richtlinie ist per Default nicht aktiv, so dass die Windows Defaults zum Einsatz kommen.

Achtung: Sie können hier anscheinend auf einem Server auch "DES_CBC_CRC" und/oder "DES_CBC_MD5" einschalten. Dennoch wird ein Windows 2008 Server und neuer diese Einstellung zwar umsetzen aber nicht reagieren. Damit legen Sie Kerberos tot. Zumindest im weiter unten beschrieben Test mit Windows 2016 DCs kam kein Handshake zustande.

Zudem gibt es auch noch beim AD-Objekt das Feld "SupportedEncryptionTypes", welche einen Einfluss auf die ausgestellten Kerberos-Ticket hat.

Microsoft hat am Nov 2022 den Default von RC4 auf AES umgestellt.
KB5021131: How to manage the Kerberos protocol changes related to CVE-2022-37966
https://support.microsoft.com/en-us/topic/kb5021131-how-to-manage-the-kerberos-protocol-changes-related-to-cve-2022-37966-fd837ac3-cdec-4e76-a6ec-86e67501407d

Achtung
Wenn Sie diese Richtlinie setzen, dann aktivieren Sie IMMER auch die beiden AES-Suites. Windows 2008 und machen kein DES mehr, selbst wenn Sie es hier vorgeben und seit Windows 2008 Forest Functional Level wird immer AES für das TGT genutzt. Wenn AES abgeschaltet wird, werden keine TGT mehr ausgestellt.

Anmeldung und Servicezugriff

Auf der Seite Kerberos Wireshark habe ich die verschiedenen Netzwerk-Mitschnitte erfasst, welche die Anmeldung eines Clients am Server als auch den Zugriff per LDAP und SMB zeigen und dabei auch die Standardverfahren bei der Verschlüsselung von Windows 2016 mit Security Update von Feb 2023 nutzen, so dass ich mich hier auf die eigentliche Anmeldung und den Handshake konzentrieren kann. Denn auch hier spielen einige Komponenten eine Rolle. Ein einfaches Active Directory mit einem DC, eine Dateiserver einem Client und einem Benutzer hat schon fünf Stellen, an denen Sie mit Kerberos eingreifen können.

Die folgenden Felder sind standardmäßig alle nicht gesetzt. Das bedeutet, dass dann die Standardwerte zum Einsatz kommen. Diese Werte können sich durch Security Updates ändern.

Einstellung Ort Beschreibung

SupportedEncryptionTypes

Windows OS

Bestimmt, welche Encryption-Verfahren das Endgerät unterstützt und anbietet.

msDS-SupportedEncryptionTypes

AD-Objekt

Wenn ein Client ein Ticket für einen Server oder einen Service anfordert, dann sucht der KDC im AD nach dem angefragten ServicePrincipalName und wertet dann diese Feld aus. So kann ich z.B. einen alten Service weiter mit RC4-Tickets versorgen.

DefaultDomainSupportedEncTypes

Windows OS

Bestimmt, welche Verfahren der KDC per Default für ausgestellte Zertifikate verwendet verwendet. Mit dem Nov 2022 Security Updates wurde der Standard von RC4 auf AES umgestellt.

Damit ergeben sich einige Fragen. Ich wollte zuerst sehen welchen Einfluss dieses Feld hat, d.h. was bietet ein Client an und was akzeptiert dann ein Server. Was passiert, wenn zwei System z.B. nur AES können aber ein ein Service auf RC4 gestellt wurde. Was passiert, wenn zwei Endpunkte keine gemeinsamen Verfahren haben?

Wertebestimmung

Welche Encryption-Verfahren zur Wahl stehen, hat Microsoft auf mehreren Seiten beschrieben. Sie sollten aber auf zwei Dinge achten:

  • HEX <> DEZ
    Nicht immer ist bei einer Zahl erkennbar, ob sie dezimal oder hexadezimal zu interpretieren ist. Nicht immer steht ein dez/hex dahinter oder ein "0x" davor.
  • Auditing und Konfiguration
    Es gibt einmal eine Tabelle für die Konfiguration der erlaubten Verfahren und eine zweite Tabelle, die aber eine Nummer zum Verfahren im Eventlog beschreibt. Über diese Meldungen können Sie auswerten, er noch schwache Verfahren verwenden, die sie vielleicht bald abschalten wollen.

Hier geht es um den Wert für die Konfiguration, der sowohl für die Richtlinie in "SupportedEncryptionTypes" als auch das AD-Property "msDS-SupportedEncryptionTypes" gilt. Letztlich hat jede Verschlüsselung ein Bit und sie müssen einfach die Bits nach der Wertigkeit aufaddieren:

Bit dez-Wert hex-Wert Encryption

0

1

0x01

DES_CBC_CRC

1

2

0x02

DES_CBC_MD5

2

4

0x04

RC4

3

8

0x08

AES128

4

16

0x10

AES265

Wenn kein Bit gesetzt und die Summe damit "0" ist, dann kommt die Default-Einstellung zum Einsatz. Das war bis Nov 2023 noch RC4 und danach AES. 0x18 = 24dez steht dann für AES128+AES256

Das TGT Ticket wurde allerdings seit dem Windows 2008 Forest Functioal Mode als AES-Ticket ausgestellt.

Wenn Sie inkompatible Einstellungen zwischen dem Client, dem Server oder auch dem AD-Objekt für die Zielticket haben, dann lohnt sich ein Blick ins System-Eventlog. Hier z.B. eine Meldung, wenn ein

Log Name:      System
Source:        Microsoft-Windows-Kerberos-Key-Distribution-Center
Date:          23.02.2023 22:22:32
Event ID:      16
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      DC01.msxfaq.de
Description:
While processing a TGS request for the target server host/PC2.carius.de, 
the account Admin2@msxfaq.DE did not have a suitable key for generating a Kerberos ticket 
(the missing key has an ID of 8). The requested etypes were 18  17  23  24  -135. 
The accounts available etypes were 23  18  17. 
Changing or resetting the password of PC2$ will generate a proper key.

Ich hatte im Feld "SupportedEncryptionTypes" leider nicht 24Dez sondern 24Hex eingegeben, was dann zu einem Mismatch geführt hat. Die hier aufgezählten Nummern 18,17,23,24,-135 haben aber nichts mit den Bits von Windows zu tun, sondern sind die ENCTypes im Kerberos-Protokoll. Sie dazu den Abschnitt Encryption Codes am Anfang dieser Seite.

Tipps zum Testen

Wenn Sie die folgenden Szenarien nachstellen wollen, dann brauchen Sie einen Domain Controller mit Wireshark und einen Client und einen dritten Server um diesen als Ziel für Dienstzugriffe zu nutzen. Da der Client diesen Server natürlich erst einmal kontaktiert um die erlaubten Anmeldeverfahren zu erhalten, muss er auch laufen. Zudem müssen Sie ja immer wieder neue Tickets anfordern und verwerfen, damit die Ergebnisse nicht verfälscht werden. Daher hier noch ein paar Hinweise und Tipps:

  • KLIST als Admin starten
    Wenn Sie KLIST als Benutzer starten, sehen Sie keine Kerberos-Tickets
  • KLIST PURGE
    Damit lassen sich sehr schnell alle Tickets samt dem TGT entfernen. Das triggert aber keine Neuanforderung und alle nachfolgende Anmeldungen werden per NTLM o.ä. durchgeführt. Sie müssen sich ab- und neu anmelden oder zumindest einmal den Desktop sperren und wieder entsperren, um ein neues TGT zu bekommen
  • Sperren/Entsperren
    Generell ist dieser Weg elegante als KLIST PURGE. Durch den Entsperrvorgang wird immer ein neues TGT geholt, was anhand des Zeitstempels gut zu sehen ist und alle anderen Tickets werden verworfen. Siehe dazu auch Kerberos Lockscreen.
  • Falle SMB
    Der Test per "dir \\server\share" ist sehr einfach und elegant. Allerdings wird die SMB-Session dann auch gehalten, wenn Sie die Tickets wegwerfen. Eine SMB-Connection können Sie mit "Get-SMBSession" anzeigen aber nur durch eine Abmeldung entfernen.
  • SupportedEncryptionTypes Verzögerung
    Änderungen Am Feld SupportedEncryptionTypes in der Registrierung werden sofort vom KDC und vom Kerberos-Client erkannt. Bestehende Tickets werden aber nicht entfernt, selbst wenn sie nicht mehr verwendet werden dürfen. Löschen Sie hier alle Tickets mit KLSIT PURGE o.ä.
  • msDS-SupportedEncryptionType Verzögerung
    Änderungen am AD-Objekt werden ebenfalls vom KDS bei der nächsten Anfrage gelesen. Es scheint keinen Cache zu geben. Allerdings sollten Sie die AD-Replikation berücksichtigen. Eine Testumgebung mit genau einem DC erleichtert die Tests.
  • TGT neu ausstellen
    Wenn sie kein TGT haben, können Sie z.B.: per PowerShell mit "Test-ComputerSecureChannel -Repair" ebenfalls eine Kerberos-Anmeldung erzwingen.

Damit sollte nun ihren Tests nicht mehr im Wege stehen.

Ob es aber ein "Kerberos"-Problem oder vielleicht das darunterliegende Protokoll ist, können Sie oft einfach testen, indem Sie über die IP-Adresse statt des DNS-Namens zugreifen. Eine IP-Adresse ist meist nicht im Zertifikat und nicht im SPN hinterlegt. Ein Zertifikatswarnung zeigt aber, dass der TLS-Handshake funktioniert und ein SMB-Zugriff per IP-Adresse nutzt NTLM und schließt SMB1-Probleme aus
SMB1 Abschaltung, TLS 1.2 Enforcement

SupportedEncryptionTypes und DES

Zuerst habe ich eine direkte Verbindung zwischen einem Client und der Anmeldung am Server durchgespielt. Das lässt sich durch ein "Sperren/Entsperren" des Desktops einfach prüfen.

Änderungen an der Einstellung zu "supportedencryptiontypes" wurden nach meiner Erfahrung sofort und ohne Neustart aktiv.

DC erlaubt nur DES_SBS_CRC

Aktion

Ich habe dazu auf dem Domain Controller folgenden Key gesetzt.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters]
"supportedencryptiontypes"=dword:00000001

Dadurch habe ich den DC dazu gezwungen, dass er nur noch DES-CBC-CRC annimmt.

Diagnose

Der Client konnte sich danach zwar anmelden, aber nicht per Kerberos, denn das hat nicht geklappt und wurde auch zweimal versucht.

Der Client hatte nach der Anmeldung auch kein Kerberos Ticket.

Interessant finde ich, dass der Client auf seinen AS-REQ in Paket 14 und 46 vom KDC ein "KRB5KDC_ERR_PREAUTH_REQUIRED" bekommt. Dabei sendet der Client folgende Verfahren mit:

Der KDC könnte schon beim ersten AS-REQ ein "KRB5KDC_ERR_ETYPE_NOSUPP" liefern statt den Client einen zweiten Versuch starten zu lassen.

Ergebnis

Der KDC hält sich strikt an die Richtlinie und nimmt keine Verfahren an, die nicht erlaubt sind.

DC und Client auf DES_CBC_CRC

Nun wollte ich den Client ebenfalls auf DES trimmen und haben den DC noch auf DES gelassen

Aktion

Ich habe dazu auf dem Client den gleichen Key gesetzt.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters]
"supportedencryptiontypes"=dword:00000001

Ich habe gehofft, dass der Client nun seinerseits mit DES-CBC-CRC arbeitet.

Diagnose

Der Client konnte sich danach zwar anmelden, aber nicht per Kerberos, denn das hat nicht geklappt und wurde ebenfalls zweimal versucht.

Überraschend fand ich aber, dass der Client weiterhin AES256 versucht hat.

Der Client hat kein TGT bekommen

Ergebnis

Sie können zwar auf dem Client ein Downgrade auf "DES-CBC-CRC" eintragen aber es wird einfach ignoriert.

DES_CBC_CRC ist mit Windows wohl selbst "gewollt"  nicht mehr möglich.

DC erlaubt nur DES_CBC_MD5, Client mit DES_CBC_MD5

Als nächstes habe ich den Client angewiesen, dass er nur DES-CBC-MD5 nutzen soll.

Aktion

Ich habe dazu auf dem Client den gleichen Key gesetzt.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters]
"supportedencryptiontypes"=dword:00000002

Ich habe gehofft, dass der Client nun seinerseits mit DES-CBC-MD5 arbeitet.

Diagnose

Der Client konnte sich danach zwar anmelden, aber nicht per Kerberos, denn das hat nicht geklappt und wurde ebenfalls zweimal versucht.

Diesmal hat der Client mit DES-CBC-MD5 angefragt

Der Client hat kein TGT bekommen

Ergebnis

Windows erlaubt wohl immer noch ein manuelles Downgrade auf DES-CBC-MD5 aber nicht auf DES-CBC-CRC. Eine Verbindung kommt hier nicht zustande, da ich den Server ja immer noch auf DES-CBC-CRC sehen habe.

DC und Client erlauben nur DES

Also werde ich als nächstes den Server auf DES-CBC-MD5 umstellen, denn ich erwarte, dass der Server mit DES-CBC-CRC einfach nie ein Kerberos-Ticket ausstellen kann.

Aktion

Ich habe dazu auf dem Server den folgenden Key angepasst.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters]
"supportedencryptiontypes"=dword:00000002

Nun sollten ja der Client und der Server mit DES-CBC-MD5 arbeiten können.

Diagnose

Der Client konnte sich danach zwar anmelden, aber nicht per Kerberos, denn das hat immer noch nicht geklappt und wurde ebenfalls zweimal versucht.

Der Client hat DES-CBC-MD5 gesendet aber der Server meint immer noch, dass es nicht passt.

Ergebnis

Sie können dem Kerberos-Client wohl noch DES-CBC-MD5 erlauben aber ein Server erlaubt dies dennoch nicht.

Interessant, dass Windows 2016 DCs kein DES_CBC_MD5 mehr erlauben, selbst wenn es Policy einstellbar ist.

Das ist von Microsoft auch so dokumentiert:


Quelle https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/network-security-configure-encryption-types-allowed-for-kerberos

Der Spruch " Windows 7, Windows 10, Windows 11, Windows Server 2008 R2, and later operating systems don't support DES by default" sollten sie streng auslegen. Ich konnte zwar sehen, dass ein Client zumindest DES_CRCR_MD5 angeboten hat aber der Server trotz explizierter Konfiguration nicht drauf eingegangen ist. Mangels Gegenstelle konnte ich nicht prüfen, wie der Client auf eine DES_CBC_MD5 Antwort reagiert hätte.

Client SupportedEncryptionTypes RC4Only

Zu DES beim AD-Objekt folgt später noch einer Testserie. Zuerst habe ich den Client auf RC4 eingebremst.

Aktion

Ich habe dazu auf dem Client den "supportedencryptiontypes"-Key wie folgt gesetzt:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters]
"supportedencryptiontypes"=dword:00000004

Ich habe gehofft, dass der Client nun seinerseits mit RC4 arbeitet.

Diagnose

Der Client konnte sich anmelden und im Wireshark ist auch zu sehen, dsas er ein TGT bekommt

In den Details des AS-REQ finden wie auch RC4

Allerdings bietet der Client trotz expliziter Vorgabe auf "RC4 only" neben den drei RC4-Varianten auch DES-CBC-MD5 an.

Wenn ich das dritte Paket anschaue, mit dem das TGT angefordert wird, dann sehen wir auch hier RC4 überall aber auch AES, was wir eigentlich abgeschaltet haben sollten.

Entsprechend sah auch das Kerberos-Ticket mit KLIST aus:

Das mag überraschen, aber stimmt mit den Aussagen von Microsoft überein, dass neuere Windows-Versionen hier immer AES nutzen.

TGT encryption type – ...the encryption type of the TGT only needs to be supported by the domain controllers.  Once your domain functional level (DFL) is 2008 or higher, you KRBTGT account will always default to AES encryption.
Quelle: https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/decrypting-the-selection-of-supported-kerberos-encryption-types/ba-p/1628797

Ergebnis

Der Downgrade eines Clients auf RC4 funktioniert, wobei das TGT dennoch AES nutzt

Die Konfiguration "supportedencryptiontypes" habe ich danach wieder leer gemacht, so dass der Default beim Client genutzt wird.

Server SupportedEncryptionTypes RC4Only

Nach den DES Only Tests lassen wir nun das wahrscheinlich unsichere RC4 zu

DC mit RC4_HMAC_MD5

Nun habe ich den Server angewiesen, er möcht doch bitte nur RC4 machen.

Aktion

Ich habe dazu auf dem Server den "supportedencryptiontypes"-Key wie folgt gesetzt:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters]
"supportedencryptiontypes"=dword:00000004

Erwarte habe ich nun, dass der Client sich mit allen verfügbaren Encryption-Suites meldet aber der Server dann nur RC4 annimmt

Diagnose

Der Client konnte sich zwar anmelden aber hat keine Kerberos-Verbindung aufbauen können. Wireshark zeigt:

Im Paket 14 sehen wir den AS-REQ nach dem ersten Fehler mit allen Optionen:

Allerdings bietet der Client trotz expliziter Vorgabe auf "RC4 only" neben den drei RC4-Varianten auch DES-CBC-MD5 an. Das hilft aber nicht weiter, denn der Server lehnt die Anfrage mit einem "KRB Error: KRB5KDC_ERR_ETYPE_NOSUPP ab. Microsoft schreibt dazu ein "Always default to", was sie dann schon mit einem "muss" übersetzen sollten.

TGT encryption type – ...Once your domain functional level (DFL) is 2008 or higher, you KRBTGT account will always default to AES encryption. 
Quelle: https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/decrypting-the-selection-of-supported-kerberos-encryption-types/ba-p/1628797

Ergebnis

Wenn ich auf dem Domain Controller nur RC4 zulasse, dann kann sich kein Client mehr per Kerberos anmelden, da der KDC das TGT-Ticket immer per AES verschlüsseln möchte und ich über die falsche Konfiguration dies anscheinend unterbinde.
Ich muss aber immer AES auch zusätzlich zulassen.

AD: msds-supportedencryptiontype

Kommen wir nun zu den AD-Objekten. Wenn immer ein KDC ein Ticket für einen Service ausstellt, sucht er im Active Directory nach einem ServicePrincipalName und wertet das Feld "msds-supportedencryptiontype" aus. Dies hat daher direkten Einfluss auf die ausgestellten Tickets, die dem Anwender zugeleitet werden. Microsoft schreibt dazu:

Once your domain functional level (DFL) is 2008 or higher, you KRBTGT account will always default to AES encryption. For all other account types (user and computer) the selected encryption type is determined by the msDS-SupportedEncryptionTypes attribute on the account.  You can modify the attribute directly or you can enable AES using the checkboxes in the Account tab.
Quelle: https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/decrypting-the-selection-of-supported-kerberos-encryption-types/ba-p/1628797

Die Einstellungen befindet sich am AD-Objekt zum Computer oder dem Dienstkonto, welches den SPN hat. Bei Benutzerkonten können Sie einen Teil der Einstellungen per MMC Active Directory Benutzer und Computer machen.

Die vier Felder würde 16 mögliche Varianten erlauben. Im Ergebnis wirken aber nur die beiden AES-Einstellungen auf das Feld "msds-supportedencryptiontype":

Support AES128 Support AES256 msds-supportedencryptiontype  Effektive Encryption Suites

24 

AES128+AES256 

AES128 

16 

AES256 

0 (oder Null)

Default 

Wenn Sie einmal AES128 oder AES256 aktiviert und am Ende wieder deaktiviert haben, wird das Feld auf "0" gestellt und ist nicht mehr "leer" wie vorher. So können Sie nachträglich erkennen, bei welchen Objekten schon jemand nur über die GUI an den Einstellungen gedreht hat.

Die Einstellung "Use only Kerberos DES encryptiontypes for this account" setzt das Bit 21 (2097152dez) und "Do not require Kerberos preauthentication" das Bit 22 (4194304dez) im Feld "UserAccountControl".

Die Einstellmöglichkeiten über die MMC sind schon etwas beschränkt, so dass ich die Einstellung in der Regel immer direkt mache. Dabei kann ich dann auch Werte verwenden, die nicht über die GUI erreichbar sind. Siehe dazu den Abschnitt Wertebestimmung.

Noch einfacher geht es sogar per PowerShell mit "Set-ADComputer". Es gibt extra den Parameter "KerberosEncryptionType", der die Werte DES, RC4, AES128, AES256 annehmen kann.

# RC$ Only für einen Computer vorgeben
Set-ADComputer <computername> -KerberosEncryptionType RC4

# RC4 auf jeden Fall deaktivieren. Ist seit Nov2023 SecUpdate aber obsolet da 
neuer Default
Set-ADComputer <computername> -KerberosEncryptionType AES128,AES256

# Defaulteinstellungen wieder aktivieren
Set-ADComputer <computername> -KerberosEncryptionType 0
# oder
Set-ADComputer hyperv2 -clear msds-supportedencryptiontypes

Nur beim Auslesen werden dann wieder die numerischen Werte ausgegeben:

(get-adcomputer <computername> -Properties "msds-supportedencryptiontypes")."msds-supportedencryptiontypes"

Bei Computerkonten fehlt die Karteikarte und es bleibt nur die direkte Bearbeitung mittels ADSIEDIT oder die erweiterte Anzeige in MMC für Benutzer und Computer.

Testserie mit msds-supportedencryptiontype

Die Testserie ist nun aber etwas vereinfacht, da ich nur noch die ausgestellten Tickets prüfen muss. Auch gibt es keine zwei Partner, die ich gegenseitig testen muss.

Zielserver im AD auf DES_CBC_CRC/DES_CBC_MD5

Alle Endpunkte sind erst einmal wieder auf "Default" gestellt, wie es bei vermutlich den meisten Firmen sein dürfte.

Aktion

Ich habe einen Member-Server namens "Hyperv2"auf "DES" gesetzt.

 

Dann habe ich von einem anderen Client aus ein Kerberos Ticket angefordert, indem ich einen DIR auf eine Dateifreigabe gestartet habe.

Diagnose

Ich konnte auf dem Client zwar den Inhalt des Verzeichnisses sehen aber mit KLIST kein Kerberos-Ticket. Die Ursache war mit Wireshark schnell gefunden:

 

Der Client hat schon nach dem Ticket gefragt aber ohne DES

 

Und damit konnte der Server kein Ticket ausstellen.

Ergebnis

Es macht keinen Sinn, ab Windows 2008 oder höher hier einen Wert einzustellen, der nur DES zulässt. Damit schalten Sie Kerberos für diesen Service ab. Für Fehlersuche und gemeine Prüfungsaufgaben für Junioren kann es aber nützlich sein.

Übrigens hat diese Einstellung anscheinend keine Auswirkung auf die TGT-Tickets eines Anwender, der sich auf dem Server selbst anmeldet. Er bekommt weiterhin AES-Tickets

Zielserver im AD auf RC4_HMAC_MD5

Wenn DES wie erwartet nicht geht, habe ich als nächstes RC4 eingestellt.

Aktion

Die Konfiguration war schnell per PowerShell erfolgt

Set-ADComputer hyperv2 -KerberosEncryptionType rc4

Danach habe ich mich auf einem Client angemeldet und auf eine Dateifreigabe auf dem Hyperv2 zugegriffen.

Diagnose

Wireshark hat das Ticket erfolgreich ausgestellt und in der Anfrage des Clients waren natürlich wieder alle vom Client unterstützten und erlaubten Encryption-Optionen aufgeführt:

Das vom KDC an den Client gelieferte Ticket wurde mit AES verschlüsselt aber ist selbst natürlich nur ein RC4-Ticket:

Das sehen Sie dann auch auf dem Client mit KLIST: 

Ergebnis

Das System verhält sich genau, wie erwartet. Der Client und KDC können sowieso alle Verfahren und über die Einstellung am AD-Objekt kann ich das EncryptionFormat des Ticket selbst bestimmen. So kann ich für alte Systeme, die z.B. nicht mit einem AES128/AES256-Ticket umgehen können, den KDC zur Ausstellung eines RC4-Tickets zwingen.

Zielserver im AD auf RC4, KDC auf AES128/AES256

Nun bleibt natürlich die Frage, ob dies auch noch möglich ist, wenn der KDC gar kein RC4 mehr nutzen darf.

Aktion

Ich habe auf dem KDC das Feld "supportedencryptiontypes" in der Registrierung auf 24 (8+16 = AES128 + AES256) gestellt und noch mal ein Ticket angefordert.

Diagnose

Ich habe kein Ticket bekommen und im Wireshark ist der Fehler auch zu sehen.

Die Anfrage des Clients kommt wieder mit allen vom Client freigeschalteten Encryption-Verfahren aber der DC kann kein RC4-Ticket ausstellen, da er selbst auf AES128/AES256 festgenagelt ist

Ergebnis

Die mittels Kerberos-Richtlinie auf dem KDC vorgegebenen Encryption-Verfahren beschränken die Ausstellung der Tickets für Clients und andere Server. Sie darf daher als "sicher" gelten, um eine Verwendung schwächerer Tickets zu verhindern.

Blackhat

Man muss kein Hacker sein, aber Vorträge auf der Blackhat liefert oft viele Hintergrundinformationen. Sie zeigen aber auch, dass gefährlich ist, schwache Verschlüsselungsverfahren oder unsichere Clients zuzulassen. Programme wie Mimikatz u.a. versuchen z.B. das TGT abzugreifen, um damit weitere Tickets ohne Beisein des Benutzers zu erstellen. Angreifer können aber auch PAC umgehen, wenn der DC PAC nicht erzwingt.

Watching The Watchdog: Protecting Kerberos Authentication with Network Monitoring
https://www.blackhat.com/docs/eu-15/materials/eu-15-Beery-Watching-The-Watchdog-Protecting-Kerberos-Authentication-With-Network-Monitoring-wp.pdf

Watching The Watchdog: Protecting Kerberos Authentication with Network Monitoring
https://www.youtube.com/watch?v=7qbSFYVQJ7A&ab_channel=BlackHat

Zwischenergebnis

Diese lange und intensive Testserie hat mir viele Erkenntnisse gebracht, die bei der Fehlersuche mit Kerberos und Windows, insbesondere mit "alten Clients", Fremdsystemen oder bei Überlegungen zur RC4-Abschaltung weiter helfen. Ich merke mir:

  • Wenn zwei Partner keine gemeinsame Encryption-Suite finden, gibt es keine Tickets
    Das überrascht mich nicht aber wenn sie Vorgaben machen und jede Vorgabe ungleich Default ist immer ein Verbot bestimmter Suiten
  • Windows macht kein DES-CBC-CRC oder DES-CBC-MD5
    Ich habe es in keinem Fall erreicht, dass die Angabe von DES auch zu einem Erfolg geführt hat. Allerdings gibt es Fälle, wo ein Client noch -CBC-MD5 anbietet. Der KDC ignoriert es aber Wer DES erzwingen will oder erwartet, bekommt kein Ticket
  • RC4Only auf dem Server ist eine schlechte Idee
    Seit Windows 2008 Forest-Mode sind alle TGTs mit AES verschlüsselt. Wer AES auf dem KDC abschaltet, deaktiviert faktisch den KDC.
  • Clients, die kein AES-KRGTGT verstehen sind raus
    Laut Kompatibilitätsmatrix kann Windows Vista und Windows 2008 und höher mit AES umgehen. Kniffliger wird es für ältere Windows Versionen (XP/2003 etc.) die kein Kerberos mehr nutzen können und auf SMB1 hoffen. Was aber auch hoffentlich abgeschaltet ist. Eventuell trifft es unpassend konfigurierte Linux-Systeme. Kontrollieren Sie einfach den beim KDC eingehende AS-REG /TGT-REG auf die angebotenen Verfahren.

Ich hoffe, dass diese Ergebnisse ihnen bei der Fehlersuche mit Kerberos weiter helfen.

Weitere Links