KeePass angreifen und härten
Ein Blogbeitrag über mögliche Angriffe auf KeePass in der Standardkonfiguration und Härtungsmassnahmen.
Nach wie vor bereiten Passwörter und deren sichere Verwaltung zahlreichen Unternehmen grosse Probleme. Dabei gibt es zahlreiche Empfehlungen bezüglich Anforderungen an die Komplexität der Passwörter. Bei der Menge an verschiedenen und sicheren, und somit auch komplexen, Passwörtern ist es praktisch unmöglich diese auswendig zu lernen und die Verwendung eines Passwortmanagers wird dabei fast zur Pflicht. Hierzu kommt bei vielen Unternehmen der Open Source Passwortmanager KeePass zum Einsatz. Dieser vereinfacht das Verwalten der Passwörter massiv, bietet aber in der Standardkonfiguration zahlreiche Angriffsmöglichkeiten. In diesem Blog werden diese Angriffsmöglichkeiten aufgezeigt und auch Härtungsmassnahmen in KeePass, um diesen entgegenzuwirken.
Um die möglichen Angriffe aufzuzeigen, installieren wir die aktuellste Version (2.49 am 30.09.2021) von KeePass und erstellen eine neue Datenbank mit einem Masterpasswort in der Standardkonfiguration. Findet ein Angreifer eine solche Datenbank (.kdbx), so kann er diese zu sich transferieren und mit Hilfe von keepass2john (bestandteil von John the Ripper) den Hash des Masterpasswortes extrahieren, welcher nachher mit Hashcat oder John the Ripper gecrackt werden kann.
Das Cracken des Passwortes hängt natürlich davon ab, ob sich das Passwort in der verwendeten Wörterliste befindet. Dennoch kann das Cracken durch das Setzen der Key Transformation auf 1 Second Delay deutlich erschwert werden (File -> Database Settings -> Tab Security). Durch Anklicken der Schaltfläche '1 Second Delay' berechnet KeePass die Anzahl der Iterationen, die beim Laden/Speichern einer Datenbank zu einer Verzögerung von einer Sekunde führen. Die Performance des Crackens wird hiermit massiv verringert und die Key Derivation Function Argon2d und Argon2id werden sogar von keepass2john aktuell nicht unterstützt. Somit kann einem möglichen Cracken effektiv entgegengewirkt werden.
Eine weitere Möglichkeit für einen Angreifer ist es, einen Keylogger einzusetzen. Für einen kurzen Proof-of-Concept verwenden wir den Keylogger Task des Command-and-Control Frameworks Covenant und das Auslesen des Masterpasswortes ist ein Leichtes.
Auch dieser Angriff kann glücklicherweise relativ einfach verhindert werden. Dazu markiert man die Checkbox Tools -> Options -> Security Tab -> Advanced -> Enter master key on secure desktop und die Eingabe des Masterpasswortes kann nicht mehr von einem Keylogger mitgelesen werden.
Das Tool KeeThief bietet eine weitere Möglichkeit, das Masterpasswort aus dem Arbeitsspeicher auszulesen. Dazu muss der KeePass Prozess ausgeführt werden, die Datenbank entschlüsselt sein und der Angreifer im Kontext des Users Code Execution erlangen. Es werden dazu jedoch keine lokalen Administratorenrechte benötigt.
Auch das erfolgreiche Ausführen des Tools KeeThief kann mit einer Option unterbunden werden, diese ist Tools -> Options -> SecurityTab -> Advanced -> Remember master password (in encrypted form) of a database while it is open, welche deaktiviert werden sollte.
Auch wenn dies zumindest das Ausführen des Tools KeeThief behindert, so löst es nicht das Grundproblem, welches solche Angriffe überhaupt ermöglicht. Der KeePass Prozess läuft im Kontext des Users und somit kann in demselben Kontext auf diesen Prozess zugegriffen werden. Das Tool KeeFarce nutzt dies, um mithilfe von DLL Injection Code Execution im Kontext des KeePass Prozesses zu erreichen und dann die Passwörter in der KeePass Datenbank auszulesen.
Auch können verwendete Passwörter aus Keepass mit dem ClipboardMonitor von Covenant nach wie vor sehr einfach ausgelesen werden. Der ClipboardMonitor zeigt einem Angreifer, was der Benutzer aus welchem Fenster in seine Zwischenablage kopiert. Da bei KeePass ein Passwort kurzzeitig in die Zwischenablage gelegt werden kann, taucht es in der Ausgabe im Klartext auf.
Zusammengefasst löst ein Passwortmanager wie KeePass das grundlegende Problem bezüglich des Umgangs mit komplexen Passwörtern und ermöglicht das Erfüllen der Anforderungen an deren Komplexität. Deshalb ist die Verwendung auch dringend empfohlen. Jedoch ergeben sich mit der Einführung von Software auch immer wieder neue Angriffsflächen und Risiken. Die in diesem Blog aufgezeigten Härtungsmassnahmen können einigen gut entgegenwirken. Diese Massnahmen sind:
- Key Transformation Settings
- Secure Desktop Setting
- Remember Master Password Setting
Auch wenn diese Massnahmen nicht sämtliche Angriffe unterbinden, erschweren sie einen Angriff auf KeePass doch erheblich und sind somit sehr sinnvolle Massnahmen. Das Bewusstsein über die verbleibenden Risiken von KeePass trotz Härtung ermöglich dabei weitere, ganzheitliche Massnahmen zum Schutze der Organisation einzuleiten.