Wie sicher sind meine Kennwörter im Browser? (DPAPI)

Häufig fragen mich Kunden, wie sicher Ihre Kennwörter im Webbrowser gesichert sind. Es ist ein Thema, welches immer wieder aufkommt. Die einen sagen, es ist unsicher, die Kennwörter im Browser zu speichern. Die anderen sagen, dass es sicher ist. Was ist denn nun eigentlich richtig?

Um zu verstehen, wie sicher es ist, müssen wir das Ganze etwas genauer anschauen.

Für die Verschlüsselung der Kennwörter werden heute bei den gängigen Browsern (wie beispielsweise Mozilla Firefox, Google Chrome, Microsoft Edge Chromium) sichere Verschlüsselungsverfahren verwendet. Google Chrome und Microsoft Edge Chromium nutzen beispielsweise DPAPI, wo alles mit AES256 verschlüsselt wird. Das heisst, diese können nicht ohne den richtigen Schlüssel entschlüsselt werden. Jetzt stellt sich aber die Frage, wie der Schlüssel gesichert wird.

DPAPI

Um es für einen Benutzer bei Windows einfacher zu machen, verwenden mehrere Browser heute DPAPI. DPAPI steht für Data Protection Application Programming Interface und wird von vielen Windows Anwendungen verwendet, um „Geheimnisse“ zu schützen.

Dazu zählt unter anderem folgendes:

  • Zugangsdaten von verschiedenen Webbrowsern (z.B. auf Chromium basierte und Internet Explorer)
  • Kennwörter für E-Mail-Konten in Outlook, Windows Mail, Windows Mail, usw.
  • Kennwörter für drahtlose Netzwerke
  • Private Schlüssel für Encrypting File System (EFS), Verschlüsselung von E-Mails S-MIME, Zertifikate anderer Benutzer, SSL/TLS in Internet Information Services
  • Netzwerk-Passwörter im Credential Manager

DPAPI ist bei Entwicklern sehr beliebt, da es für Entwickler sehr einfach ist, Daten verschlüsselt auf dem Computer zu speichern, ohne sich Gedanken darüber zu machen, wie der Schlüssel gesichert werden muss. Das übernimmt DPAPI. Bei DPAPI werden diese Schlüssel je nach Fall, mit den Anmeldegeheimnissen des Benutzers oder mit den Domänenauthentifizierungsgeheimnissen des Systems gesichert.

Szenarien

Szenario 1

Wir haben einen Computer, welcher mit einer Domäne verbunden ist. An diesem Computer arbeitet normalerweise der Benutzer marius@gotraining.lab.

Wenn jemand das Kennwort des Benutzers kennt, kann dieser sich anmelden und die Kennwörter beispielsweise mit dem Tool ChromePass in Klartext auslesen.

Szenario 2

Wir haben einen Computer, welcher mit einer Domäne verbunden ist. An diesem Computer arbeitet normalerweise der Benutzer marius@gotraining.lab. Der Computer wird vom Netzwerk getrennt und die Cached Credentials des Benutzers werden mit Mimikatz verändert, damit wir uns am Computer anmelden können. Wir können uns jetzt zwar am Computer anmelden, lesen können wir die Kennwörter jedoch nicht mehr. Das liegt daran, dass diese zum Teil mit dem Kennwort-Hash des Benutzers verschlüsselt sind. Und diese natürlich nicht mehr übereinstimmen, nachdem wir das Kennwort für die Anmeldung geändert haben. So ist ein Entschlüsseln der Kennwörter nicht mehr möglich.

Szenario 3

Wir haben einen Computer, welcher mit einer Domäne verbunden ist. An diesem Computer arbeitet normalerweise der Benutzer marius@gotraining.lab. Wir sind Domänen Administrator in der Domäne.

Zuerst exportieren wir an einem Domain Controller der Domäne, den DPAPI Domain Backup Key. Dieser wird normalerweise automatisch verwendet, wenn ein Benutzer sein Kennwort ändert und nicht mehr auf seinen Hauptschlüssel für DPAPI zugreifen kann. Dann wird der Hauptschlüssel mit dem DPAPI Domain Backup Key wiederhergestellt.

mimikatz # lsadump::backupkeys /export

Als nächstes melden wir uns am Computer des Benutzers marius@gotraining.lab mit einem Administrator an und suchen nach der Datei mit dem Masterkey für Chrome. Diese Dateien liegen auf einem Computer mit Windows 10 im folgenden Verzeichnis:

%APPDATA%\Microsoft\Protect\{SID}

→ {SID} = Security Identifier, ein eindeutiger Schlüssel für jeden Benutzer auf einem Windows System

Desto mehr Systeme DPAPI verwenden, desto mehr Dateien gibt es auf dem System. Es ist auf den ersten Blick auch nicht ersichtlich, für welche Anwendung diese ist. Ob dieser Computer mit dem Netzwerk verbunden ist oder nicht spielt keine Rolle, so lange wir den DPAPI Domain Backup Key und Zugriff auf das Verzeichnis haben.

Um den richtigen Schlüssel zu finden, müssen wir alle Dateien durchprobieren. Dazu verwenden wir Mimikatz und entschlüsseln die Masterschlüssel mit dem DPAPI Domain Backup Key.

mimikatz # dpapi::masterkey /in:"C:\Users\marius\AppData\Roaming\Microsoft\Protect\S-1-5-21-1121231705-3409651593-2885864105-1433\f880a378-48ac-4da9-88a8-bd235d3d90c8" /pvk:"C:\mh\ntds_capi_0_aaa7f559-88b7-40fc-842d-509f36f16e33.keyx.rsa.pvk"

Den entschlüsselten Masterkey verwenden wir als nächstes in Mimikatz um die Login Daten von Chrome zu entschlüsseln. Ist der Schlüssel richtig, werden die Kennwörter in Klartext angezeigt.

mimikatz # dpapi::chrome /in:"c:\users\marius\appdata\local\Google\Chrome\User Data\Default\Login Data" /masterkey:0e24198b9327bb5b5d2e6acba53da68328039eceefeb550dad767c3fec54ef7accee83057d502464c7300a0ffecfb1f1c33b3a1ddf9bc79f525c2526404f4252

Fazit

Was ist jetzt mit unseren Kennwörtern, welche im Browser gespeichert werden? Sind diese nun sicher?

Ja, die Kennwörter sind Stand heute sicher verschlüsselt. Ob der Schlüssel sicher gespeichert ist, kommt darauf an, gegen wen ich mich schützen möchte.

Jeder, der sich mit den aktuellen Anmeldeinformationen des Benutzers anmelden kann, hat vollen Zugriff auf diese Kennwörter. Weiter haben alle, welche in der Domäne an den DPAPI Backup Key herankommen, ebenfalls vollen Zugriff. Vor allem haben diese Benutzer Zugriff auf alle Kennwörter von allen Benutzern in der ganzen Domäne. Auch, wenn diese ihr Kennwort ändern.

Wenn Sie sicher gehen wollen, dass niemand so einfach an Ihre Kennwörter ran kommt, müssen Sie Ihre Kennwörter zusätzlich schützen. Das kann durch ein Master-Kennwort im Browser (falls dieser das unterstützt) erfolgen oder durch die Verwendung eines Passworttresors mit zusätzlicher Anmeldung, welche nicht mit DPAPI abgesichert ist. Wobei das Master-Kennwort natürlich auch sicher sein muss. Weiter sollte die Festplatte des Systems verschlüsselt sein. Somit ist ein Offline Angriff auf das System wesentlich schwieriger.

Wenn Sie mehr Sicherheit haben möchten, sollten Sie auf die AutoFill Funktion verzichten und ein Passworttresor ohne Browser Integration nutzen. Denn hier sind schon mehrere Fälle bekannt. Das gilt natürlich für jeden Passworttresor, der eine direkte Verbindung zum Browser hat.

Für die höchste Sicherheit nutzen Sie ein Passworttresor getrennt vom Browser, noch besser auf einem anderen Gerät. Oder am besten, Sie können sich 100 zwanzigstellige Kennwörter merken. Letzteres ist aber eher unrealistisch.

Meine klare Empfehlung ist, Kennwörter getrennt vom Browser zu speichern und für jeden Dienst, der es zulässt, Mehr-Faktor-Authentifizierung zu verwenden. Auch für den Passworttresor selbst, wenn dieser das unterstützt.

Quellen

Mimikatz
https://github.com/gentilkiwi/mimikatz

ChromePass
https://www.nirsoft.net/utils/chromepass.html

Windows Data Protection
https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)

Microsoft Edge password manager security | Microsoft Docs
https://docs.microsoft.com/en-us/deployedge/microsoft-edge-security-password-manager-security

Chrome Security FAQ (googlesource.com)
https://chromium.googlesource.com/chromium/src/+/master/docs/security/faq.md#Does-the-Password-Manager-store-my-passwords-encrypted-on-disk

Wie Viren AutoFill-Daten von Browsern stehlen | Offizieller Blog von Kaspersky
https://www.kaspersky.de/blog/browser-data-theft/19891/

Informationen zum Autor: Marius Hamborgstrøm

Im Jahre 2014 ist es mir gelungen goSecurity von meinem Talent zu überzeugen. Als Experte für Penetration Tests konnte ich schon viele Schwachstellen aufdecken, bevor dies einem Hacker gelungen ist. Zudem bin ich für die Gestaltung und die Durchführung unserer goTraining-Kurse Hack to PROTECT (H2P), Hack to PROTECT [ADVANCED] (H2PA) und Windows Server Hardening (WSH) verantwortlich. Durch meine jahrelange Erfahrung als IT-Leiter einer mittelständischen Bank, kenne ich auch die Seite des Administrators und des IT-Managers in einer Umgebung mit hohen Sicherheitsanforderungen. Aus dieser Erfahrungskiste kann ich die Anforderungen unserer Kunden auch bei Audits und umfassenden Beratungen schnell verstehen und Sie zielgerichtet und praxisnah beraten. Jede Sicherheitslücke bei Ihnen zu finden, bevor dies jemand anderem gelingt, ist leider nicht immer realistisch. Und dennoch ist es mein Antrieb und mein Anspruch.