====== Wörterbuchangriff auf ein Passwort-Leak ======
===== Nicht aufgepasst =====
Die Firma Wolkendienste GmbH hat nicht aufgepasst und eine Datei mit gehashten Passwörtern verloren - hier ist sie {{ :faecher:informatik:oberstufe:netzwerke:pthack:john:pws.zip |}}
===== Einstieg in "john" =====
John ist ein Programm, mit dem man einen Wörterbuchangriff (oder auch einen Brute-force Angriff) auf eine solche Passwortliste ausführen kann. Bei Kali-Linux ist John bereits dabei.
Die einfachste Weise, ''john'' zu verwenden, wenn die gehashten Passworte in der Datei ''passworte'' gespeichert sind, ist:
john passworte
Dabei verwendet ''john'' ein mit dem Programm ausgeliefertes Wörterbuch, um Passwörter zu hashen und mit den gespeicherten Passwörtern zu vergleichen.
----
{{:aufgabe.png?nolink |}}
=== (A1) ===
* Entpacke die Datei mit den geleakten Kennwörtern und öffne sie mit einem Texteditor - welche Struktur hat sie?
* Führe einfachen ''john'' Befehl von oben mit der entpackten Datei aus.
* Erstelle ein kurzes Ablaufdiagramm: Wie geht das ''john'' schrittweise vor, um zu ermitteln, welches Passwort ein Benutzer in der Passwortdatei hat?
* Analysiere die Ausgaben des Programms beim Programmstart. Wieviele Hashes wurden geladen und welche Informationen über diese hat ''john'' bereits vor dem Beginn des Angriffs ermittelt (Du kannst Informationen zu CUDA Support und Warnungen ignorieren)?
* Nachdem ''john'' einige (sehr einfach Passworte) ermittelt hat, probiert es weitere Passworte aus. Breche den Vorgang mit ''STRG-C'' ab, führe den ''john'' Befehl anschließend erneut aus. Analysiere wieder, wieviele Hashes geladen wurden, achte darum wieviele Hashes ''john'' als "remaining" betrachtet - was fällt auf?
John führt Buch über die bereits ermittelten Kennworte - geknackte Hashes werden nicht erneut geladen, das Programm merkt sich auch, wie weit es beim probierten gekommen ist. Mit dem Befehl ''john --show passworte'' kann man sich bereits gefundene Kennworte anzeigen lassen.
Um ''john'' in seinen Ausgangszustand zu versetzen, kann man die Dateien im Verzeichnis ''~/.john'' löschen.
===== Wörterbücher und Kombinationen =====
Die sehr einfachen Kennworte hat ''john'' fast unmittelbar nach dem Start bereits ausgegeben - diese standen in seinem Standardwörterbuch weit oben. Ob ein Angriff zum Erfolg führt hängt sehr davon ab, ob man ein Wörterbuch verwendet, das zur Zielgruppe passt. Wenn man beispielsweise ein eigenes Kennwort vergessen hat, sich aber noch an Bestandteile erinnert, kann man sich ein "maßgeschneidertes" Wörterbuch für dieses Zweck schreiben.
Weiß man wenig über die verwendeten Kennworte, kann man auf umfangreichere Wortlisten wie von [[https://github.com/berzerk0/Probable-Wordlists/blob/master/Downloads.md|Probable Wordlists]] oder welche von [[https://wiki.skullsecurity.org/index.php/Passwords|dort]] zurückgreifen. Achtung, solche Listen sind schnell sehr groß. Recht populär bei überschaubarer Größe ist z.B. ''rockyou.txt''.
----
{{:aufgabe.png?nolink |}}
=== (A2) ===
* Lade die Datei ''rockyou.txt.bz2'' herunter und entpacke sie
* Schau dir ihren Inhalt an
* Führe den Befehl ''john %%-%%%%-%%wordlist=%%"%%rockyou.txt%%"%% passworte'' aus und begutache das Ergebnis - wie erklärst du dir das?
----
{{:aufgabe.png?nolink |}}
=== (A3) Eigene Kennworte testen ===
Mit dem Befehl
openssl passwd -5 -salt Salt Passwort
kannst du zum Passwort //Passwort// den mit //Salt// gesalzenen Hash erzeugen.
Passe //Salt// und //Passwort// entsprechend an und probiere den Befehl aus. Nun kannst du weitere Zeilen in die passworte-Datei einfügen, um eigene Kennwörter zu testen.
* Teste zunächst mit einfachen Worten
* Mache die Kennwörter dann länger und besser