Hydra-Angriffe frühzeitig stoppen

HydraHydraBeginner
Jetzt üben

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

Einführung

In diesem Labor untersuchen wir, wie Hydra-Angriffe frühzeitig gestoppt werden können, indem wir die Optionen zur Begrenzung der Versuche nutzen. Wir beginnen mit der Einrichtung eines FTP-Servers mit vsftpd und der Konfiguration mit mehreren Benutzerkonten, testuser1 und testuser2, die jeweils über ein eigenes Passwort verfügen. Diese Einrichtung ermöglicht es uns, ein Szenario zu simulieren, in dem Hydra versucht, mehrere Konten gleichzeitig zu knacken.

Das Labor führt Sie dann durch die Verwendung der Option -f, um Hydra nach der ersten erfolgreichen Anmeldung zu stoppen, und der Option -F mit einer Multi-Host-Liste. Abschließend vergleichen wir das Verhalten von -f und -F, um zu verstehen, wie sie zur Minderung von Hydra-Angriffen eingesetzt werden können.

Einrichtung von FTP mit mehreren Anmeldeinformationen

In diesem Schritt richten wir einen FTP-Server ein und konfigurieren ihn mit mehreren Benutzeranmeldeinformationen. Dies ermöglicht es uns, die Fähigkeit von Hydra zu testen, mehrere Konten gleichzeitig zu knacken. Wir verwenden vsftpd (Very Secure FTP Daemon) als unseren FTP-Server.

Zuerst installieren wir vsftpd. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

sudo apt update
sudo apt install vsftpd -y

Als Nächstes müssen wir vsftpd konfigurieren. Wir beginnen mit dem Erstellen einer Sicherungskopie der ursprünglichen Konfigurationsdatei. Dies ist eine gute Praxis, bevor Sie Änderungen an Systemkonfigurationsdateien vornehmen.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Jetzt bearbeiten wir die Konfigurationsdatei /etc/vsftpd.conf mit nano. Diese Datei steuert das Verhalten des FTP-Servers.

sudo nano /etc/vsftpd.conf

Fügen Sie im nano-Editor die folgenden Zeilen hinzu oder ändern Sie sie. Diese Einstellungen deaktivieren den anonymen Zugriff, aktivieren lokale Benutzeranmeldungen, ermöglichen den Schreibzugriff und führen lokale Benutzer für die Sicherheit in ihre Home-Verzeichnisse ein.

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO

Zum Speichern der Datei in nano:

  1. Drücken Sie Strg + X, um zu beenden.
  2. Drücken Sie Y, um das Speichern zu bestätigen.
  3. Drücken Sie die Eingabetaste, um den Dateinamen zu bestätigen.

Nach dem Speichern der Datei überprüfen Sie die Konfigurationsdatei, um sicherzustellen, dass die Änderungen korrekt angewendet wurden, indem Sie den folgenden Befehl verwenden:

sudo cat /etc/vsftpd.conf | grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|listen)"

Stellen Sie sicher, dass die Ausgabe dieselbe Konfiguration wie die von uns hinzugefügte zeigt.

Jetzt erstellen wir mehrere Benutzerkonten. Wir erstellen zwei Benutzer: testuser1 und testuser2 und legen Passwörter für sie fest. Diese Benutzer werden von Hydra verwendet, um sich anzumelden zu versuchen.

Erstellen Sie testuser1 mit einem Home-Verzeichnis:

sudo useradd -m testuser1

Legen Sie das Passwort für testuser1 mit einem nicht interaktiven Befehl fest:

echo 'testuser1:password123' | sudo chpasswd

Erstellen Sie testuser2 mit einem Home-Verzeichnis:

sudo useradd -m testuser2

Legen Sie das Passwort für testuser2 mit einem nicht interaktiven Befehl fest:

echo 'testuser2:password456' | sudo chpasswd

Diese Befehle sind nicht interaktiv und erstellen die Benutzer direkt, ohne Eingaben abzufragen, was sie in automatisierten Umgebungen zuverlässiger macht.

Jetzt müssen wir die Berechtigungen des Home-Verzeichnisses für die chroot-Konfiguration korrigieren. Wenn chroot_local_user=YES aktiviert ist, darf das Home-Verzeichnis des Benutzers aus Sicherheitsgründen nicht vom Benutzer beschreibbar sein:

sudo chmod 755 /home/testuser1
sudo chmod 755 /home/testuser2

Erstellen Sie ein beschreibbares Unterverzeichnis für jeden Benutzer, in dem er Dateien hochladen kann:

sudo mkdir /home/testuser1/files
sudo mkdir /home/testuser2/files
sudo chown testuser1:testuser1 /home/testuser1/files
sudo chown testuser2:testuser2 /home/testuser2/files

Als Nächstes starten Sie den vsftpd-Dienst neu, um die vorgenommenen Änderungen an der Konfigurationsdatei anzuwenden und die neuen Benutzer zu erkennen.

sudo service vsftpd restart

Jetzt testen wir den FTP-Server, um sicherzustellen, dass er korrekt läuft und unsere neuen Benutzer sich anmelden können. Sie können den ftp-Befehlszeilenclient verwenden, um eine Verbindung zum Server herzustellen. Da wir den Server lokal ausführen, können wir uns mit localhost verbinden.

ftp localhost

Sie werden nach einem Benutzernamen gefragt. Geben Sie testuser1 und dann das Passwort password123 ein. Wenn alles korrekt konfiguriert ist, sollten Sie eine Meldung erhalten, die anzeigt, dass Sie angemeldet sind.

Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:labex): testuser1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Sie können bye eingeben, um den FTP-Client zu beenden.

ftp> bye
221 Goodbye.

Jetzt bereiten wir die Dateien vor, die Hydra für seinen Angriff verwenden wird. Navigieren Sie zu Ihrem Verzeichnis ~/project, Ihrem Standardarbeitsverzeichnis.

cd ~/project

Erstellen Sie eine Datei namens users.txt im Verzeichnis ~/project. Diese Datei enthält die Benutzernamen, die Hydra verwenden wird.

nano users.txt

Fügen Sie die folgenden Benutzernamen zu users.txt hinzu:

testuser1
testuser2

Speichern Sie die Datei und beenden Sie nano.

Erstellen Sie als Nächstes eine Datei namens passwords.txt im Verzeichnis ~/project. Diese Datei enthält eine Liste von Passwörtern, einschließlich der korrekten für unsere Testbenutzer, sowie einige gängige falsche Passwörter.

nano passwords.txt

Fügen Sie die folgenden Passwörter zu passwords.txt hinzu:

password123
password456
password
123456
qwerty

Speichern Sie die Datei und beenden Sie nano.

Wir haben nun einen FTP-Server mit mehreren Benutzerkonten und einer Liste von Benutzernamen und Passwörtern eingerichtet, die Hydra verwenden kann, um zu versuchen, die Konten zu knacken.

Ausführung mit -f zum Stoppen nach dem ersten Paar

In diesem Schritt verwenden wir die Option -f mit Hydra. Die Option -f teilt Hydra mit, dass es nach dem Auffinden des ersten gültigen Benutzername/Passwort-Paares für ein einzelnes Ziel stoppen soll. Dies ist nützlich, wenn Sie nur ein gültiges Konto auf einem bestimmten Dienst finden müssen und nicht möchten, dass Hydra nach einer erfolgreichen Anmeldung weitere Kombinationen ausprobiert.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden.

cd ~/project

Führen wir nun Hydra gegen unseren FTP-Server mit den Benutzernamen- und Passwortlisten aus, die wir im vorherigen Schritt erstellt haben. Wir werden die Option -f einschließen.

hydra -L users.txt -P passwords.txt localhost ftp -f

Zerlegen wir diesen Befehl:

  • hydra: Das Befehlszeilentool zum Brute-Forcing.
  • -L users.txt: Gibt die Datei mit der Liste der Benutzernamen (users.txt im aktuellen Verzeichnis) an.
  • -P passwords.txt: Gibt die Datei mit der Liste der Passwörter (passwords.txt im aktuellen Verzeichnis) an.
  • localhost: Die Adresse des Ziel-FTP-Servers.
  • ftp: Das Dienstprotokoll, das angegriffen werden soll (in diesem Fall FTP).
  • -f: Dies ist die entscheidende Option, die Hydra anweist, nach dem Auffinden des ersten gültigen Benutzername/Passwort-Paares zu stoppen.

Beobachten Sie die Ausgabe in Ihrem Terminal. Hydra versucht, sich mit den Benutzernamen und Passwörtern aus den Listen anzumelden. Sobald es eine gültige Kombination findet (z. B. testuser1:password123), zeigt es die erfolgreiche Anmeldung an und stoppt dann seinen Betrieb.

Die Ausgabe sollte ähnlich wie folgt aussehen:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Bitte verwenden Sie Vorsicht!

Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2025-05-29 14:41:46
[DATA] max 10 Aufgaben pro 1 Server, insgesamt 10 Aufgaben, 10 Anmeldeversuche (l:2/p:5), ~1 Versuch pro Aufgabe
[DATA] Angriff auf ftp://localhost:21/
[21][ftp] Host: localhost   Login: testuser1   Passwort: password123
1 von 1 Ziel erfolgreich abgeschlossen, 1 gültiges Passwort gefunden
Hydra (https://github.com/vanhauser-thc/thc-hydra) beendet am 2025-05-29 14:41:47

Beachten Sie, dass Hydra sofort nach dem Auffinden der ersten gültigen Kombination (testuser1:password123) gestoppt wurde. Ohne die Option -f hätte Hydra weiterhin alle anderen Kombinationen in der Datei passwords.txt für testuser1 ausprobiert und sich dann an testuser2 gewandt und alle Passwörter für diesen Benutzer ebenfalls ausprobiert.

Diese Option ist besonders nützlich, wenn Sie einen bestimmten Dienst testen und nur überprüfen müssen, dass mindestens ein Konto anfällig ist, wodurch erhebliche Zeit und Ressourcen eingespart werden.

Test von -F mit einer Liste mit mehreren Hosts

In diesem Schritt untersuchen wir die Option -F in Hydra. Im Gegensatz zu -f, die nach dem Auffinden des ersten gültigen Anmeldepaares für einen einzelnen Host stoppt, stoppt -F nach dem Auffinden des ersten gültigen Anmeldepaares über alle Hosts in einer Liste. Dies ist besonders nützlich, wenn Sie mehrere Systeme angreifen und nur einen anfälligen Eintrag unter ihnen finden müssen.

Um dies zu demonstrieren, simulieren wir ein Szenario mit mehreren Hosts. Da wir nur eine virtuelle Maschine haben, verwenden wir localhost mehrmals in unserer Hostliste, um verschiedene Ziele zu simulieren.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden.

cd ~/project

Erstellen Sie nun eine Datei namens hosts.txt in Ihrem Verzeichnis ~/project. Diese Datei enthält eine Liste der Zielhosts.

nano hosts.txt

Fügen Sie die folgenden Zeilen zu hosts.txt hinzu:

localhost
localhost

Speichern Sie die Datei und beenden Sie nano. Durch die doppelte Auflistung von localhost teilen wir Hydra mit, dass es zwei separate Ziele behandeln soll, obwohl sie auf dieselbe Maschine verweisen.

Jetzt führen wir Hydra mit der Option -F aus und zielen auf die Liste der Hosts ab, die in hosts.txt angegeben sind.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Zerlegen wir diesen Befehl:

  • -L users.txt: Gibt die Datei mit der Liste der Benutzernamen an.
  • -P passwords.txt: Gibt die Datei mit der Liste der Passwörter an.
  • -M hosts.txt: Dies ist die neue Option. Sie gibt die Datei mit der Liste der Zielhosts (hosts.txt im aktuellen Verzeichnis) an.
  • ftp: Das Dienstprotokoll, das angegriffen werden soll.
  • -F: Dies ist die entscheidende Option, die Hydra anweist, nach dem Auffinden der ersten erfolgreichen Anmeldung über alle Hosts in der Liste zu stoppen.

Beobachten Sie die Ausgabe in Ihrem Terminal. Hydra versucht, sich bei jedem Host in der Datei hosts.txt mit den Benutzernamen und Passwörtern aus den Listen anzumelden. Sobald es eine gültige Kombination auf einem der Hosts findet, zeigt es die erfolgreiche Anmeldung an und stoppt dann den Angriff auf alle in hosts.txt aufgeführten Hosts.

Die Ausgabe sollte ähnlich wie folgt aussehen:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Bitte verwenden Sie Vorsicht!

Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2025-05-29 14:42:10
[DATA] max 10 Aufgaben pro 2 Servern, insgesamt 20 Aufgaben, 10 Anmeldeversuche (l:2/p:5), ~1 Versuch pro Aufgabe
[DATA] Angriff auf ftp://(2 Ziele):21/
[21][ftp] Host: localhost   Login: testuser1   Passwort: password123
[STATUS] Angriff für localhost beendet (gültiges Paar gefunden)
2 von 2 Ziele erfolgreich abgeschlossen, 1 gültiges Passwort gefunden
Hydra (https://github.com/vanhauser-thc/thc-hydra) beendet am 2025-05-29 14:42:11

Obwohl wir zwei Einträge für localhost in hosts.txt haben, stoppt Hydra nach dem Auffinden der ersten erfolgreichen Anmeldung beim ersten localhost-Eintrag. Es versucht nicht, Anmeldeinformationen für den zweiten localhost-Eintrag zu finden, was die Wirkung der Option -F demonstriert.

Die Option -F ist sehr nützlich, wenn Sie mehrere Systeme angreifen und nur ein anfälliges System finden müssen, um Ihr Ziel zu erreichen. Sie kann Zeit und Rechenressourcen erheblich sparen, indem der Angriff gestoppt wird, sobald eine Sicherheitslücke bei einem der aufgeführten Ziele gefunden wird.

Vergleich des Verhaltens von -f und -F

In diesem Schritt vergleichen wir direkt das Verhalten der Optionen -f und -F, um Ihr Verständnis ihrer Unterschiede zu festigen. Wir verwenden die gleiche Konfiguration wie in den vorherigen Schritten: einen FTP-Server auf localhost, die Dateien users.txt und passwords.txt sowie die Datei hosts.txt mit zwei Einträgen für localhost.

Führen wir zunächst den Befehl mit der Option -f erneut aus. Dieser Befehl zielt auf einen einzelnen Host (localhost) ab und stoppt, nachdem das erste gültige Anmeldepaar für diesen spezifischen Host gefunden wurde.

hydra -L users.txt -P passwords.txt localhost ftp -f

Wie wir in Schritt 2 beobachtet haben, findet Hydra testuser1:password123 und stoppt dann. Es versucht nicht, testuser2:password456 für localhost zu finden.

Führen wir nun den Befehl mit der Option -F erneut aus. Dieser Befehl zielt auf eine Liste von Hosts (hosts.txt) ab und stoppt, nachdem das erste gültige Anmeldepaar auf einem der Hosts in dieser Liste gefunden wurde.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Wie wir in Schritt 3 beobachtet haben, findet Hydra testuser1:password123 beim ersten Eintrag für localhost in hosts.txt und stoppt dann. Es geht nicht weiter, um den zweiten Eintrag für localhost in der Datei hosts.txt zu überprüfen.

Der entscheidende Unterschied liegt darin, wie Hydra das Ziel interpretiert und wann er entscheidet, anzuhalten:

  • -f (einzelnes Ziel): Wenn Sie ein einzelnes Ziel (z. B. localhost) angeben, teilt -f Hydra mit, dass es anhalten soll, sobald es ein gültiges Benutzername/Passwort-Paar für dieses spezifische Ziel findet. Es wird nicht weiter nach anderen gültigen Anmeldeinformationen für dasselbe Ziel suchen.

  • -F (Liste mit mehreren Hosts): Wenn Sie eine Liste von Zielen mit -M angeben, teilt -F Hydra mit, dass es anhalten soll, sobald es ein gültiges Benutzername/Passwort-Paar auf einem der Hosts in dieser Liste findet. Es wird nicht weiter nach anderen gültigen Anmeldeinformationen auf demselben Host suchen, noch wird es fortfahren, die folgenden Hosts in der Liste zu überprüfen.

Um den Unterschied weiter zu veranschaulichen, betrachten wir ein hypothetisches Szenario, in dem Sie ein Netzwerk mit mehreren FTP-Servern scannen: ftp1.example.com, ftp2.example.com und ftp3.example.com.

  • Wenn Sie -f verwenden und ftp1.example.com als Ziel angeben, findet Hydra die ersten gültigen Anmeldeinformationen auf ftp1.example.com und stoppt. Wenn Sie dann ftp2.example.com überprüfen möchten, müssen Sie einen separaten Hydra-Befehl dafür ausführen.

  • Wenn Sie alle drei Server in eine Datei hosts.txt aufnehmen und -F verwenden, beginnt Hydra mit der Überprüfung von ftp1.example.com. Wenn es dort gültige Anmeldeinformationen findet, stoppt es den gesamten Vorgang sofort, ohne auch nur zu versuchen, eine Verbindung zu ftp2.example.com oder ftp3.example.com herzustellen.

Zusammenfassend lässt sich sagen:

  • Verwenden Sie -f, wenn Sie sich auf ein einzelnes Ziel konzentrieren und mindestens ein gültiges Anmeldepaar dafür finden möchten.
  • Verwenden Sie -F, wenn Sie mehrere Ziele scannen und den gesamten Vorgang stoppen möchten, sobald beliebige gültige Anmeldeinformationen auf einem der Ziele gefunden werden.

Dies schließt das Labor ab. Sie haben erfolgreich einen FTP-Server eingerichtet, mehrere Benutzerkonten konfiguriert und Hydra verwendet, um die Konten zu knacken, wobei Sie die Optionen -f und -F untersucht haben, um das Verhalten des Hydra-Angriffs zu steuern.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie Sie das Angriffsverhalten von Hydra mithilfe der Optionen -f und -F steuern können. Sie haben zunächst einen lokalen FTP-Server mit vsftpd eingerichtet und ihn mit mehreren Benutzerkonten (testuser1 und testuser2) konfiguriert, um ein realitätsnahes Szenario zu simulieren. Sie haben auch die Dateien users.txt und passwords.txt für Hydra vorbereitet.

Anschließend haben Sie die Option -f verwendet, um Hydra anzuweisen, anzuhalten, nachdem das erste gültige Benutzername/Passwort-Paar für ein einzelnes Ziel gefunden wurde, und so demonstriert, wie man effizient ein einzelnes anfälliges Konto findet. Im Anschluss daran haben Sie die Option -F mit einer Liste mit mehreren Hosts (hosts.txt) untersucht und gelernt, wie Hydra einen gesamten Angriff auf mehrere Ziele stoppen kann, sobald ein einzelnes gültiges Anmeldepaar auf einem der aufgeführten Hosts gefunden wird.

Schließlich haben Sie das unterschiedliche Verhalten von -f und -F verglichen und deren jeweilige Anwendungsfälle verstanden: -f zum Anhalten nach dem ersten Erfolg bei einem einzelnen Ziel und -F zum Anhalten nach dem ersten Erfolg über mehrere Ziele hinweg. Dieses Wissen ist entscheidend für die Optimierung von Brute-Force-Angriffen und die effektive Ressourcenverwaltung.