Benutzerdefinierte Wortlisten mit Crunch generieren

Kali LinuxBeginner
Jetzt üben

Einleitung

Crunch ist ein leistungsstarkes und flexibles Kommandozeilen-Tool zur Generierung benutzerdefinierter Wortlisten. Diese Wortlisten sind im Bereich der Cybersicherheit unerlässlich, insbesondere für Penetrationstester und Sicherheitsexperten, die Passwortstärke-Audits und Brute-Force-Angriffe durchführen. Im Gegensatz zu statischen, vorgefertigten Wortlisten ermöglicht Crunch die Erstellung hochspezifischer Listen basierend auf bekannten Mustern, Zeichensätzen und Längenanforderungen, was die Effizienz eines Angriffs erheblich steigert.

In diesem Lab lernen Sie die Grundlagen von Crunch kennen. Sie beginnen mit dem Verständnis der grundlegenden Syntax, fahren dann mit der Generierung einfacher Wortlisten, der Verwendung benutzerdefinierter Zeichensätze, der Erstellung musterbasierter Listen und schließlich dem direkten Piping der Ausgabe in andere Kommandozeilen-Tools fort.

Die Syntax des Crunch-Tools verstehen

In diesem Schritt lernen Sie die grundlegende Syntax des crunch-Befehls und wie Sie auf dessen Hilfe-Menü zugreifen können. Das Verständnis der grundlegenden Struktur des Befehls ist der erste Schritt zur Beherrschung seiner Fähigkeiten.

Die grundlegende Syntax für crunch lautet: crunch <min-len> <max-len> [characterset] [options]

  • <min-len>: Die minimale Länge der zu generierenden Wörter.
  • <max-len>: Die maximale Länge der zu generierenden Wörter.
  • [characterset]: (Optional) Die Menge der Zeichen, die zur Generierung von Wörtern verwendet werden sollen. Wenn nicht angegeben, verwendet crunch standardmäßig Kleinbuchstaben.
  • [options]: (Optional) Verschiedene Flags zur Steuerung der Ausgabe, z. B. zum Speichern in einer Datei oder zur Verwendung von Mustern.

Um alle verfügbaren Optionen anzuzeigen und einen umfassenden Überblick über das Tool zu erhalten, können Sie das Flag --help verwenden. Sehen wir uns das Hilfe-Menü an. Alle Operationen in diesem Lab werden im Standardverzeichnis ~/project durchgeführt.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

crunch --help

Sie sehen eine detaillierte Ausgabe, die alle Flags und deren Beschreibungen auflistet. Nehmen Sie sich einen Moment Zeit, um sie durchzusehen. Dies ist eine großartige Referenz, wenn Sie fortgeschrittenere Funktionen erkunden möchten.

crunch version 3.6

Crunch kann eine Wortliste basierend auf von Ihnen angegebenen Kriterien erstellen. Die Ausgabe von
crunch kann an den Bildschirm, eine Datei oder ein anderes Programm gesendet werden.

Verwendung: crunch <min-len> <max-len> [options]
wobei min-len und max-len Zahlen sind

... (Ausgabe gekürzt) ...

Nachdem Sie nun mit der grundlegenden Syntax und der Hilfe-Funktion vertraut sind, sind Sie bereit, Ihre erste Wortliste zu generieren.

Eine einfache Wortliste mit fester Länge generieren

In diesem Schritt generieren Sie Ihre erste Wortliste mit fester Länge. Dies ist eine der häufigsten Anwendungen von crunch. Wenn die minimale und maximale Länge gleich sind, generiert crunch alle möglichen Kombinationen für diese spezifische Länge.

Standardmäßig gibt crunch die Wortliste auf der Standardausgabe (Ihrem Terminalbildschirm) aus. Bei großen Listen kann dies überwältigend und nicht sehr nützlich sein. Eine bessere Vorgehensweise ist, die Ausgabe mit der Option -o in einer Datei zu speichern.

Lassen Sie uns alle möglichen 3-Zeichen-Wörter mit dem Standard-Alphabet in Kleinbuchstaben generieren und sie in einer Datei namens 3char.txt speichern.

Führen Sie den folgenden Befehl aus:

crunch 3 3 -o 3char.txt

Dieser Befehl weist crunch an, Wörter mit einer Mindestlänge von 3 und einer Höchstlänge von 3 zu generieren und das Ergebnis in 3char.txt auszugeben. Sie sehen einige Statistiken über die generierte Liste in Ihrem Terminal.

Crunch will now generate the following amount of data: 20280 bytes, 19 KB, 0 MB, 0 GB
Crunch will now generate the following number of lines: 17576

Um zu überprüfen, ob die Datei korrekt erstellt wurde, können Sie den Befehl head verwenden, um die ersten Zeilen der Datei anzuzeigen.

head -n 5 3char.txt

Sie sollten den Anfang der alphabetischen Liste sehen.

aaa
aab
aac
aad
aae

Sie haben erfolgreich Ihre erste Wortliste generiert und gespeichert.

Eine Wortliste mit einem spezifischen Zeichensatz generieren

In diesem Schritt lernen Sie, wie Sie einen benutzerdefinierten Zeichensatz für Ihre Wortliste angeben. Dies ist äußerst nützlich, wenn Sie Informationen über die möglichen Zeichen eines Passworts haben (z. B. dass es nur Zahlen oder nur bestimmte Buchstaben enthält).

Um einen Zeichensatz anzugeben, fügen Sie einfach die Zeichenkette, die Sie verwenden möchten, am Ende des Befehls hinzu, nach den Längenargumenten.

Lassen Sie uns eine Liste von 4-stelligen PIN-Codes generieren, die nur die Ziffern 0, 1, 2 und 3 verwendet. Wir werden diese Liste in einer Datei namens 4digit.txt speichern.

Führen Sie diesen Befehl aus:

crunch 4 4 0123 -o 4digit.txt

Hier legen 4 4 die Länge auf genau vier Zeichen fest, 0123 gibt den benutzerdefinierten Zeichensatz an und -o 4digit.txt speichert die Ausgabe.

Lassen Sie uns den Anfang der generierten Datei inspizieren, um die Ausgabe zu bestätigen.

head -n 5 4digit.txt

Die Ausgabe zeigt die ersten fünf Kombinationen, die nur die angegebenen Ziffern verwenden.

0000
0001
0002
0003
0010

Wie Sie sehen können, verwendet crunch nun nur die von Ihnen bereitgestellten Zeichen, was Ihnen eine viel größere Kontrolle über die generierte Wortliste gibt.

Verwenden Sie das Flag -t, um musterbasierte Wörter zu generieren

In diesem Schritt verwenden Sie das Flag -t, um Wortlisten basierend auf einem bestimmten Muster zu generieren. Dies ist eine der leistungsfähigsten Funktionen von Crunch und ermöglicht es Ihnen, hochgradig zielgerichtete Wortlisten zu erstellen, wenn Sie einen Teil der Passwortstruktur kennen.

Das Flag -t verwendet spezielle Platzhalter, um verschiedene Zeichentypen darzustellen:

  • @ wird durch Kleinbuchstaben ersetzt.
  • , wird durch Großbuchstaben ersetzt.
  • % wird durch Zahlen ersetzt.
  • ^ wird durch Symbole ersetzt.

Stellen Sie sich vor, Sie wissen, dass ein Passwort mit dem Wort "user" beginnt, gefolgt von zwei Zahlen und endet mit einem einzelnen Großbuchstaben. Das Muster wäre user%%,. Die Gesamtlänge beträgt 7 Zeichen (4 für "user", 2 für %%, 1 für ,).

Lassen Sie uns eine Wortliste basierend auf diesem Muster generieren und sie in pattern.txt speichern.

crunch 7 7 -t user%%, -o pattern.txt

Dieser Befehl weist crunch an, Wörter mit genau 7 Zeichen zu generieren, die dem Muster user%%, folgen.

Schauen wir uns nun die ersten Zeilen der Ausgabedatei an.

head -n 5 pattern.txt

Die Ausgabe entspricht dem von Ihnen definierten Muster.

user00A
user00B
user00C
user00D
user00E

Diese Methode reduziert die Größe der Wortliste und die für einen Brute-Force-Angriff benötigte Zeit drastisch, indem sie sich nur auf plausible Passwortkandidaten konzentriert.

Crunch-Ausgabe direkt an Hashcat weiterleiten

In diesem Schritt lernen Sie eine leistungsstarke Technik kennen: die direkte Weiterleitung der Ausgabe von crunch an ein anderes Werkzeug. Dies ist sehr effizient, da es vermieden wird, eine potenziell riesige Wortliste auf Ihre Festplatte zu schreiben, was Speicherplatz und Zeit spart. Die Wörter werden in Echtzeit generiert und an das nächste Programm "gepipet" (gesendet).

Während crunch oft mit Passwort-Cracking-Tools wie Hashcat oder John the Ripper verwendet wird, simulieren wir diesen Prozess hier mit einem einfachen grep-Befehl. grep ist ein Werkzeug zur Textsuche und dient dazu, das Konzept des Piping zu demonstrieren.

Stellen Sie sich vor, wir versuchen, das Passwort labex23 zu finden. Wir vermuten, dass das Passwort mit "labex" beginnt und von zwei Ziffern gefolgt wird.

Wir können Wörter generieren, die diesem Muster entsprechen, und sie direkt an grep weiterleiten, um zu sehen, ob unser Zielpasswort in der generierten Liste enthalten ist. Das Pipe-Symbol | wird verwendet, um die Ausgabe eines Befehls mit der Eingabe eines anderen zu verbinden.

Führen Sie den folgenden Befehl aus:

crunch 7 7 -t labex%% | grep "labex23"

Dieser Befehl tut zwei Dinge:

  1. crunch 7 7 -t labex%% generiert alle 7-stelligen Wörter, die mit "labex" beginnen und von zwei Zahlen gefolgt werden (z. B. labex00, labex01, ...).
  2. Die | Pipe sendet jedes generierte Wort an den Befehl grep "labex23", der prüft, ob das Wort mit "labex23" übereinstimmt.

Wenn eine Übereinstimmung gefunden wird, gibt grep diese auf dem Terminal aus.

labex23

Sie haben erfolgreich eine Wortliste "on-the-fly" generiert und sie mit einem anderen Werkzeug verarbeitet, eine Kernkompetenz für effizientes Sicherheitstesting.

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben grundlegende Fähigkeiten im Umgang mit crunch, einem vielseitigen Werkzeug zur Generierung benutzerdefinierter Wortlisten, erworben.

In diesem Lab haben Sie gelernt, wie Sie:

  • Die grundlegende Syntax des crunch-Befehls verstehen.
  • Einfache Wortlisten mit fester Länge generieren und in einer Datei speichern.
  • Ein benutzerdefiniertes Zeichensatz (character set) angeben, um gezieltere Wortlisten zu erstellen.
  • Das Flag -t verwenden, um Wörter basierend auf einem bekannten Muster zu generieren.
  • Die Ausgabe von crunch direkt in andere Kommandozeilenwerkzeuge wie grep pipen, um eine Echtzeitverarbeitung durchzuführen, ohne in einer Datei speichern zu müssen.

Diese Fähigkeiten sind grundlegend für viele Aufgaben in der Cybersicherheit, insbesondere bei der Passwortprüfung und beim Penetration Testing. Durch die Erstellung maßgeschneiderter Wortlisten können Sie die Effizienz und Erfolgsquote Ihrer Sicherheitsbewertungen erheblich verbessern.