
Markov-Modell-basierter Passwort-Rater in C, der Kandidaten nach Wahrscheinlichkeit aufzählt und die wahrscheinlichsten Passwörter zuerst generiert, um Hashes mit Hashcat oder John zu knacken.
OMEN ist ein auf einem Markov-Modell basierender Passwort-Rater, der in C geschrieben wurde. Er generiert Passwortkandidaten entsprechend ihrer Auftrittswahrscheinlichkeiten, d. h. er gibt die wahrscheinlichsten Passwörter zuerst aus. OMEN verbessert die Rate-Geschwindigkeit im Vergleich zu bestehenden Ansätzen erheblich. Wenn Sie an den Details interessiert sind, wie OMEN bestehende Markov-Modell-basierte Ansätze zum Passwort-Raten verbessert, lesen Sie bitte OMEN: Faster Password Guessing Using an Ordered Markov Enumerator.
OMEN besteht aus zwei separaten Programmmodulen: createNG und enumNG. createNG
berechnet n-Gramm-Wahrscheinlichkeiten basierend auf einer gegebenen Passwortliste und speichert sie
auf der Festplatte. Basierend auf diesen Wahrscheinlichkeiten zählt enumNG neue
Passwörter in der korrekten Reihenfolge (absteigend) auf.
Verwenden Sie eine aktuelle Linux-Version und stellen Sie sicher, dass Sie git (Git-Versionskontrollsystem), gcc (GNU Compiler Collection) und make (GNU Make) installiert haben. Unter Ubuntu Linux können Sie es installieren über:
$ sudo apt-get install build-essential git
Prüfen Sie den Quellcode aus über:
$ git clone https://github.com/RUB-SysSec/OMEN.git OMEN
Wechseln Sie in das neu erstellte Verzeichnis OMEN und führen Sie aus:
$ make
Wenn die Kompilierung erfolgreich ist, finden Sie createNG und enumNG im aktuellen Verzeichnis.
.
├── alphabetCreator
├── createNG
├── docs
│ ├── CHANGELOG.md
│ ├── LICENSE
│ └── screenshots
├── enumNG
├── evalPW
├── makefile
├── README.md
└── src
├── alphabetCreator.c
...
Wenn Sie möchten, können Sie nun den src-Ordner und die makefile-Datei entfernen, sie werden nicht mehr benötigt.
Eine kurze Installationsanleitung mit Cygwin unter Windows 10 finden Sie hier.
Bevor man Passwörter generieren kann, müssen die n-Gramm-Wahrscheinlichkeiten mit
createNG geschätzt werden. Um die Wahrscheinlichkeiten mit den Standardeinstellungen zu berechnen, muss createNG
mit einem Pfad zu einer Passwortliste aufgerufen werden, die trainiert werden soll:
$ ./createNG --iPwdList password-training-list.txt
Jedes Passwort der gegebenen Liste muss in einer neuen Zeile stehen. Das Modul
liest und bewertet dann die Liste und generiert einige Dateien. Neben einer Konfigurationsdatei (createConfig), die die verwendeten Einstellungen speichert (in diesem Fall die Standardeinstellung), werden mehrere Dateien erstellt, die Informationen über die Gramme und die Passwortlänge enthalten. Diese Dateien haben die Erweiterung '.level':
Die Wahrscheinlichkeiten jedes n-Gramms und die Längen werden auf Level zwischen 0
(am wahrscheinlichsten) und 10 (am unwahrscheinlichsten) abgebildet. Sobald diese Dateien erstellt sind, kann enumNG verwendet werden, um eine Liste von Passwörtern sortiert nach Wahrscheinlichkeiten zu generieren. Derzeit unterstützt enumNG drei Betriebsmodi: file, stdout, simulated plaintext attack. Im Standardmodus von enumNG wird eine Liste von Passwort-Rateversuchen basierend auf diesen Leveln erstellt. Mit dem Befehl
$ ./enumNG
werden 1 Milliarde Passwörter generiert und in einer Textdatei gespeichert, die im Ordner 'results' zu finden ist. Die Passwörter in dieser Datei sind nach Level (d. h. nach Wahrscheinlichkeit) sortiert. Da gängige Texteditoren nicht in der Lage sind, solch riesige Dateien zu verarbeiten, wird für Tests empfohlen, die Anzahl der erstellten Passwörter zu reduzieren. Dies kann mit dem Argument -m erreicht werden.
$ ./enumNG -m 10000
Es wird eine sortierte Liste mit nur 10.000 Passwörtern erstellt. Wenn Sie daran interessiert sind, die Passwörter auf den Standardausgabestream (stdout) auszugeben, verwenden Sie das Argument -p.
$ ./enumNG -p -m 10000
Wenn Sie daran interessiert sind, die Rate-Leistung gegen ein Plaintext-Passwort-Testset zu evaluieren, verwenden Sie das Argument -s. Bitte beachten Sie: In diesem Modus profitiert OMEN vom adaptiven Längenplanungsalgorithmus, der Live-Feedback einbezieht, welches im file- und stdout-Modus (aufgrund des fehlenden Feedback-Kanals) nicht verfügbar ist.
$ ./enumNG -s=password-testing-list.txt -m 10000
Das Ergebnis dieser Evaluierung finden Sie im Ordner 'results'.
Beide Module bieten einen Hilfedialog, der mit dem Argument -h oder --help angezeigt werden kann.
Wie kommt man von $2a$10$HNYF4KajSTqxIP/KoiB5tOCVeKUgvscTh32hhAmppFk4T/USmI2B. zu "GoodOMEN!123"?
OMEN wurde für akademische Anwendungsfälle entwickelt, wie z. B. die Verbesserung probabilistischer Passwortmodellierung, die Schätzung von Ratezahlen oder Passwortstärke, im Allgemeinen zur Verbesserung der Passwortsicherheit. Missbrauchen Sie diese Software nicht, um die Privatsphäre anderer zu verletzen oder gegen das Gesetz zu verstoßen.
Beliebte Hash-Evaluatoren wie Hashcat und John the Ripper unterstützen Hunderte von Hash- und Verschlüsselungsformaten und könnten aufgrund ihrer Unterstützung für das Lesen von Passwortkandidaten über ihren Standardeingabestream (stdin) leicht integriert werden.
$ ./enumNG -p -m 10000 | ./hashcat64.bin ...
oder
$ ./enumNG -p -m 10000 | ./john --stdin ...
Für optimale Rate-Leistung sollten Sie in Betracht ziehen, createNG mit einer Passwortverteilung zu trainieren, die der ähnelt, die Sie knacken möchten.
Bitte beachten Sie: Die Verwendung probabilistischer Passwortmodellierung zum Knacken von Passwörtern sollte im Allgemeinen nur gegen langsame Hashes (z. B. bcrypt, PBKDF2, scrypt oder Argon2) in Betracht gezogen werden, bei denen die Anzahl der möglichen Rateversuche begrenzt ist, oder bei sehr gezielten Angriffen. Im Gegensatz dazu sind bei sehr schnellen Hashes (MD5, SHA-1 oder NTLM) die Verwendung von guten Wörterbüchern und Mangling-Regeln (z. B. best64.rule) der richtige Weg.
Wenn Sie an diesem Thema interessiert sind, sollten Sie die folgenden Paper und deren verwandte Arbeiten lesen (diese Liste ist unvollständig, Sie können durch Erweiterung helfen):
Probabilistic Context-Free Grammars