Password Cracking – It’s all about the rules!

Inhaltsverzeichnis

Password Cracking 2.0

Password Cracking bietet neben den im ersten Artikel genannten Methoden noch eine Vielzahl an weiteren Möglichkeiten, Passwörter zu cracken: Regeln, Wörterlisten, Hybrid- und Kombinationsangriff. Diese Tools bilden nur einen kleinen Bestandteil aller Möglichkeiten in Hashcat ab, stellen jedoch die Grundlage für weitere tiefergehende Angriffe dar, die in weiteren Artikeln ausgeführt werden.

Vorgehen

Um effizient Hashcracking betreiben zu können, bedarf es eines systematischen Vorgehens: Dokumentation und Notizen, so nervig man sie auch finden mag, sind essenziell, um Fortschritte im Hashcracking zu erzielen. Hashcracking ist ein Thema, das sehr viel Raum für Forschung bietet und viele Methoden und Optimierungen sind noch unentdeckt. Daher ist es sinnvoll, sein eigenes Vorgehen zu dokumentieren, um nachher Verfahren anpassen bzw. verbessern zu können. Auch hilft die exakte Dokumentation dabei, eigene Ergebnisse besser verstehen zu können bzw. auf neue Gegebenheiten anzupassen.

Du willst auf dem Weg zum Penetration Tester keine Zeit verschwenden?
In unseren von erfahrenen Penetration Testern geleiteten Kursen lernst du alles, was du für wirklich dafür brauchst.
Zum Junior Penetration Tester Intensivkurs
Das Hashcracking gliedert sich in mehrere Phasen, die sich von der Werkzeugwahl und Methodik unterschieden und nur in ihrem Zusammenspiel erfolgversprechend sind:

Extraktion und Identifizierung

Zu Beginn kommt es auf die korrekte Extraktion der Hashes und ihre Identifizierung an. Außerdem müssen die Hashes in ein Hashcat-taugliches Format gebracht werden. Hierzu empfehlen sich Tools wie Hash-Identifier oder die Hashcat-Beispiele. Die richtige Formatierung ist wichtig, um die korrekte Funktionsweise von Hashcat sicherzustellen.

Evaluierung und Angriffsplan

Anschließend müssen die Hashstärke (Handelt es sich um einen langsamen oder schnellen Hash?) und die Geschwindigkeit des eigenen Cracking-Rigs ermittelt werden, um eine der sinnvollen Strategien auszuwählen. Grundsätzlich gilt: Langsame Hashes müssen gezielt angegriffen werden – OSINT ist hier von entscheidender Bedeutung. Schnelle Hashes können allgemeiner angegriffen werden, denn aufgrund der hohen Geschwindigkeit ist es möglich, wesentlich mehr durchzuprobieren.

Verschiedene Angriffe

Nach den ersten beiden Schritten wird der Hash angegriffen. Am Anfang beginnt man bei schnellen Hashes entweder mit einem Bruteforce auf 7 bis 8 Zeichen (abhängig von der eigenen Rechenleistung) oder startet direkt mit Wörterbüchern und Regeln. Bei diesen ersten Angriffen geht es zunächst darum, einen Eindruck von den verwendeten Passwörtern zu bekommen. Darauf basierend werden weitere Attacken geplant. In dieser Phase ist es sinnvoll, neben Passwortlisten auch Wörterbücher in verschiedenen Sprachen (je nach Herkunft der Hashes) zu probieren. So kann man Passwörter oder Passphrasen cracken, die auf Sätzen basieren.

Passwort Analyse

Die gecrackten Passwörter werden analysiert, um Pattern und Strukturen in den Passwörtern zu finden, die das weitere Vorgehen beeinflussen. Hierzu empfehlen sich Tools wie Pipal oder Pack, mit denen sich die gecrackten Passwörter analysieren lassen. Auf diese Weise lassen sich statische Besonderheiten wie Wiederholungen oder besonders häufige Stammwörter identifizieren. Mit den Tools können außerdem eigene Regeln und Masken erzeugt werden, um z. B. auf eine Passwort Policy reagieren zu können.

Gezielte Angriffe

Anschließend werden diese Ergebnisse gezielt verwendet, um passende Wörterbücher/ Passwortlisten auszuwählen und eigene Regeln oder Masken anzuwenden, die das Nutzerverhalten möglichst optimal treffen. Diese Ergebnisse können zusätzlich genutzt werden, um eigene passende Wörterlisten zu generieren. Hierzu eignen sich beispielsweise Cewl oder Crunch.

Fortgeschrittene Angriffe

Um weitere Passwörter zu cracken, können fortgeschrittene Methoden wie Princeprozessor, Maskenprozessor, Keyboard-Walks, eigene Markov-Ketten oder PCFG (Erläuterung hierzu folgt in kommenden Teilen dieser Blogserie) genutzt werden, um die letzten Hashes zu erreichen. Diese Methoden sind jedoch sehr komplex und erfordern ein großes Wissen vom Anwender.

Wiederholung

Anschließend geht man zurück zu Schritt 4 und arbeitet das Schema erneut ab, bis die gewünschte Menge an gecrackten Hashes erzielt wurde. Nun jedoch mit geänderten Parametern und Methoden.

Back to the Roots

Wörterbuchangriffe

Wörterbücher und Passwortlisten stellen die Grundlage von Hashcat’s Funktionsweise dar. Der Wörterbuchangriff ist der wichtigste Modus und die Grundlage der meisten Angriffe. Der Wörterbuchangriff kann vielfältig angepasst werden, um effizienter zu sein: Regeln, Regelketten, zufällige Regeln, Raking oder Loopback sind verschiedene Methoden, die das Passwort Cracken erheblich vereinfachen.


Beim klassischen Wörterbuchangriff werden alle Wörter aus dem Wörterbuch mit den Passworthashes abgeglichen, was durch die Größe des Wörterbuchs beschränkt ist. Zudem gibt es einige Einschränkungen, die die erreichbare Geschwindigkeit drosseln, auf die später detaillierter eingegangen wird.

Regeln

Der klassische Wörterbuchangriff wird deshalb mit Regeln erweitert. Diese Regeln enthalten eine mit einer Programmiersprache vergleichbare Syntax, die Wörter modifizieren, kürzen oder erweitern kann und dadurch unzählige Angriffsoptionen eröffnet. Diese Regeln sind zum Teil schon in Hashcat im Ordner hashcat/rules enthalten und erlauben es, auch mit wesentlich kleineren Wörterbüchern sehr gute Ergebnisse zu erzielen. Die Kombination von Regeln kann zu sehr guten Resultaten führen, zieht jedoch einen immensen RAM & VRAM Verbrauch mit sich. Maximal lassen sich 31 Regeln miteinander kombinieren, dieses Limit wird aber selten ausgereizt.

Persönlich bevorzuge ich diese Regeln:

  • OneRuleToRuleThemAll
  • Pantagrule.random
  • pantagrule.random.royce
  • NSAKEY.v2.dive
  • best64

Syntax

Klassischer Wörterbuchangriff:

				
					hashcat -a0 hashfile.txt Wörterbuch.txt
				
			

Wörterbuchangriff mit Regeln:

				
					hashcat -a0 hashfile.txt Wörterbuch.txt -r Regel.rule
				
			

Wörterbuchangriff mit mehreren Regeln:

				
					hashcat -a0 hashfile.txt Wörterbuch.txt -r Regel01.rule -r Regel02.rule
				
			

Fortgeschrittene Angriffe

Auch fortgeschrittenere Angriffe können mit Regeln realisiert werden, wie z. B. Loopback oder Raking. Diese Angriffe erlauben es, noch besser und effizienter zu cracken, bzw. sind sie in manchen Situationen ein guter Ausweg.

Loopback

Bei Nutzung der Loopback Option werden Passwörter, die gecrackt wurden, so lange dem Wörterbuch hinzugefügt, bis keine neuen Passwörter mehr gefunden werden. Loopback ist eine sehr sinnvolle Methode, die häufig noch eine ganze Menge an weiteren Passwörtern crackt. Die Option wird mit mittels –loopback aktiviert und kann nur in Verbindung mit Regeln angewandt werden (egal ob normal oder selbst generiert). Der Looback kann nur mit dem Wörterbuchangriff zusammen verwendet werden, also Hashcatmodus -a 0

Wörterbuchangriff mit Loopback und Regeln:

				
					hashcat -a0 hashfile.txt Wörterbuch.txt --loopback -r Regel.rule
				
			

Raking

Als Raking bezeichnet man das Verfahren, zufällige Regeln zu generieren und diese anschließend über viele Hashes laufen zu lassen, um neue Regeln zu erzeugen. Das ist dann sinnvoll, wenn man gerade keine weiteren Ideen hat oder um eigene Regeln zu erzeugen, die eigene Bedürfnisse besser treffen.

Der Parameter -g generiert eine Anzahl an zufälligen Regeln und ist eine gute Idee, wenn man gerade keinen neuen Ansatz zum Cracken hat. Auch sonst kann es nie schaden, zufällig generierte Regeln zu nutzten. Um den Ansatz zu vervollkommnen, können zutreffende Regeln auch noch gespeichert werden, um diese zu analysieren oder weiterzuverwenden. Der Befehl lautet –debug-mode=1 –debug-file=matched.rule .

Syntax

Wörterbuchangriff mit Loopback und Regeln:

				
					hashcat -a0 hashfile.txt Wörterbuch.txt --loopback -g Num
				
			

Wörterbuchangriff mit Loopback und zufälligen Regeln und Speicherung von zutreffenden Regeln:

				
					hashcat -a0 hashfile.txt Wörterbuch.txt --loopback -g  --debug-mode=1 --debug-file=matched.rule
				
			

Wörterbücher & Passwortlisten

Ebenfalls von elementarer Bedeutung sind bei Wörterbuchangriffen die namensgebenden Wörterbücher: Ohne die passenden Wörterbücher können keine Passwörter gefunden werden. Jedoch gibt es einiges zu beachten bei Wörterbüchern. Es gilt: weniger ist mehr. Wörterbücher & Passwortlisten werden anhand der Qualität der enthaltenen Wörter bemessen, nicht anhand ihrer Länge und Größe. Die Wörterbücher werden durch Regeln erweitert, sodass die Ursprungsgröße wenig über die Menge an daraus generierten Wörtern aussagt.

Bekannte Wörterbücher

Wörterlisten können entweder von verschiedenen Seiten heruntergeladen oder selbst generiert werden, meine persönlichen Empfehlungen für Wörterlisten sind jedoch:

  • rockyou.txt
  • Hashesorg2019
  • Kaonashi.txt
  • ALM(PasswdOnly)(freq_sorted).txt
 

Sehr großes Wörterbuch:

  • RockYou2021.txt
 

Diese Wörterbücher lassen sich alle sehr gut mit verschiedenen Regeln kombinieren, um gute Ergebnisse zu erzielen.

Gezielte Angriffe

Wenn bekannte Wörterbücher nicht zum Ziel führen oder man einzelne Hashes angreift, macht es Sinn, eigene Wörterbücher zu generieren. Cewl ist hierfür eine gute Möglichkeit.

Cewl

Cewl ist ein Webscraping-tool, dass Webseiten scannt und auf diesen Wörter runterlädt. Dadurch lassen sich Wörterlisten erstellen, die gezielte Angriffe auf Hashes ermöglichen, indem sie zahlreiche Wörter von Webseiten miteinbeziehen, die ansonsten in normalen Wörterbüchern gar nicht berücksichtigt werden.

Syntax:

				
					cewl -d3 -m4 -e -w Wörterliste_name.txt -v https://Web.seite
				
			
Cewl ist ein Webscraping-tool, dass Webseiten scannt

Kombinatorangriffe

Hashcat bietet neben den regelbasierten Angriffen auch noch die Möglichkeit von Kombinator Angriffen. Beim Kombinator Angriff werden Wörter aus zwei Wörterbüchern miteinander kombiniert, also Wörter aus dem zweiten werden an Wörter aus dem ersten Wörterbuch angefügt. Hierbei können auch noch mittels Regeln rechts und links vom hinzugefügten Wort Zeichen hinzugefügt, entfernt oder manipuliert werden. Diese Regeln werden mittels -j für Links und mit -k für Rechts hinzugefügt. Es kann jedoch nur eine Regel pro Parameter hinzugefügt werden, was eine Einschränkung darstellt. Es lassen sich alle Regeln nutzen, die unter https://hashcat.net/wiki/doku.php?id=rule_based_attack aufgeführt werden. Für Kombinator Attacken sind häufig die Regeln am besten geeignet, die Wörter anhängen (Append). Dies ist jedoch immer vom Angriffsziel abhängig und kann aufgrund von lokalen Besonderheiten abweichen.

Der Kombinator Angriff kann mittels Hashcat Erweiterungen in seinen Möglichkeiten neu angewandt werden, wodurch mehr als zwei Wörterbücher miteinander kombiniert werden können. Leider beherrscht der dem Kombinator-Modus zugrunde liegende Hashcat-Kernel keinen Stdin-Modus, weshalb der Kombinator-Angriff wiederholend nicht in einer Pipe angewandt werden kann. Deshalb gibt es Erweiterungs-Scripte wie CombinatorX, die es erlauben, mehr als 2 Wörterbücher miteinander zu kombinieren. Mit diesem Script können bis zu 8 Wörterbücher miteinander kombiniert werden, wodurch viele Passphrasen oder Passwort-Sätze angreifbar sind.

Syntax:

Kombinatorangriff mit zwei Wörterbüchern:

				
					hashcat -a0 hashfile.txt Wörterbuch01.txt Wörterbuch02.txt
				
			

Kombinatorangriff mit Wörterbüchern und Regeln, die links eine Bindestrich einfügen und rechts ein Ausrufezeichen anfügen:

				
					hashcat -a1 hashfile.txt Wörterbuch01.txt Wörterbuch02.txt -j'$-' -k '$!'
				
			

CombinatorX Installation:

				
					git clone https://github.com/hashcat/hashcat-utils.git
cd hashcat-utils/src
make
				
			

CombinatorX Synatx:

Kombinatorangriff mit zwei Wörterbüchern

KombinatorX mit 3 Wörterbüchern und Speicherung der Ergebnisse:

				
					./combinatorX.bin -1 Wörterbuch01.txt -2 Wörterbuch02.txt -3 Wörterbuch03.txt > Wörterbuch123.txt
				
			

KombinatorX mit 3 Wörterbüchern, Speicherung und Zeichen zwischen den Wörterbüchern

				
					./combinatorX.bin -1 Wörterbuch01.txt -2 Wörterbuch02.txt -3 Wörterbuch03.txt > Wörterbuch123.txt --sep1 '-' --sep2'-' --sep3 '-' > Wörterbuch123-.txt
				
			

KombinatorX kann dies mit bis zu 8 Wörterbüchern durchführen. Dadurch können zwar umfangreiche Sätze/Passphrasen nachgebildet werden können, jedoch entstehen dadurch riesige Wörterbücher, die ohne Probleme größer werden als der verfügbare Gerätespeicher. Es wird hier vom bis zu mehreren Hundert GB gesprochen, daher Vorsicht beim Kombinieren mehrerer Wörterbücher.

Hybrid-Angriff

Der Hybrid Angriff lässt sich am besten als eine abgewandelte Form des Kombinator Angriffs beschreiben. Hier wird statt des zweiten Wörterbuchs eine Maske hinzugefügt. Dadurch lassen sich Passwörter mit einer größeren Flexibilität angreifen, als es mit einer Kombinator Attacke möglich wäre.

Es gibt zwei Hybrid-Angriffe: Wordlist + Hybrid und Hybrid + Wordlist, wodurch beide Schemata von typischen Passwörtern abgebildet werden können. Werden Masken bzw. Bruteforce beim Hybrid-Angriff verwendet, lässt sich auch der Parameter -i für eine Erweiterung der Maske benutzten. 

Leider können beide Hybrid-Angriffe nicht miteinander kombiniert werden, sodass man einen Workaround erschaffen muss. Hierzu wird der Angriff einmal im Stdout-Modus ausgeführt, um ein Wörterbuch mit den Modifikationen des ersten Angriffs zu erschaffen und dieses anschließend im zweiten Angriff zu nutzen, wodurch dieses nun auf der anderen Seite modifiziert wird.

Syntax:

Klassischer Hybrid-Angriff mit Maske:

				
					hashcat -a6 hashfile.txt wörterbuch.txt ?d?d?d
				
			

Hybrid-Angriff mit Masken und Increment:

				
					hashcat -a6 hasfile.txt wörterbuch.txt -i ?u?l?l?l??d?d?s
				
			

Klassischer Hybrid-Angriff andersrum mit Maske:

				
					hashcat -a7 ?d?d?d hashfile.txt wörterbuch.txt
				
			

Klassischer Hybrid-Angriff andersrum mit Maske und Increment:

				
					hashcat -a7 -i ?d?d?d hashfile.txt wörterbuch.txt
				
			

Experimentell: Hybrid-Angriff beide Seiten:

				
					hashcat -a6 Wörterliste.txt (-i) ?d?d?d --stdout > Wörterbuch01.txt hashcat -a7 (-i) Hashfile.txt ?a?a?a Wörterbuch01.txt
				
			

Beide Angriffe werden nacheinander ausgeführt und das Erstellen von Wörterbüchern/Passwortlisten ist sehr speicherintensiv, er kann also auch schon bei kleinen Wörterbüchern sehr große Dateien erzeugen. Es ist davon abzuraten, die beiden Befehle via Pipe zu verbinden, da dies sehr wahrscheinlich den kompletten Arbeitsspeicher füllt und den Computer einfrieren lässt.

Willst du als Penetration Tester durchstarten?
Qualifiziere dich mit unserem praxisorientierten Intensivkurs für deinen Traumjob!
Zum Junior Penetration Tester Zertifikatslehrgang
Newsletter Form (#7)

Become a Cyber Security Insider

Sichere dir frühen Zugang und exklusive Inhalte!


Mit deiner Anmeldung erklärst du dich damit einverstanden, gelegentlich Marketing-E-Mails von uns zu erhalten.
ANDERE BEITRÄGE

Inhaltsverzeichnis

Hast du Fragen oder Ergänzungen? Immer her damit!
Schreibe einen Kommentar und wir antworten so bald wie möglich!

Dein E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

PSN_KU_Cover
NewsLetter Form Pop Up New

Become a Cyber Security Insider

Abonniere unsere Knowledge Base und erhalte:

Frühen Zugriff auf neue Blogbeiträge
Exklusive Inhalte
Regelmäßige Updates zu Branchentrends und Best Practices


Mit deiner Anmeldung erklärst du dich damit einverstanden, gelegentlich Marketing-E-Mails von uns zu erhalten.