Penetration Testing erklärt von Hackern Das sollten IT-Profis und Verantwortliche wissen Penetration Testing, auch bekannt als „Pentesting“, ist ein elementarer
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.
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.
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.
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.
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.
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.
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.
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.
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:
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
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.
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
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 .
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
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.
Wörterlisten können entweder von verschiedenen Seiten heruntergeladen oder selbst generiert werden, meine persönlichen Empfehlungen für Wörterlisten sind jedoch:
Sehr großes Wörterbuch:
Diese Wörterbücher lassen sich alle sehr gut mit verschiedenen Regeln kombinieren, um gute Ergebnisse zu erzielen.
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 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.
cewl -d3 -m4 -e -w Wörterliste_name.txt -v https://Web.seite
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.
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:
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.
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.
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.
Penetration Testing erklärt von Hackern Das sollten IT-Profis und Verantwortliche wissen Penetration Testing, auch bekannt als „Pentesting“, ist ein elementarer
In einem kürzlich erschienenen Interview mit dem Online-Magazin Business Punk sprach unser Gründer und CEO Tim Schughart über den SPD-Hack
Hacking als Massengeschäft: In der aktuellen Ausgabe 4/2024 gibt unser CEO Tim Schughart der Rhein-Zeitung Wirtschaft Einblicke in das „Geschäftsmodell“ Cyberkriminalität. Er
Wir verwenden Cookies, und Google reCAPTCHA, das Google Fonts lädt und mit Google-Servern kommuniziert. Durch die weitere Nutzung unserer Website stimmen Sie der Verwendung von Cookies und unserer Datenschutzerklärung zu.