PAC Signing mit Kerberos

Diese Seite entstand rund um die Windows Security Changes 2023, mit denen Microsoft durch eine Veränderung des PAC-Verhaltens auf eine Lücke (CVE-2022-37967) reagiert und Windows sicherer macht.

The November 8, 2022 Windows updates address security bypass and elevation of privilege vulnerabilities with Privilege Attribute Certificate (PAC) signatures. This security update addresses Kerberos vulnerabilities where an attacker could digitally alter PAC signatures, raising their privileges.
Quelle: https://support.microsoft.com/en-gb/topic/kb5020805-how-to-manage-kerberos-protocol-changes-related-to-cve-2022-37967-997e9acc-67c5-48e1-8d0d-190269bf4efb

Das Enforcement von CVE-202237967 am 11. April wurde auf 13. Jun 2023 verschoben. Siehe Office 365 Message Center Post MC541054 "Changes to the deployment phase for CVE-2022-37967"
https://admin.microsoft.com/AdminPortal/home?#/MessageCenter/:/messages/MC541054

Achtung: KrbtgtFullPacSignature=2 erfordert den Forest functional Level Windows 2012+, damit das KRBGT-Konto auch AES nutzt.

Leider konnte damit auch das ein oder andere Altsystem aussperrt werde.

Was ist PAC?

Das Privileged-Attribute-Zertifikat (PAC) ist eine Erweiterung der Kerberos-Service-Tickets, die Informationen über den authentifizierenden Benutzer und seine Berechtigungen enthält. Der DC fügt die PAC-Informationen zum Kerberos-Ticket hinzu, wenn der Benutzer ein solches mittels seinem Ticket Granting Ticket beim KDC anfordert. Mit dem Service Ticket geht der Client dann zum Service, der allein aus dem PAC ermitteln kann, wer der anfragende Client ist und welche Berechtigungen oder Gruppenmitgliedschaften hat. Der Service muss nicht mehr mit dem DC sprechen, wie dies bei NTLM der Fall wäre. Aber dazu muss das PAC natürlich sicher gegen Veränderungen sein.

Die Lücke (CVE-2022-37967) hat nun einen Weg aufgezeigt, wie ein vom DC ausgestelltes Kerberos Ticket verändert werden kann, dass der Benutzer mehr Berechtigungen im PAC hat aber der Service die Fälschung nicht erkennt. Angriffe auf das PAC sind daher für Angreifer interessant und Lücken wurden schon immer mal wieder gefunden und gefixt.

Die PAC Validation addiert eine Rückfrage des Servers gegen den DC, ob das vorgezeigte Kerberos-Ticket wirklich unverändert ist

Rollout Zeitplan

Um die Sicherheit zu gewährleisten, können Sie "PAC Signing" als auch "PAC Validation" einsetzen. Beim Signing wird das PAC "digital signiert" und bei PAC-Verification fragt der Service zur Sicherheit noch mal beim DC mit, ob die Signatur auch korrekt ist. Allerdings können Sie nun nicht direkt auf allen Systemen den besten Schutz sofort aktivieren. Je älter ein Betriebssystem ist, desto schwächer sind seine Default-Einstellung und Möglichkeiten. Es ist daher wahrscheinlich, dass Sie erst ein Update auf alle Systeme installieren müssen und dann auch noch prüfen, welche Systeme mangels Update danach gar nicht mitspielen können.

Sie kennen das sicherlich am Beispiel des mittlerweile vorhandenen TLS 1.2 Enforcement Zwangs und der Abschaltung von TLS1.1, 1.0. SSL3 und dass z.B. der Internet Explorer auf Windows XP sich nicht mehr verbinden kann. Auch die DES Abschaltung bei Kerberos (Siehe Kerberos RC4 Abschaltung) hat alte Systeme ausgesperrt, wenn sie nicht absichtlich ihre Sicherheit geschwächt haben.

Das Update von PAC-Signing im November 2022 fällt auch unter diese Kategorie: Sie installieren zuerst die Updates, dann prüfen Sie, wer noch das weniger sicherere Verfahren nutzt, überlegen sich Lösungen, ehe Sie am Ende dann den Schutz scharf schalten.

Das bedeutet aber auch, dass allein die Installation des Nov 2022 Updates die Lücke noch nicht schließt.

Alle beteiligten System müssen generell erst einmal PAC Signing unterstützen, ehe Sie als Administrator die Funktion erst einmal als Default aktivieren und im letzten Schritt auf dem Service die Prüfung erzwingen können. Microsoft hat für den CVE-2022-37967 folgende Phasen vorgesehen:

Das Enforcement von CVE-202237967 am 11. April wurde auf 13. Jun 2023 verschoben. Siehe Office 365 Message Center Post MC541054 "Changes to the deployment phase for CVE-2022-37967"

Auf jede Phase können sie für eine gewisse Zeit Einfluss nehmen aber nicht auf Dauer unterbinden.

Datum Aktion

8. Nov 2022

Mit der Installation der Security Updates wird das Verhalten so verändert, dass der DC alle neuen Kerberos-Tickets mit PAC Signing ausstattet aber die Überprüfung noch nicht erzwungen wird. Es könnte schon jetzt passieren, das gewisse Dienste mit der PAC-Extension nicht zurecht kommen und sich Anwender zumindest nicht per Kerberos anmelden können. Notfalls können Sie für diesen Dienst den SPN entfernen, damit Clients auf NTLM oder andere Verfahren umstellen oder die aktualisieren den Service, damit er mit PAC-signierte Tickets umgehen kann.

Das Security Update wertet aber einen neuen Schlüssel in der Registrierung aus, über den sie die Ausstellung von PAC-signierten Kerberos-Tickets noch unterbinden können.

Der Standardwert ist 1 für "Add Signature, but not verify". Mit einem "0" verhindern sie dies.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"KrbtgtFullPacSignature"=dword:00000000

Ich rate dringend davon ab, diesen Wert auf "0" zu setzen sondern besser die betroffenen Dienste zu fixen.

Das Auditing auf diese unsicheren Tickets ist noch von Anfang an angeschaltet, da sonst alle noch nicht aktualisierten Clients eine Meldung generieren würde. Das könnten Sie aber schon früher aktivieren:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"KrbtgtFullPacSignature"=dword:00000001

Die Aktivierung des Auditing aktiviert auch immer die Signierung mit. Sonst gäbe es ja nichts zu vermelden.

13. Dez 2022

Wenn nach ca. 1 Monat dann alle Clients das Nov 2022 Update bekommen haben, dann sollte Microsoft im Dezember 2022 per Default das Auditing einschalten. Wenn dies nicht passiert, dann setzen Sie bitten den Key manuell.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"KrbtgtFullPacSignature"=dword:00000002

In einem aktuellen Netzwerk sollten nun keine Meldungen erscheinen. Es dürften aber nur noch sehr alte Clients sein für die es eh keinen Support mehr gibt oder auf denen Sie per Konfiguration.

Suchen Sie im System-Eventlog der DCs nach EventIDs 43/44

13. Jun 2023 (vormals 11. April 2023

Die nächste Stufe wird aktiviert, indem eine Einstellung von "KrbtgtFullPacSignature=0" nicht mehr akzeptiert wird. Ab jetzt wird immer signiert. Wer bis dahin die Systeme mit Problemen aufgrund von "Full PAC Signature" nicht angepasst wurden, kann auf diese nicht mehr per Kerberos zugreifen. Das Risiko ist allerdings sehr gering, da selbst Windows 2008 mit PAC umgehen kann.

Schon Ende 2021 gab es eine Sicherheitslücke, die Microsoft mit einem Update gefixt hat:

11. Jul 2023

Nun wird es wieder ernst, denn ab dem Zeitpunkt wird PAC Signing überprüft (Enforce) und die Anforderung werden bei einem Fehler als ungültig verworfen. Nun kommen Clients nicht mehr an die Server, wenn die "Full PAC Signature" fehlt. Sie können aber noch diesen Zwang für einige Wochen abschalten:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"KrbtgtFullPacSignature"=dword:00000002

10. Okt 2023

Wer bislang nicht selbst die volle Schutzfunktion aktiviert hat, kann ab diesem Zeitpunkt diese aber auch nicht mehr abschalten. Alle Clients signieren und die Server erzwingen PAC Signatur, was dem Wert "KrbtgtFullPacSignature"=dword:00000003" entspricht.

Auf der einen Seite ist dies ein fixer Zeitplan, der speziell Firmen mit inkompatiblen Geräten in Zeitnot bringen kann. Auf der anderen Seite sind ihre Systeme erst ab dem 11. Jul 2023 ihr System wirklich abgesichert, wenn Sie nicht schon vorher per Konfiguration die strenge Prüfung vorziehen.

PacRequestorEnforcement

Es gibt noch einen weiteren Schlüssel, der von Microsoft nicht direkt in Verbindung mit PAC-Signing und dem Nov 2022 Update genannt wird aber ebenso wichtig ist, um die Lücke "CVE-2021-42287" zu fixen. Die Updates sind aber schon im Nov 2021 Security Update enthalten.

After installing Windows updates dated November 9, 2021 or later, PACs will be added to the TGT of all domain accounts, even those that previously chose to decline PACs.
Quelle KB5008380—Authentication updates (CVE-2021-42287) https://support.microsoft.com/en-gb/topic/kb5008380-authentication-updates-cve-2021-42287-9dafac11-e0d0-4cb8-959a-143bd0201041

Auch hier hat Microsoft eine abgestuftes Rollout umgesetzt:

Datum Aktion

9. Nov 2021

Initiale Phase mit der Installation des Updates bringt neben einigen Updates auch die Auswertung des Schlüssels "PacRequestorEnforcement" mit. Der Default ist aber immer noch 0, wenn der Wert nicht gesetzt ist.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"PacRequestorEnforcement "=dword:00000000

12. Jul 2021

Ab dem Zeitpunkt ist der neue Default für "PacRequestorEnforcement=1" und sie können es nicht mehr auf "0" setzen. Das PAC wird nun immer addiert aber noch nicht geprüft

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"PacRequestorEnforcement "=dword:00000001

11. Okt 2021

Nun wird das Enforcement umgesetzt und der Wert von "PacRequestorEnforcement" wird nicht mehr ausgewertet. Es entspricht nun dem Wert 2

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kdc]
"PacRequestorEnforcement "=dword:00000002

Wenn Sie damals besser vorbereitet sein wollten, dann hätten Sie schon damals den Wert möglichst früh auf "2" stellen sollen. Mittlerweile sollten aber alle DC dieses Updates schon lange haben und "PacRequestorEnforcement" ist aktiv. Damals gab es aber schon die ein oder anderen Probleme speziell mit Linux-Systemen.

Überwachung

Sie sollten aber auf jeden Fall das Eventlog überwachen:

Eventlog

Type

Source

EventID

Bedeutung

System

Warning

Kdcsvc

43

Die Überprüfung der "Full PAC Signature" ist fehlgeschlagen, d.h. der DC/Server/Client scheint das noch nicht richtig zu senden und wird ab dem 10 Okt 2023 ein Problem bekommen.

System

Warning

Kdcsvc

44

Das Ticket enthält noch keine "Full PAC Signature", d.h. der DC/Server/Client scheint das noch nicht zu senden und wird ab dem 10 Okt 2023 ein Problem bekommen.

In beiden Fällen sollten sie prüfen, warum das Ticket keine gültige "Full PAC Signature" enthält. Wenn Sie keine Events auf aktualisierten DC finden, dann können und sollten Sie schon vorher die KrbtgtFullPacSignature erzwingen, denn bis zum 10 Okt 2023 noch könnten Sie es auch wieder abschalten.

PAC mit Wireshark

Wenn Sie mit Wireshark oder einem anderen Tool eine unverschlüsselte Kerberos-Verbindung mitschneiden, dann finden Sie z.B. in einem AS-REQ die Information, das PAC angefordert wird:

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

Weitere Links