Zusätzlich zu unserem letzten
Artikel über das Dekodieren von DPAPI-Blobs werden wir über zwei weitere Fälle sprechen, denen wir uns stellen mussten. Es geht um gespeicherte Passwörter in MS IE11- und Edge-Browsern.
Die Strategie bleibt gleich - wir werden alles offline entschlüsseln. Dazu müssen Sie die erforderlichen Dateien abholen.
Je nach Betriebssystem (Windows 7 oder höher) sollten gespeicherte Kennwörter an zwei Stellen gesucht werden:
Bei Windows 7 handelt es sich um einen Registrierungszweig
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
Für Windows 8 und höher Windows Vault-Speicher.
Es sollte auch beachtet werden, dass unter Windows 7 auch grundlegende http-Autorisierungskennwörter in Windows Vault gespeichert werden, sodass das Aufnehmen in keinem Fall schadet.
Nun, nach der guten alten Tradition - all dies wird natürlich durch DPAPI-Mechanismen verschlüsselt.
Betrachten Sie nun den Entschlüsselungsalgorithmus genauer.
Windows 7 + IE11 (Edge)
Wie oben erwähnt, werden Kennwörter in der Registrierung des aktuellen Benutzers gespeichert und sind DPAPI-Blobs, die mit dem Hauptschlüssel des Benutzers verschlüsselt sind.
Es gibt jedoch einen wichtigen Unterschied: Beim Verschlüsseln des Kennworts wird Entropie verwendet. Entropie ist die URL, unter der ein Passwort im Format
("https://url"+"\x00").lower().encode("utf-16-le")
.
Um ein Passwort zu entschlüsseln, müssen Sie die vollständige URL kennen! Sonst nichts.
Damit der IE selbst weiß, wie das Kennwort entschlüsselt wird, wird diese URL gehasht und in der Registrierung als Schlüsselname mit DPAPI-Blob gespeichert.
Betrachten Sie ein kleines Beispiel. Für die Site
https://rdot.org/forum/
sieht
https://rdot.org/forum/
gespeicherte Passwort folgendermaßen aus:
A88E21329B5372B856CE238B79D1F28D8EA1FD359D REG_BINARY 01000000D08C9DDF0115D1118C7A00C......BC310C51EE0F9B05D
wo
A88 ... ist eine Hash-URL
https://rdot.org/forum/
01000000D08C ... - DPAPI-Blob mit Benutzername und Passwort
Der URL-Hashing-Algorithmus ist unkompliziert. Weitere Informationen über ihn finden Sie in den CIA-basierten Entwicklungen von
Vault7 .
In Python sieht es so aus:
import hashlib url = "https://rdot.org/Forum/".lower() + "\x00" url_utf_16_le = url.encode("utf-16-le") sha1obj = hashlib.sha1(url_utf_16_le) urldigest = sha1obj.digest() checksum = 0 len(urldigest) for abyte in urldigest: checksum = (checksum + (ord(abyte))) & 0xFF hash = sha1obj.hexdigest().upper() cksum = "%02X" % checksum reg_value_name = "%s%s" % (hash, cksum) print reg_value_name
Eine Liste der letzten 50 eingegebenen URLs finden Sie auch in der Registrierung:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\typedurls
Kehren wir zum Beispiel zurück. Angenommen, wir müssen das gespeicherte Passwort von
https://rdot.org/forum/
in der Registrierung finden.
Einsetzen des URL-Werts in das Konvertierungsskript - wir erhalten den Wert
A88E21329B5372B856CE238B79D1F28D8EA1FD359D
Den Schlüssel mit diesem Namen müssen wir in der Registrierung finden
req query "HKEY_USERS\<SID>\Software\Microsoft\Internet Explorer\IntelliForms\Storage2"
Wenn ein solcher Schlüssel gefunden wird, muss er als Hex-Werte in die Datei kopiert werden (d. H. Den Wert des Schlüssels als Hex-Blob interpretieren) und mit Entropie als DPAPI-Blob entschlüsselt werden:
("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")
("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")
Für die Entschlüsselung können Sie dpapick verwenden und die entsprechenden Änderungen vornehmen, um die Entropie bei der Entschlüsselung zu berücksichtigen.
In der Datei examples / filegeneric.py wird der Funktionsaufruf ausgeführt
probe.try_decrypt_with_password(options.password, mkp, options.sid)
ersetzen durch
probe.try_decrypt_with_password(options.password, mkp, options.sid, entropy=("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le"))
und danach wie gewohnt dpapick anrufen:
./filegeneric.py --sid <SID> --masterkey <mk dir> --password <..> --inputfile <dpapi blob from registry>
Wenn der Hauptschlüssel korrekt entschlüsselt ist, erhält die Ausgabe den gespeicherten Benutzernamen und das Kennwort (nach einer bestimmten Menge von Service-Binärdaten).
Windows 8.1 und höher
Beim Speichern von Kennwörtern unter Win8 und höher werden Kennwörter aus http-Formularen sowie die http-Grundautorisierung in Windows Vault gespeichert. Und was ist gut - zusammen mit dem Passwort wird die vollständige URL der Site gespeichert, auf die sie sich nähert.
Vault selbst wird in zwei Schritten verschlüsselt: Erstens wird der gesamte Datenblock von AES verschlüsselt, und der symmetrische Entschlüsselungsschlüssel wird von DPAPI verschlüsselt und in einer Datei gespeichert. Der vollständige Verschlüsselungs- / Entschlüsselungsalgorithmus wird in dem Artikel von den Jungs von
Zena Forensics beschrieben .
Sie entwickelten auch spezielle Entschlüsseler für Windows Vault basierend auf dpapick (dpapilab). Sie können sie auf ZF Git nehmen oder eine Gabel von unserem
Github herunterladen .
Der Tresorspeicher befindet sich im Benutzerprofil:
C:\Users\<user>\AppData\Local\Microsoft\Vault\<GUID>\
In der .vpol-Datei befindet sich ein DPAPI-Blob, der mit einem Benutzerschlüssel verschlüsselt ist und einen AES-Schlüssel zum Entschlüsseln von .vcrd speichert
Um Vault zu entschlüsseln, müssen Sie Folgendes ausführen:
./vaultdec.py --masterkey <mk dir> --sid <SID> --password <pass> <VAULT DIR>
Anstelle eines Kennworts können Sie einen Domänenschlüssel verwenden, wie im
vorherigen Artikel gezeigt . Es sollte auch beachtet werden, dass die Windows Vault-Daten in ldap gespeichert werden, wenn die Roaming-Richtlinie für Anmeldeinformationen auf dem Computer in der Domäne enthalten ist. Sie können dies in unserem ersten Artikel über DPAPI lesen.
Eine kleine Ergänzung: Damit das Skript ordnungsgemäß funktioniert, müssen Sie höchstwahrscheinlich die alten Python-Links installieren:
apt install python-construct.legacy
Spickzettel
Um Kennwörter IE, Edge sowie in Windows gespeicherte Kennwörter zu entschlüsseln, müssen Sie Folgendes abrufen:
Tresorverzeichnis c:\Users\<user>\AppData\Local\Microsoft\Vault\<GUID>\
Katalog mit Hauptschlüsseln c:\Users\<user>\AppData\roaming\microsoft\Protect\<SID>\
Inhalt des Registrierungsschlüssels HKEY_USERS\<SID>\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 HKEY_USERS>\<SID>\Software\Microsoft\Internet Explorer\typedurls
Darüber hinaus müssen Sie das Benutzerkennwort oder den Domain-Papi-Sicherungsschlüssel für die Entschlüsselung ohne Kennwort kennen.