Passwörter mit Hydra Brute-Force generieren

HydraHydraBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Passwortgenerierung und Brute-Force-Techniken mit Hydra untersuchen. Der Schwerpunkt liegt auf der Nutzung der -x-Option von Hydra, um Passwörter basierend auf definierten Kriterien wie Länge und Zeichensätzen zu erstellen.

Das Lab führt Sie durch die Generierung von Passwörtern mit der -x-Option, wobei ein Dummy-FTP-Server auf dem lokalen Rechner (localhost) als Ziel dient. Sie werden lernen, wie Sie die minimale und maximale Passwortlänge festlegen und wie Sie Zeichensätze wie Kleinbuchstaben verwenden. Das Lab behandelt auch die Deaktivierung von Symbolen mit der -y-Option und die Analyse der Ausgabe eines Brute-Force-Angriffs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/password_creation -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} hydra/single_username -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} hydra/ftp_attack -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} hydra/output_saving -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} hydra/verbose_mode -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} hydra/service_options -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} hydra/troubleshooting -.-> lab-550769{{"Passwörter mit Hydra Brute-Force generieren"}} end

Passwörter mit der -x-Option generieren

In diesem Schritt werden wir untersuchen, wie Sie die -x-Option in Hydra verwenden können, um Passwörter basierend auf einem bestimmten Format zu generieren. Dies ist besonders nützlich, wenn Sie etwas über die mögliche Passwortstruktur wissen, wie z. B. ein gemeinsames Präfix oder Suffix.

Hydras -x-Option ermöglicht es Ihnen, eine minimale und maximale Länge für die generierten Passwörter sowie einen zu verwendenden Zeichensatz zu definieren. Die Syntax lautet -x min:max:charset.

Beginnen wir mit einem einfachen Beispiel. Nehmen wir an, wir möchten Passwörter generieren, die zwischen 6 und 8 Zeichen lang sind und nur Kleinbuchstaben enthalten.

Zunächst navigieren Sie in das Verzeichnis ~/project:

cd ~/project

Nun verwenden wir Hydra, um Passwörter zu generieren und einen Versuch zu starten, einen FTP-Server zu knacken. Zu Demonstrationszwecken verwenden wir einen Dummy-FTP-Server, der immer jeden Benutzernamen und jedes Passwort akzeptiert. Wir verwenden localhost als Ziel, unter der Annahme, dass ein FTP-Server lokal läuft (obwohl dies für diesen Passwortgenerierungsschritt nicht erforderlich ist).

Führen Sie den folgenden Befehl aus:

hydra -l user -P /dev/null -vV -x 6:8:lc localhost ftp

Lassen Sie uns diesen Befehl analysieren:

  • hydra: Das Hydra-Befehlszeilentool.
  • -l user: Gibt den zu verwendenden Benutzernamen an. Hier verwenden wir "user", es könnte aber jeder beliebige Benutzername sein.
  • -P /dev/null: Teilt Hydra mit, keine Passwortlisten-Datei zu verwenden. Stattdessen verwenden wir -x, um Passwörter zu generieren. /dev/null ist eine spezielle Datei, die alle geschriebenen Daten verwirft.
  • -vV: Aktiviert die ausführliche Ausgabe und zeigt jeden Anmeldeversuch an.
  • -x 6:8:lc: Dies ist der Schlüsselteil. Es teilt Hydra mit, Passwörter zu generieren mit:
    • 6: Mindestlänge von 6 Zeichen.
    • 8: Maximallänge von 8 Zeichen.
    • lc: Verwenden Sie nur Kleinbuchstaben (a-z). Andere Optionen sind uc (Großbuchstaben), 12 (Ziffern), sc (Symbole). Sie können sie kombinieren, z. B. lcuc12 für Kleinbuchstaben, Großbuchstaben und Ziffern.
  • localhost: Der Zielhost (in diesem Fall unser Dummy-FTP-Server).
  • ftp: Der anzugreifende Dienst (FTP).

Sie werden sehen, dass Hydra Anmeldeversuche mit generierten Passwörtern wie "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaab" usw. durchführt. Da wir /dev/null als Passwortdatei verwenden, wird Hydra nur die von der -x-Option generierten Passwörter verwenden.

Wichtiger Hinweis: In diesem Beispiel wird ein Dummy-FTP-Server zu Demonstrationszwecken verwendet. Versuchen Sie nicht, FTP-Server zu knacken, ohne ausdrückliche Genehmigung.

Nun versuchen wir ein komplexeres Beispiel. Nehmen wir an, wir wissen, dass die Passwörter möglicherweise mit "prefix" beginnen und mit einer Ziffer enden, wobei dazwischen 4 - 6 alphanumerische Zeichen stehen.

Wir können mit -x nicht direkt ein Präfix und Suffix angeben. Allerdings können wir den mittleren Teil generieren und dann die bekannten Teile mit anderen Tools (wie sed oder awk) voranstellen und anhängen, um eine Passwortlisten-Datei zu erstellen, die wir dann mit Hydra verwenden würden. Aus Gründen der Einfachheit bleiben wir in diesem Schritt bei der grundlegenden Verwendung von -x. Wir werden in späteren Schritten fortgeschrittene Manipulationen von Passwortlisten untersuchen.

Für den Moment generieren wir Passwörter, die 8 - 10 Zeichen lang sind und Kleinbuchstaben und Ziffern enthalten:

hydra -l user -P /dev/null -vV -x 8:10:lc12 localhost ftp

Dies wird Passwörter wie "aaaaaaaa", "aaaaaaa1", "aaaaaa11" usw. generieren.

Dieser Schritt hat gezeigt, wie Sie die -x-Option verwenden können, um Passwörter mit bestimmten Längen- und Zeichensatzbeschränkungen zu generieren. Dies ist eine leistungsstarke Technik, wenn Sie etwas über die mögliche Passwortstruktur im Voraus wissen.

Angriff auf einen FTP-Server mit generierten Passwörtern

In diesem Schritt bauen wir auf dem vorherigen Schritt auf und nutzen die Passwortgenerierungsfähigkeiten von Hydra, um einen (Dummy-)FTP-Server anzugreifen. Wir konzentrieren uns auf die Verwendung einer "on-the-fly" mit der -x-Option generierten Passwortliste.

Als Erinnerung: Es ist von entscheidender Bedeutung zu betonen, dass der Angriff auf Systeme ohne ausdrückliche Genehmigung illegal und unethisch ist. Dieses Lab dient nur zu Bildungszwecken, und Sie sollten diese Techniken nur auf Systemen anwenden, die Sie besitzen oder für die Sie die Genehmigung zum Testen haben.

Für diesen Schritt gehen wir davon aus, dass Sie einen einfachen FTP-Server laufen haben (auch wenn es sich um einen Dummy-Server handelt, der beliebige Zugangsdaten akzeptiert). Wenn Sie keinen haben, können Sie schnell einen einfachen mit Python einrichten:

sudo apt update
sudo apt install python3-pyftpdlib

Erstellen Sie dann ein Verzeichnis, das der FTP-Server bedienen soll:

mkdir ~/project/ftp_root

Und starten Sie den FTP-Server:

python3 -m pyftpdlib -p 2121 -w ~/project/ftp_root

Dies startet einen FTP-Server auf Port 2121, der Dateien aus dem Verzeichnis ~/project/ftp_root bedient. Die -w-Option ermöglicht Schreibzugriff. Sie können den Server mit Ctrl+C stoppen. Beachten Sie, dass dies ein sehr einfacher Server für Testzwecke ist und nicht für die Produktionsumgebung geeignet ist.

Nun verwenden wir Hydra, um diesen FTP-Server anzugreifen. Wir nutzen die -x-Option, um Passwörter zu generieren und versuchen, uns als Benutzer "testuser" anzumelden.

hydra -l testuser -P /dev/null -vV -x 4:6:lc 127.0.0.1 ftp

Lassen Sie uns diesen Befehl erneut analysieren:

  • hydra: Das Hydra-Befehlszeilentool.
  • -l testuser: Gibt den zu verwendenden Benutzernamen an: "testuser".
  • -P /dev/null: Teilt Hydra mit, keine Passwortlisten-Datei zu verwenden. Stattdessen verwenden wir -x, um Passwörter zu generieren.
  • -vV: Aktiviert die ausführliche Ausgabe und zeigt jeden Anmeldeversuch an.
  • -x 4:6:lc: Dies teilt Hydra mit, Passwörter zu generieren mit:
    • 4: Mindestlänge von 4 Zeichen.
    • 6: Maximallänge von 6 Zeichen.
    • lc: Verwenden Sie nur Kleinbuchstaben (a-z).
  • 127.0.0.1: Der Zielhost (localhost). Wir verwenden 127.0.0.1 anstelle von localhost, um potenzielle DNS-Auflösungsprobleme innerhalb des Docker-Containers zu vermeiden.
  • ftp: Der anzugreifende Dienst (FTP).

Sie sollten sehen, dass Hydra Anmeldeversuche mit generierten Passwörtern durchführt. Da unser Dummy-FTP-Server beliebige Zugangsdaten akzeptiert, wird Hydra wahrscheinlich schnell ein gültiges Passwort finden.

Nun versuchen wir ein etwas komplexeres Beispiel, bei dem wir Kleinbuchstaben und Ziffern kombinieren:

hydra -l testuser -P /dev/null -vV -x 5:7:lc12 127.0.0.1 ftp

Dies wird Passwörter wie "aaaaa", "aaaaa1", "aaaa11" usw. generieren.

Wichtige Überlegungen:

  • Rate Limiting (Geschwindigkeitsbegrenzung): Echte FTP-Server haben oft eine Rate Limiting-Mechanik, um Brute-Force-Angriffe zu verhindern. Hydra bietet Optionen, um die Anzahl gleichzeitiger Verbindungen und die Verzögerung zwischen den Versuchen zu steuern.
  • Passwortkomplexität: Die Wirksamkeit eines Brute-Force-Angriffs hängt stark von der Komplexität der Passwörter ab. Längere und komplexere Passwörter (mit einer Mischung aus Großbuchstaben, Kleinbuchstaben, Ziffern und Symbolen) sind viel schwieriger zu knacken.
  • Rechtliche und ethische Implikationen: Holen Sie sich immer ausdrückliche Genehmigung, bevor Sie versuchen, die Sicherheit eines Systems zu testen.

Dieser Schritt hat gezeigt, wie Sie Hydra mit der -x-Option verwenden können, um Passwörter zu generieren und einen FTP-Server anzugreifen. Denken Sie daran, diese Techniken verantwortungsvoll und ethisch einzusetzen.

Deaktivieren von Symbolen mit der -y-Option

In diesem Schritt werden wir lernen, wie man die -y-Option in Hydra verwendet, um die Verwendung von Symbolen beim Lesen von Passwörtern aus einer Datei zu deaktivieren. Dies ist nützlich, wenn Sie vermuten, dass das Zielsystem Probleme bei der Verarbeitung von Sonderzeichen in Passwörtern haben könnte, oder wenn Sie speziell Symbole von Ihren Brute-Force-Versuchen ausschließen möchten.

Die -y-Option teilt Hydra mit, alle in der Passwortlisten-Datei enthaltenen Symbole zu ignorieren. Sie wirkt sich nicht auf die Passwortgenerierung mit der -x-Option aus; sie gilt nur beim Lesen von Passwörtern aus einer Datei.

Zunächst erstellen wir eine Passwortlisten-Datei, die einige Passwörter mit Symbolen enthält. Navigieren Sie in das Verzeichnis ~/project:

cd ~/project

Erstellen Sie nun eine Datei namens passwords.txt mit nano:

nano passwords.txt

Fügen Sie der Datei die folgenden Passwörter hinzu:

password123
P@sswOrd
secret!
12345
qwerty

Speichern Sie die Datei und verlassen Sie nano (Ctrl+X, dann Y, dann Enter).

Nun verwenden wir Hydra, um unseren Dummy-FTP-Server anzugreifen (unter der Annahme, dass er noch aus dem vorherigen Schritt läuft), indem wir diese Passwortliste ohne die -y-Option verwenden:

hydra -l testuser -P passwords.txt -vV 127.0.0.1 ftp

Hydra wird versuchen, sich mit jedem Passwort in der passwords.txt-Datei anzumelden, einschließlich derjenigen mit Symbolen.

Nun verwenden wir die -y-Option, um Symbole zu deaktivieren:

hydra -l testuser -P passwords.txt -y -vV 127.0.0.1 ftp

Mit der -y-Option wird Hydra Passwörter wie "P@sswOrd" effektiv als "PsswOrd" und "secret!" als "secret" behandeln. Es entfernt die Symbole, bevor es den Anmeldeversuch unternimmt.

Wichtiger Hinweis: Die -y-Option modifiziert die Passwörter bevor sie an den Ziel-Dienst gesendet werden. Dies bedeutet, dass wenn das tatsächliche Passwort ein Symbol erfordert, die Verwendung von -y es verhindert, dass Sie es finden.

Um dies weiter zu veranschaulichen, erstellen wir ein Szenario, in dem das richtige Passwort "secret!" ist. Wenn wir -y verwenden, wird Hydra "secret" versuchen und scheitern.

Wann man -y verwenden sollte:

  • Wenn Sie vermuten, dass das Zielsystem Probleme mit Symbolen in Passwörtern hat.
  • Wenn Sie speziell Symbole von Ihren Brute-Force-Versuchen ausschließen möchten (z. B., wenn Sie wissen, dass die Passwortrichtlinie sie nicht erlaubt).
  • Wenn Sie Verbindungsprobleme beheben und vermuten, dass Symbole die Ursache sein könnten.

Dieser Schritt hat gezeigt, wie man die -y-Option in Hydra verwendet, um Symbole beim Lesen von Passwörtern aus einer Datei zu deaktivieren. Denken Sie daran, die potenzielle Auswirkung auf Ihre Brute-Force-Versuche zu berücksichtigen, da es Sie daran hindern kann, Passwörter zu finden, die Symbole enthalten.

Analyse der Brute-Force-Ausgabe

In diesem Schritt werden wir uns auf die Analyse der von Hydra während eines Brute-Force-Angriffs generierten Ausgabe konzentrieren. Das Verständnis der Ausgabe ist entscheidend für die Identifizierung erfolgreicher Anmeldungen, die Behebung von Problemen und die Optimierung Ihrer Angriffsstrategie.

Hydra bietet verschiedene Stufen der Ausführlichkeit, die durch die -v-Option gesteuert werden. Wir haben in den vorherigen Schritten -vV verwendet, was ein gutes Gleichgewicht an Informationen bietet. Lassen Sie uns die verschiedenen Ausgabemeldungen untersuchen und deren Bedeutung verstehen.

Zunächst führen wir einen einfachen Hydra-Befehl gegen unseren Dummy-FTP-Server aus (stellen Sie sicher, dass er noch läuft):

hydra -l testuser -P passwords.txt -vV 127.0.0.1 ftp

Unter der Annahme, dass Sie die passwords.txt-Datei aus dem vorherigen Schritt haben, wird Hydra versuchen, sich mit jedem Passwort in der Datei anzumelden.

Hier ist eine Zusammenfassung der gängigen Ausgabemeldungen, die Sie möglicherweise sehen:

  • [DATA] 127.0.0.1:21 - banner: 220 pyftpdlib 1.5.6: Dies zeigt die vom FTP-Server empfangene Banner-Nachricht an. Die Banner-Nachricht liefert Informationen über die Server-Software und die Version.
  • [STATUS] 127.0.0.1:21 - 1/5 [5/5 pp]: Dies gibt den Fortschritt des Angriffs an.
    • 1/5: Bedeutet, dass Hydra 1 von insgesamt 5 Passwörtern getestet hat.
    • [5/5 pp]: Zeigt die Anzahl der Passwörter pro Prozess an.
  • [DEBUG] ...: Debug-Meldungen liefern detailliertere Informationen über den Verbindungs- und Authentifizierungsprozess. Diese sind hilfreich für die Fehlerbehebung.
  • [21][ftp] host: 127.0.0.1 login: testuser password: password123: Dies zeigt die zu testenden Zugangsdaten an.
  • [21][ftp] host: 127.0.0.1 login: testuser password: P@sswOrd: Dies zeigt die nächsten zu testenden Zugangsdaten an.
  • [ATTEMPT][ftp] 127.0.0.1:21 - login: 'testuser' password: 'password123': Diese Zeile gibt an, dass Hydra versucht, sich mit dem angegebenen Benutzernamen und Passwort anzumelden.
  • [21][ftp] 127.0.0.1: Login incorrect: Dies zeigt einen fehlgeschlagenen Anmeldeversuch an. Die genaue Meldung hängt von der Konfiguration des FTP-Servers ab.
  • [21][ftp] 127.0.0.1: Invalid username or password: Dies zeigt ebenfalls einen fehlgeschlagenen Anmeldeversuch an.
  • [21][ftp] 127.0.0.1: ftp:Login OK: Dies ist die wichtigste Meldung! Sie zeigt eine erfolgreiche Anmeldung an. Hydra hat eine gültige Kombination aus Benutzernamen und Passwort gefunden.

Wenn Hydra eine gültige Anmeldung findet, wird es die "Login OK"-Meldung anzeigen und dann den Angriff (standardmäßig) beenden.

Speichern der Ausgabe in einer Datei:

Sie können die Ausgabe von Hydra in einer Datei für eine spätere Analyse speichern, indem Sie die -o-Option verwenden:

hydra -l testuser -P passwords.txt -vV -o output.txt 127.0.0.1 ftp

Dadurch werden alle Ausgabemeldungen in einer Datei namens output.txt im Verzeichnis ~/project gespeichert. Sie können dann Tools wie grep verwenden, um nach bestimmten Meldungen, wie "Login OK", zu suchen.

Beispielsweise können Sie erfolgreiche Anmeldungen in der output.txt-Datei finden:

grep "Login OK" output.txt

Interpretation der Ausgabe:

  • Keine "Login OK"-Meldungen: Dies bedeutet, dass Hydra keine gültige Kombination aus Benutzernamen und Passwort finden konnte. Dies kann aus mehreren Gründen erfolgen:
    • Das richtige Passwort ist nicht in Ihrer Passwortliste.
    • Der Benutzername ist falsch.
    • Der Ziel-Dienst ist nicht anfällig für Brute-Force-Angriffe (z. B. aufgrund von Account-Sperrrichtlinien).
    • Es gibt Netzwerkverbindungsprobleme.
  • Viele "Login Incorrect"-Meldungen: Dies zeigt an, dass Hydra viele ungültige Kombinationen aus Benutzernamen und Passwörtern testet. Dies ist bei einem Brute-Force-Angriff zu erwarten.
  • "Connection refused" oder "Timeout"-Fehler: Diese Fehler zeigen Netzwerkverbindungsprobleme an. Stellen Sie sicher, dass der Ziel-Dienst läuft und von Ihrem Computer aus erreichbar ist.

Durch die sorgfältige Analyse der Ausgabe von Hydra können Sie wertvolle Einblicke in die Sicherheit des Zielsystems gewinnen und Ihre Angriffsstrategie verfeinern.

Zusammenfassung

In diesem Lab haben wir die Verwendung von Hydra zur Generierung von Passwörtern für Brute-Force-Angriffe untersucht, wobei wir uns speziell auf die -x-Option konzentriert haben. Diese Option ermöglicht die Erstellung von Passwörtern basierend auf definierten Parametern wie Mindest- und Maximallänge sowie Zeichensätzen (Kleinbuchstaben, Großbuchstaben, Ziffern, Symbole).

Das Lab hat gezeigt, wie man -x mit bestimmten Längenbeschränkungen und dem lc-Zeichensatz (Kleinbuchstaben) verwendet, um Passwörter zu generieren und zu versuchen, einen Dummy-FTP-Server auf dem lokalen Rechner zu knacken. Der Befehl hydra -l user -P /dev/null -vV -x 6:8:lc localhost ftp wurde verwendet, um diesen Prozess zu veranschaulichen und die Wichtigkeit des Verständnisses der Syntax und der verfügbaren Zeichensatzoptionen für eine effektive Passwortgenerierung zu betonen.