Hydra-Angriffs-Ergebnisse speichern

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 untersuchen, wie man die Ergebnisse eines Hydra-Angriffs speichert. Hydra, ein leistungsstarkes Passwort-Cracking-Tool, wird verwendet, um die Sicherheit eines simulierten HTTP-Anmeldeformulars zu testen. Wir beginnen damit, einen grundlegenden HTTP-Angriff auf einen Ziel-Webserver auszuführen, wobei wir Benutzernamen- und Passwortlisten nutzen, die im Verzeichnis ~/project erstellt wurden.

Anschließend wird das Lab Sie durch das Speichern der Angriffs-Ergebnisse mithilfe der Option -o führen und diese in JSON-Format mit der Option -b ausgeben. Abschließend vergleichen wir die Text- und JSON-Ausgaben, um die verschiedenen Möglichkeiten zu verstehen, wie Hydra seine Ergebnisse präsentieren kann.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/http_form("HTTP Form Attack") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550773{{"Hydra-Angriffs-Ergebnisse speichern"}} hydra/single_password -.-> lab-550773{{"Hydra-Angriffs-Ergebnisse speichern"}} hydra/http_form -.-> lab-550773{{"Hydra-Angriffs-Ergebnisse speichern"}} hydra/output_saving -.-> lab-550773{{"Hydra-Angriffs-Ergebnisse speichern"}} hydra/success_detection -.-> lab-550773{{"Hydra-Angriffs-Ergebnisse speichern"}} end

Ausführen eines grundlegenden HTTP-Angriffs

In diesem Schritt werden wir einen grundlegenden HTTP-Angriff mit Hydra durchführen. Hydra ist ein leistungsstarkes Tool zum Knacken von Passwörtern und kann verwendet werden, um die Sicherheit verschiedener Dienste, einschließlich HTTP, zu testen. Wir werden uns auf ein einfaches HTTP-Anmeldeformular konzentrieren, um die Fähigkeiten von Hydra zu demonstrieren.

Bevor wir beginnen, sollten wir einige grundlegende Konzepte verstehen:

  • HTTP (Hypertext Transfer Protocol): Die Grundlage der Datenkommunikation im World Wide Web.
  • Hydra: Ein parallelisierter Anmelde-Cracker, der zahlreiche Protokolle zum Angriff unterstützt.
  • Ziel (Target): In unserem Fall ein Webserver mit einem Anmeldeformular.
  • Benutzernamenliste (Username List): Eine Datei, die eine Liste möglicher Benutzernamen enthält.
  • Passwortliste (Password List): Eine Datei, die eine Liste möglicher Passwörter enthält.

Zunächst erstellen wir eine einfache Benutzernamenliste und Passwortliste. Wir verwenden nano, um diese Dateien im Verzeichnis ~/project zu erstellen.

Erstellen Sie eine Datei namens users.txt mit folgendem Inhalt:

nano ~/project/users.txt

Fügen Sie die folgenden Benutzernamen zur Datei hinzu:

admin
user
test

Speichern Sie die Datei, indem Sie Strg+X, dann Y und anschließend Enter drücken.

Als Nächstes erstellen Sie eine Datei namens passwords.txt mit folgendem Inhalt:

nano ~/project/passwords.txt

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

password
123456
test

Speichern Sie die Datei, indem Sie Strg+X, dann Y und anschließend Enter drücken.

Nehmen wir nun an, dass wir einen Webserver auf 127.0.0.1 auf Port 80 mit einem Anmeldeformular haben. Das Formular erfordert einen Benutzernamen und ein Passwort, und die Anmeldeseite befindet sich unter /login.php. Wir verwenden Hydra, um das Anmelden zu knacken.

Hinweis: In diesem Lab simulieren wir den HTTP-Dienst. In einer realen Welt würden Sie 127.0.0.1 durch die tatsächliche IP-Adresse oder den Domainnamen des Zielservers ersetzen.

Um den grundlegenden HTTP-Angriff auszuführen, verwenden Sie den folgenden Befehl:

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Lassen Sie uns diesen Befehl analysieren:

  • hydra: Der Hydra-Befehl.
  • -L ~/project/users.txt: Gibt die Benutzernamenlisten-Datei an.
  • -P ~/project/passwords.txt: Gibt die Passwortlisten-Datei an.
  • 127.0.0.1: Die Ziel-IP-Adresse.
  • http-post-form: Gibt das HTTP POST-Formular-Angriffsmodul an.
  • "/login.php:username=^USER^&password=^PASS^:Invalid username or password": Gibt die Anmeldeseite, die Benutzernamen- und Passwortfelder sowie die Fehlermeldung bei fehlgeschlagenem Login an. ^USER^ und ^PASS^ sind Platzhalter, die Hydra durch Benutzernamen und Passwörter aus den Listen ersetzt.

Nachdem Sie den Befehl ausgeführt haben, wird Hydra versuchen, sich mit jeder Benutzernamen- und Passwortkombination anzumelden. Wenn ein erfolgreiches Login gefunden wird, wird Hydra den Benutzernamen und das Passwort anzeigen.

Beispielausgabe (bei Erfolg):

Hydra v9.6 (c) 2024 by van Hauser/THC - Use freely but only for legal purposes.

Hydra is starting...

[DATA] 1 task, 3 servers, 3 login tries (l:3/p:3), ~1 try per server
[DATA] attacking service http-post-form on port 80
[ATTACK] attacking 127.0.0.1:80/login.php
[80][http-post-form] host: 127.0.0.1   login: admin   password: password

Diese Ausgabe zeigt an, dass Hydra erfolgreich die Kombination aus Benutzername admin und Passwort password gefunden hat.

Wenn kein erfolgreiches Login gefunden wird, wird Hydra ohne Anzeige von erfolgreichen Anmeldeinformationen beendet.

Speichern der Ergebnisse mit der -o-Option

In diesem Schritt lernen wir, wie man die Ergebnisse eines Hydra-Angriffs in einer Datei speichert, indem man die -o-Option verwendet. Dies ist nützlich, um die Ergebnisse später zu analysieren oder für Berichtszwecke.

Die -o-Option ermöglicht es Ihnen, eine Ausgabedatei anzugeben, in der Hydra die geknackten Zugangsdaten speichert. Wenn Hydra eine gültige Kombination aus Benutzername und Passwort findet, wird diese in die angegebene Datei geschrieben.

Wir setzen mit demselben Szenario wie im vorherigen Schritt fort. Wir haben einen Webserver, der auf 127.0.0.1 auf Port 80 läuft und ein Anmeldeformular unter /login.php hat. Wir verwenden die gleichen Dateien users.txt und passwords.txt.

Um die Ergebnisse in einer Datei namens hydra.log im Verzeichnis ~/project zu speichern, verwenden Sie den folgenden Befehl:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Der einzige Unterschied zum vorherigen Befehl ist die Hinzufügung der Option -o ~/project/hydra.log. Dies teilt Hydra mit, die Ergebnisse in die Datei hydra.log zu speichern.

Nachdem Sie den Befehl ausgeführt haben, wird Hydra versuchen, sich mit jeder Benutzernamen- und Passwortkombination anzumelden. Wenn ein erfolgreiches Login gefunden wird, werden der Benutzername und das Passwort in die Datei hydra.log geschrieben.

Um den Inhalt der Datei hydra.log anzuzeigen, können Sie den Befehl cat verwenden:

cat ~/project/hydra.log

Beispielausgabe (bei Erfolg):

Wenn Hydra die Kombination admin:password findet, enthält die Datei hydra.log eine Zeile ähnlich der folgenden:

127.0.0.1 http-post-form: admin:password

Wenn kein erfolgreiches Login gefunden wird, ist die Datei hydra.log leer.

Es ist wichtig zu beachten, dass die -o-Option die Ausgabedatei überschreibt, wenn sie bereits existiert. Wenn Sie die Ergebnisse an eine vorhandene Datei anhängen möchten, können Sie stattdessen die -O-Option (großes O) verwenden. In diesem Lab konzentrieren wir uns jedoch auf die -o-Option.

Ausgabe im JSON-Format mit der -b-Option

In diesem Schritt werden wir untersuchen, wie man die Ergebnisse eines Hydra-Angriffs im JSON-Format ausgibt, indem man die -b-Option verwendet. JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das für Menschen einfach zu lesen und zu schreiben und für Maschinen einfach zu parsen und zu generieren ist. Dieses Format ist besonders nützlich, wenn Sie die Ergebnisse programmgesteuert verarbeiten müssen.

Die -b-Option, in Kombination mit der -o-Option, teilt Hydra mit, die Ausgabe im JSON-Format in die angegebene Datei zu speichern.

Wir setzen mit demselben Szenario wie zuvor fort. Wir haben einen Webserver, der auf 127.0.0.1 auf Port 80 läuft und ein Anmeldeformular unter /login.php hat. Wir verwenden die gleichen Dateien users.txt und passwords.txt.

Um die Ergebnisse im JSON-Format in einer Datei namens hydra.json im Verzeichnis ~/project zu speichern, verwenden Sie den folgenden Befehl:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

In diesem Befehl haben wir die -b-Option zusammen mit der -o ~/project/hydra.json-Option hinzugefügt. Dies weist Hydra an, die Ausgabe im JSON-Format in die Datei hydra.json zu speichern.

Nachdem Sie den Befehl ausgeführt haben, wird Hydra versuchen, sich mit jeder Benutzernamen- und Passwortkombination anzumelden. Wenn ein erfolgreiches Login gefunden wird, werden der Benutzername und das Passwort im JSON-Format in die Datei hydra.json geschrieben.

Um den Inhalt der Datei hydra.json anzuzeigen, können Sie den Befehl cat verwenden:

cat ~/project/hydra.json

Beispielausgabe (bei Erfolg):

Wenn Hydra die Kombination admin:password findet, enthält die Datei hydra.json ein JSON-Objekt ähnlich dem folgenden:

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Wenn kein erfolgreiches Login gefunden wird, enthält die Datei hydra.json ein leeres JSON-Array:

[]

Dieses JSON-Format ermöglicht es Ihnen, die Ergebnisse einfach mit Skriptsprachen wie Python oder JavaScript für weitere Analysen oder Automatisierungen zu parsen.

Vergleich von Text- und JSON-Ausgaben

In diesem Schritt vergleichen wir die Text- und JSON-Ausgaben, die von Hydra generiert werden. Dies hilft Ihnen, die Unterschiede zwischen den beiden Formaten zu verstehen und zu wissen, wann Sie jedes Format verwenden sollten.

Wir verwenden weiterhin dasselbe Szenario: Ein Webserver, der auf 127.0.0.1 auf Port 80 läuft und ein Anmeldeformular unter /login.php hat, sowie die Dateien users.txt und passwords.txt.

Zunächst lassen wir Hydra laufen, um sowohl eine Text- als auch eine JSON-Ausgabedatei zu generieren.

Führen Sie den folgenden Befehl aus, um die Text-Ausgabedatei (hydra.log) zu generieren:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Als Nächstes führen Sie den folgenden Befehl aus, um die JSON-Ausgabedatei (hydra.json) zu generieren:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Jetzt vergleichen wir den Inhalt der beiden Dateien.

Zeigen Sie den Inhalt der Text-Ausgabedatei (hydra.log) mit dem cat-Befehl an:

cat ~/project/hydra.log

Beispielausgabe (bei Erfolg):

127.0.0.1 http-post-form: admin:password

Zeigen Sie den Inhalt der JSON-Ausgabedatei (hydra.json) mit dem cat-Befehl an:

cat ~/project/hydra.json

Beispielausgabe (bei Erfolg):

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Vergleich:

  • Text-Ausgabe: Die Text-Ausgabe ist ein einfaches, für Menschen lesbares Format. Man kann schnell die geknackten Benutzernamen und Passwörter sehen. Allerdings ist es für Maschinen nicht leicht zu parsen.
  • JSON-Ausgabe: Die JSON-Ausgabe ist ein strukturiertes Format, das für Maschinen leicht zu parsen ist. Sie enthält mehr Informationen als die Text-Ausgabe, wie z. B. den Host, den Port und den Dienst. Allerdings ist es nicht so für Menschen lesbar wie die Text-Ausgabe.

Wann welches Format verwenden:

  • Verwenden Sie die Text-Ausgabe, wenn Sie schnell die geknackten Benutzernamen und Passwörter sehen müssen und die Ergebnisse nicht programmgesteuert verarbeiten müssen.
  • Verwenden Sie die JSON-Ausgabe, wenn Sie die Ergebnisse programmgesteuert verarbeiten müssen, z. B. für Berichte oder Automatisierungen.

Zusammenfassend hängt die Wahl zwischen Text- und JSON-Ausgabe von Ihren spezifischen Bedürfnissen ab. Wenn Sie ein für Menschen lesbares Format benötigen, verwenden Sie die Text-Ausgabe. Wenn Sie ein für Maschinen lesbares Format benötigen, verwenden Sie die JSON-Ausgabe.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man einen grundlegenden HTTP-Angriff mit Hydra, einem leistungsstarken Passwortknackungstool, durchführt. Wir haben Benutzernamen- und Passwortlisten mit nano erstellt und dann Hydra verwendet, um ein simuliertes HTTP-Anmeldeformular auf 127.0.0.1 zu knacken. Der Befehl hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password" wurde verwendet, um den Angriff auszuführen, wobei das Endpunkt /login.php mit den angegebenen Benutzernamen- und Passwortparametern angegriffen wurde.