Cached Credentials - Entmystifiziert - Kein PtH möglich - Mythos #4
CachedLogonsCount gesellt sich zu NewSID.
(Der ursprüngliche Artikel ist vom 28.03.2020 und am 28.05.2021 in die Mythen und Fehldeutungen Serie aufgenommen worden)
Danke an Paula Januszkiewicz und ihrem CQURE Team.
Cached Credentials: Important Facts That You Cannot Miss
WHY changing your cached credentials to 0 or 1 is… pointless?
Was sind Cached Credentials?
Cached Credentials dienen zur Anmeldung an einen Domain Joined Client unter Offline Bedingungen, wenn der DC nicht erreichbar ist. Der Standard Wert steht auf 10. Die Richtlinie wird von vielen falsch interpretiert. Der Hilfe Text erlaubt das leider. Er ist nicht eindeutig.
Computerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Lokale Richtlinien\Sicherheitsoptionen
Interaktive Anmeldung: Anzahl zwischenzuspeichernder vorheriger Anmeldungen (für den Fall, dass der Domänencontroller nicht verfügbar ist)
Es geht um die Anzahl unterschiedlicher Domäne\Benutzer Kennungen, die Offline zur Anmeldung am System zur Verfügung stehen. Sobald sich ein 11ter Benutzer anmeldet fliegt die älteste der 10 Anmeldungen heraus. Die Angst vor Pass-the-Hash hat in allen Sicherheitsvorlagen (BSI, CIS etc) dazu geführt, das der Counter auf 0 oder 1 reduziert werden soll. Das habe ich selber jahrelang gepredigt.
MEA CULPA!
Die Fakten:
- Cached Credentials können nicht(!) für Pass-the-Hash verwendet werden
- Die gespeicherten Informationen entsprechen nicht(!) dem NTLM Hash aus der LSA.
- Die Prüfsumme, die zum Vergleich bei der Authentifizierung verwendet wird ist MSDCC2 und dieser Hash ist nicht reversible. (Rainbowtables sind möglich, aber die gehen immer)
- Eine Komponente von MSDCC2 (DCC Version 2) ist der Domain Cache Credentials (DCC) Algorythmus, der schon in XP zum Einsatz kam.
- Die Credentials stehen in der Registry unter HKLM\Security\Cache und können mit Systemrechten gelesen werden. Man findet dort NL$1 bis NL$10, bei Default Konfiguration
- Im Gegensatz zum Hash des Lokalen Administrator Kennworts, der gerne bei PtH verwendet wird und vom Credential Guard geschützt wird, kann mimikatz (oder ähnliche Tools) mit dem MSDCC2 nichts direkt anfangen. Der NL$x Hash Wert entspricht nicht dem Kennwort Hash.
- Der Cache Wert (NL$x) kann offline überschrieben und verändert werden, er funktioniert dann auch für die Offline Anmeldung. Pass-the-Hash funktioniert aber nur, wenn man den HASH nicht verändert.
- Ob man bei einem Angriff die Cached Credentials manipuliert, um sich anmelden zu können oder ob man einfach einen neuen Benutzer erstellt ist völlig egal aus Sicherheitssicht. Man erhält in beiden Fällen Zugriff auf das lokale System.
- Wenn der Wert CachedLogonsCount auf z.B.: 1 gesetzt wird, per GPO oder Manuel, dann können Offline trotzdem zusätzliche NL$ Einträge manuell erzeugt werden, die zur Anmeldung funktionieren.
- Bei der Manipulation der Offline Cached Credentials wäre man mit den Domänenkonto am System angemeldet, könnte aber bei Online Zugriff im Netzwerk im ersten Moment nichts damit anfangen, da das Kennwort nicht stimmt.
- Da der Angreifer sich immer zum Mitglied der lokalen Administratoren macht, ist es kein Unterschied. Der SYSTEM Account des DomainJoined Computer ist immer Authenticated User. Der allein erlaubt oft Zugriff auf zu viele Informationen.
In diesem System ist nur ein Domänen Account angemeldet worden.