Skip to content

KeePass oder KeePassX Datenbank Passwort auf Sicherheit testen

Heute will ich mich dem Thema Passwortsicherheit widmen.

Passwörter verwaltet der Kenner nicht nur im Browser oder in der Cloud, sondern im Idealfall lokal.

Unter Windows kommt hier oft KeePass zum Einsatz, unter Ubuntu Desktop häufig KeePassX. Hierbei handelt es sich um Programme zur Kennwortverwaltung.
Beide Tools sichern den Passworttresor mit einem Masterpasswort, welches der Nutzer selbst vergeben kann.

hashcat-keepass-pw

Ich will hier kurz demonstrieren, wie dieses Hauptpasswort auf Sicherheit getestet werden kann. Immerhin enthält es im Normalfall alle eure Zugangsdaten.

KeePass oder KeePassX Passwort knacken ?!

Für das Testen der Passwortsicherheit werden relativ wenige Tools benötigt, eines davon ist Hashcat, welches unter Ubuntu in den Repositories enthalten ist.

Da ich gerade kein funktionales Ubuntu zur Hand habe, sondern unter Windows arbeite, verwende ich einfach das Windows Subsystem for Linux. Dieses kann über die Windows Powershell installiert werden.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Danach kann Hashcat direkt über die Ubuntu Konsole installiert werden. Da für diesen Test nicht die allerneueste Version benötigt wird, kann die Version aus dem Paketmanager installiert werden.

sudo apt-get install hashcat

Nach der Installation lässt sich prüfen, wie hashcat auf eurem Rechner performed.

sudo hashcat --benchmark

hashcat-keepassSollte es zu Fehler kommen, kann ein weiterer Parameter angehangen werden und ihr erhaltet die erwartete Hashrate zum "Knacken" des Passworts.

sudo hashcat --benchmark --force

Eine leistungsstarke Nvidia Grafikkarte ist von Vorteil.

Nachdem dies erledigt ist, wird der Hash des Masterpassworts der KeePass Datenbank benötigt. Dafür gibt es einige Scripte, ich habe mich für keepass2john.py entschieden.

Da ich den Test unter Windows Wsl mache, platziere ich dieses Script und die dazugehörige KDBX Datenbank unter \\wsl$\Ubuntu-18.04\home\profilname und kann somit über Windows unter Ubuntu darauf zugreifen.

Das Script wird nun wie folgt ausgeführt

python keepass2john.py database.kdbx

Ihr erhaltet einen Hashwert, welcher noch etwas nachbearbeitet werden sollte.

Database:$keepass$*2*60000*222*1fa5e92ef046202f54d3a675466be38fb61cdaff21ab367a170eadf4e8f378ae0ee4c1f175

Der Text hinter Database: "$keepass$*2*60000*222*1fa5e92efa4...." wird nun in eine Textdatei keepass.txt kopiert, um sie weiterverarbeiten zu können.

Im nächsten Schritt kann mit Hashcat quasi das Passwort erraten werden, allerdings muss zunächst die richtige Methode gewählt und eine Wortliste besorgt werden. Hashcat bringt bereits die gängigsten Methoden mit, diese müssen nur angegeben werden.

hashcat --help | grep -i "KeePass"
    13400 | KeePass 1 (AES/Twofish) and KeePass 2 (AES)      | Password Managers

   
Im letzten Schritt wird nun eine Passwortliste benötigt, welche für das "Durchprobieren" von Passwörtern verwendet wird.

wget hxxp://downloads.skullsecurity.org/passwords/rockyou.txt.bz2
bunzip2 rockyou.txt.bz2

Die RockYou Liste ist eine bekannte Liste aus dem Jahr 2009 mit ca. 32 Millionen unverschlüsselten Passwörtern.

hashcat

Der Vorgang kann jetzt endgültig gestartet werden.

Der Startbefehl besteht aus Methode (KeePass) und Angriffsmodus (0 -> Wörterbuch)
 

sudo hashcat --force -a 0 -m 13400 keepass.txt rockyou.txt

    Dictionary cache built:
    * Filename..: rockyou.txt
    * Passwords.: 14344391
    * Bytes.....: 139921497
    * Keyspace..: 14344384
    * Runtime...: 2 secs

    - Device #1: autotuned kernel-accel to 128
    - Device #1: autotuned kernel-loops to 256
    [s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit => [s]tatus [p]ause [r]esume [b]ypass [c]heckpoint [q]uit =>

Mit der "Taste s" kann jederzeit der aktuelle Status abgerufen werden.

    Session..........: hashcat
    Status...........: Running
    Hash.Type........: KeePass 1 (AES/Twofish) and KeePass 2 (AES)
    Hash.Target......: $keepass$*2*60000*222*1fa5e92efa4e5597faf8204900122...c1f175
    Time.Started.....: Fri Mar 20 12:04:53 2020 (49 secs)
    Time.Estimated...: Sat Mar 21 06:51:14 2020 (18 hours, 45 mins)
    Guess.Base.......: File (rockyou.txt)
    Guess.Queue......: 1/1 (100.00%)
    Speed.Dev.#1.....:      212 H/s (10.04ms)
    Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
    Progress.........: 10240/14344384 (0.07%)
    Rejected.........: 0/10240 (0.00%)
    Restore.Point....: 10240/14344384 (0.07%)
    Candidates.#1....: vivien -> bimbim
    HWMon.Dev.#1.....: N/A

   
Nun heißt es warten, je nach Leistung der CPU oder GPU kann dies dauern. Da aber viele gerade massig Zeit zur Verfügung haben, sollte dies kein Problem sein.

Gerne könnt ihr weitere Methoden ausprobieren oder andere Listen verwenden, da habt ihr freie Wahl. Im Hashcat Wiki findet ihr jede Menge Anleitungen zu dieser Thematik.

Ophcrack - Passwörter cracken mithilfe von Rainbow Tables

Es soll ja vorkommen, dass aus undefinierbaren Gründen, Passwörter verloren, vergessen oder verschlampt werden. Ist dieser Fall erst einmal eingetreten, ist guter Rat teuer. Ganz umsonst hingegen ist das Open Source Tool ophcrack. Dieses kostenlose Tool hilft beim Knacken von Windows-Passwörtern und das geht dank Regenbogentabellen (Rainbow Tables) und Time-Memory-Tradeoff sogar recht flott.

ophcrack

Für  LM-Hashes oder NTLM-Hashes sind Regenbogentabellen frei erhältlich und können bei der Installation heruntergeladen werden. Als Alternative kann zusätzlich bei kurzen Passwörtern eine Brute-Force-Attacke gefahren werden.

Ophcrack 3.6 unterstützt neben dem Wiederherstellen von Windows Passwörtern (Beispielvideo), das Einlesen folgender Dateiformate:

  • HASH
  • PWDUMP Datei
  • Session file
  • Enrypted SAM (Security Accounts Manager unter Windows meist hier zu finden: "%windir%\system32\config\SAM")
  • Local SAM mit samdump2
  • Local SAM mit pwdump6
  • Remote SAM

Beim Entschlüsseln mehrerer Passwörter wird ebenfalls eine grafische Übersicht erstellt, welche unter anderem Komplexität und Länge der einzelnen Passwörter aufschlüsselt. Verfügbar ist das Programm als Live CD oder als installierbare Version für Windows oder Linux. Das Tool ist natürlich ausschließlich für den privaten Bereich gedacht, alles andere ist illegal.

Download ophcrack


Einfach MD5 Hashes cracken, Google machts möglich

MD5 Hashes knacken war bis vor kurzem noch mit etwas Rechenleistung verbunden. Die ständig wachsende Cloud macht diese Rechenpower inzwischen für viele zugänglich, so kann heutzutage beispielsweise die Amazon Cloud für solche Vorgänge missbraucht werden. Es existieren auch andere Wege um MD5 zu cracken, diese sind aber aufwendig umzusetzen.

Juuso Salonen ein findiger Programmierer hat einen pragmatischen Weg gefunden die Cloud zu nutzen und diesen in einem Ruby Script namens BozoCrack verewigt. Lustiger weise ist alles was das Script macht: googlen.

Doch was ist MD5 überhaupt? Hierzu eine kurze Erklärung: An einem Dienst oder PC muss man sich oft mit einem Benutzernamen und einem Passwort identifizieren. Würde man das Passwort im Klartext abspeichern, könnte es theoretisch jeder lesen und der Rechner oder Dienst wäre für jeden zugänglich. Um dies zu verhindern speichert man das Passwort in einem sogenannten Hash ab. Bereits 1991 hat man dazu Message-Digest Algorithm 5 entwickelt (MD5), dieser Algorithmus erzeugt aus Passwörtern oder Nachrichten eine 128-Bit Prüfsumme. In der Praxis wird bei einer Anmeldung euer Password sofort in MD5 umgerechnet und mit dem gespeicherten MD5 Hash verglichen, stimmen sie überein bekommt ihr Zugriff.

Solche Hashes kann man einfach online generieren

hash-erstellen

hash-erstellen

Wie oben zu erkennen, habe ich den MD5 Hash zu "Peter Pan" generiert, dieser lautet "b1f7e8c5c5d12670675975e769ec11b9". Gibt man diesen Wert nun bei Google ein wird man so gut wie immer auf die dort hinterlegte Nachricht stoßen. Es ist also recht simpel MD5 Hashwerte zu knacken, mehr als Google ist dazu nicht notwendig. Einzig die Idee den Vorgang zu automatisieren ist neu.

Zu groß muss die Angst um die eigenen Passwörter jedoch nicht sein, da viele Systeme ihre Hashes mit einem zusätzlichen Salt String versehen.