Hydra-Angriffe frühzeitig stoppen

HydraBeginner
Jetzt üben

Einführung

In diesem Lab untersuchen wir, wie sich Hydra-Angriffe mithilfe von Optionen frühzeitig beenden lassen, um die Anzahl der Versuche zu begrenzen. Zunächst richten wir mit vsftpd einen FTP-Server ein und konfigurieren mehrere Benutzerkonten: testuser1 und testuser2, jeweils mit einem eigenen Passwort. Dadurch können wir ein Szenario simulieren, in dem Hydra versucht, mehrere Konten gleichzeitig zu knacken.

Anschließend werden Sie durch die Verwendung der Option -f geführt, mit der Hydra nach dem ersten erfolgreichen Login beendet wird, sowie durch die Verwendung von -F mit einer Liste mehrerer Hosts. Abschließend vergleichen wir das Verhalten von -f und -F, um zu verstehen, wie sich damit Hydra-Angriffe begrenzen lassen.

FTP mit mehreren Zugangsdaten einrichten

In diesem Schritt richten wir einen FTP-Server ein und konfigurieren ihn mit mehreren Benutzerzugängen. So können wir testen, ob Hydra mehrere Konten gleichzeitig knacken kann. Als FTP-Server verwenden wir vsftpd (Very Secure FTP Daemon).

Zunächst installieren wir vsftpd. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:

sudo apt update
sudo apt install vsftpd -y

Als Nächstes konfigurieren wir vsftpd. Zuerst erstellen wir eine Sicherungskopie der ursprünglichen Konfigurationsdatei. Das ist eine bewährte Vorgehensweise, bevor Änderungen an Systemkonfigurationsdateien vorgenommen werden.

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

Nun 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 Editor nano die folgenden Zeilen ein oder ändern Sie die entsprechenden Einträge. Diese Einstellungen deaktivieren den anonymen Zugriff, aktivieren Logins lokaler Benutzer, erlauben Schreibzugriff und sperren lokale Benutzer aus Sicherheitsgründen in ihre jeweiligen Home-Verzeichnisse ein.

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

Um die Datei in nano zu speichern, drücken Sie Ctrl + X, anschließend zur Bestätigung Y und danach Enter, um den Dateinamen zu bestätigen.

Prüfen Sie nach dem Speichern mit dem folgenden Befehl, ob die Änderungen korrekt übernommen wurden:

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

Vergewissern Sie sich, dass die Ausgabe der von uns eingetragenen Konfiguration entspricht.

Nun erstellen wir mehrere Benutzerkonten. Wir legen die beiden Benutzer testuser1 und testuser2 an und vergeben Passwörter für sie. Hydra wird diese Benutzer später für die Login-Versuche verwenden.

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. Dadurch eignen sie sich besser für automatisierte Umgebungen.

Nun müssen wir die Berechtigungen der Home-Verzeichnisse für die Chroot-Konfiguration anpassen. Wenn chroot_local_user=YES aktiviert ist, darf das Home-Verzeichnis des Benutzers aus Sicherheitsgründen nicht für diesen beschreibbar sein:

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

Erstellen Sie für jeden Benutzer ein beschreibbares Unterverzeichnis, in das Dateien hochgeladen werden können:

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

Starten Sie anschließend den Dienst vsftpd neu, damit die Änderungen an der Konfigurationsdatei übernommen und die neuen Benutzer erkannt werden.

sudo service vsftpd restart

Nun testen wir den FTP-Server, um sicherzustellen, dass er ordnungsgemäß läuft und sich die neuen Benutzer anmelden können. Verwenden Sie dazu den FTP-Befehlszeilenclient. Da der Server lokal ausgeführt wird, verbinden wir uns mit localhost.

ftp localhost

Sie werden zur Eingabe eines Benutzernamens aufgefordert. Geben Sie testuser1 und anschließend das Passwort password123 ein. Wenn alles korrekt konfiguriert ist, sollte eine Meldung erscheinen, die den erfolgreichen Login bestätigt.

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>

Mit bye können Sie den FTP-Client beenden.

ftp> bye
221 Goodbye.

Nun bereiten wir die Dateien vor, die Hydra für den Angriff verwendet. Wechseln Sie in Ihr Verzeichnis ~/project, das als standardmäßiges Arbeitsverzeichnis dient.

cd ~/project

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

nano users.txt

Fügen Sie die folgenden Benutzernamen in users.txt ein:

testuser1
testuser2

Speichern Sie die Datei und beenden Sie nano.

Erstellen Sie als Nächstes im Verzeichnis ~/project eine Datei namens passwords.txt. Diese Datei enthält eine Liste von Passwörtern, darunter die korrekten Passwörter unserer Testbenutzer sowie einige häufig verwendete falsche Passwörter.

nano passwords.txt

Fügen Sie die folgenden Passwörter in passwords.txt ein:

password123
password456
password
123456
qwerty

Speichern Sie die Datei und beenden Sie nano.

Damit verfügen wir über einen eingerichteten FTP-Server mit mehreren Benutzerkonten sowie über Listen mit Benutzernamen und Passwörtern, die Hydra zum Testen der Konten verwenden kann.

Mit -f nach dem ersten gültigen Paar stoppen

In diesem Schritt verwenden wir Hydras Option -f. Sie weist Hydra an, nach dem ersten gültigen Benutzername-Passwort-Paar für ein einzelnes Ziel aufzuhören. Das ist nützlich, wenn Sie für einen bestimmten Dienst nur ein gültiges Konto finden möchten und Hydra nach einem erfolgreichen Login keine weiteren Kombinationen mehr testen soll.

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

cd ~/project

Nun führen wir Hydra mit den im vorherigen Schritt erstellten Benutzer- und Passwortlisten gegen unseren FTP-Server aus. Dabei verwenden wir die Option -f.

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

Sehen wir uns den Befehl im Einzelnen an:

  • hydra: Das Befehlszeilenprogramm für Brute-Force-Angriffe.
  • -L users.txt: Gibt die Datei mit der Liste der Benutzernamen an (users.txt im aktuellen Verzeichnis).
  • -P passwords.txt: Gibt die Datei mit der Liste der Passwörter an (passwords.txt im aktuellen Verzeichnis).
  • localhost: Die Adresse des FTP-Zielservers.
  • ftp: Das anzugreifende Dienstprotokoll, in diesem Fall FTP.
  • -f: Die entscheidende Option. Sie weist Hydra an, nach dem ersten gültigen Benutzername-Passwort-Paar aufzuhören.

Beobachten Sie die Ausgabe im Terminal. Hydra versucht, sich mit den Benutzernamen und Passwörtern aus den Listen anzumelden. Sobald eine gültige Kombination gefunden wird, beispielsweise testuser1:password123, zeigt Hydra den erfolgreichen Login an und beendet den Vorgang.

Die Ausgabe sollte ungefähr so aussehen:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-29 14:41:46
[DATA] max 10 tasks per 1 server, overall 10 tasks, 10 login tries (l:2/p:5), ~1 try per task
[DATA] attacking ftp://localhost:21/
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-29 14:41:47

Beachten Sie, dass Hydra unmittelbar nach dem Finden der ersten gültigen Kombination (testuser1:password123) stoppt. Ohne die Option -f hätte Hydra weiterhin alle übrigen Kombinationen aus passwords.txt für testuser1 ausprobiert und anschließend auch für testuser2 sämtliche Passwörter getestet.

Diese Option ist besonders nützlich, wenn Sie einen bestimmten Dienst prüfen und lediglich feststellen möchten, ob mindestens ein Konto angreifbar ist. Dadurch lassen sich erheblich Zeit und Ressourcen sparen.

-F mit einer Liste mehrerer Hosts testen

In diesem Schritt untersuchen wir Hydras Option -F. Im Gegensatz zu -f, das nach dem ersten gültigen Zugangsdatenpaar für einen einzelnen Host stoppt, beendet -F den Angriff, sobald über alle Hosts einer Liste hinweg das erste gültige Zugangsdatenpaar gefunden wurde. Das ist besonders nützlich, wenn Sie mehrere Systeme prüfen und lediglich einen einzigen angreifbaren Eintrag finden müssen.

Zur Veranschaulichung simulieren wir ein Szenario mit mehreren Hosts. Da uns nur eine virtuelle Maschine zur Verfügung steht, verwenden wir localhost mehrfach in der Hostliste, um verschiedene Ziele nachzubilden.

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

cd ~/project

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

nano hosts.txt

Fügen Sie die folgenden Zeilen in hosts.txt ein:

localhost
localhost

Speichern Sie die Datei und beenden Sie nano. Durch die zweimalige Aufnahme von localhost weisen wir Hydra an, zwei separate Ziele zu behandeln, obwohl beide auf denselben Rechner zeigen.

Nun führen wir Hydra mit der Option -F gegen die in hosts.txt angegebene Hostliste aus.

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

Sehen wir uns den Befehl im Einzelnen an:

  • -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: Die neue Option. Sie gibt die Datei mit der Liste der Zielhosts an (hosts.txt im aktuellen Verzeichnis).
  • ftp: Das anzugreifende Dienstprotokoll.
  • -F: Die entscheidende Option. Sie weist Hydra an, nach dem ersten erfolgreichen Login auf einem beliebigen Host der Liste aufzuhören.

Beobachten Sie die Ausgabe im Terminal. Hydra versucht, sich auf jedem in hosts.txt aufgeführten Host mit den Benutzernamen und Passwörtern aus den Listen anzumelden. Sobald auf einem der Hosts eine gültige Kombination gefunden wird, zeigt Hydra den erfolgreichen Login an und beendet den Angriff gegen alle in hosts.txt aufgeführten Hosts.

Die Ausgabe sollte ungefähr so aussehen:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-29 14:42:10
[DATA] max 10 tasks per 2 servers, overall 20 tasks, 10 login tries (l:2/p:5), ~1 try per task
[DATA] attacking ftp://(2 targets):21/
[21][ftp] host: localhost   login: testuser1   password: password123
[STATUS] attack finished for localhost (valid pair found)
2 of 2 targets successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-29 14:42:11

Obwohl hosts.txt zwei Einträge für localhost enthält, stoppt Hydra, sobald beim ersten localhost-Eintrag der erste erfolgreiche Login gefunden wurde. Es versucht nicht, Zugangsdaten für den zweiten localhost-Eintrag zu ermitteln. Damit wird die Wirkung der Option -F veranschaulicht.

Die Option -F ist besonders hilfreich, wenn Sie mehrere Systeme prüfen und nur ein angreifbares System finden müssen, um Ihr Ziel zu erreichen. Der Zeit- und Rechenaufwand lässt sich deutlich reduzieren, da der Angriff beendet wird, sobald auf einem der aufgeführten Ziele eine Schwachstelle gefunden wurde.

Verhalten von -f und -F vergleichen

In diesem Schritt vergleichen wir das Verhalten der Optionen -f und -F direkt miteinander, um die Unterschiede zu festigen. Wir verwenden dieselbe Umgebung wie in den vorherigen Schritten: einen auf localhost laufenden FTP-Server, die Dateien users.txt und passwords.txt sowie die Datei hosts.txt mit zwei localhost-Einträgen.

Zunächst führen wir den Befehl mit der Option -f erneut aus. Dieser Befehl richtet sich gegen einen einzelnen Host (localhost) und stoppt, sobald für diesen Host die ersten gültigen Zugangsdaten gefunden wurden.

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

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

Nun führen wir den Befehl erneut mit der Option -F aus. Dieser Befehl richtet sich gegen eine Liste von Hosts (hosts.txt) und stoppt, sobald auf einem beliebigen Host dieser Liste die ersten gültigen Zugangsdaten gefunden wurden.

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

Wie in Schritt 3 beobachtet, findet Hydra beim ersten localhost-Eintrag in hosts.txt die Zugangsdaten testuser1:password123 und stoppt anschließend. Der zweite localhost-Eintrag in hosts.txt wird nicht mehr überprüft.

Der entscheidende Unterschied liegt darin, wie Hydra das Ziel interpretiert und wann der Angriff beendet wird:

  • -f (einzelnes Ziel): Wenn Sie ein einzelnes Ziel angeben, beispielsweise localhost, weist -f Hydra an, aufzuhören, sobald irgendein gültiges Benutzername-Passwort-Paar für dieses konkrete Ziel gefunden wird. Nach weiteren gültigen Zugangsdaten auf demselben Ziel wird nicht mehr gesucht.

  • -F (Liste mehrerer Hosts): Wenn Sie mit -M eine Zielliste angeben, weist -F Hydra an, aufzuhören, sobald auf einem beliebigen Host dieser Liste irgendein gültiges Benutzername-Passwort-Paar gefunden wird. Hydra sucht weder auf demselben Host nach weiteren gültigen Zugangsdaten noch prüft es anschließend weitere Hosts der Liste.

Zur weiteren Veranschaulichung betrachten wir ein hypothetisches Szenario mit mehreren FTP-Servern im Netzwerk: ftp1.example.com, ftp2.example.com und ftp3.example.com.

  • Wenn Sie -f für ftp1.example.com verwenden, findet Hydra die ersten gültigen Zugangsdaten auf ftp1.example.com und stoppt. Wenn Sie anschließend ftp2.example.com prüfen möchten, müssen Sie dafür einen separaten Hydra-Befehl ausführen.

  • Wenn Sie alle drei Server in eine Datei hosts.txt eintragen und -F verwenden, beginnt Hydra mit der Prüfung von ftp1.example.com. Findet es dort gültige Zugangsdaten, wird der gesamte Vorgang sofort beendet, ohne überhaupt zu versuchen, eine Verbindung zu ftp2.example.com oder ftp3.example.com herzustellen.

Zusammengefasst:

  • Verwenden Sie -f, wenn Sie sich auf ein einzelnes Ziel konzentrieren und dafür mindestens gültige Zugangsdaten finden möchten.
  • Verwenden Sie -F, wenn Sie mehrere Ziele prüfen und den gesamten Vorgang beenden möchten, sobald auf einem beliebigen Ziel gültige Zugangsdaten gefunden werden.

Damit ist das Lab abgeschlossen. Sie haben erfolgreich einen FTP-Server eingerichtet, mehrere Benutzerkonten konfiguriert und Hydra zum Knacken dieser Konten verwendet. Dabei haben Sie die Optionen -f und -F kennengelernt, mit denen sich das Angriffsverhalten von Hydra steuern lässt.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie sich das Angriffsverhalten von Hydra mit den Optionen -f und -F steuern lässt. Zunächst richteten Sie mit vsftpd einen lokalen FTP-Server ein und konfigurierten mehrere Benutzerkonten (testuser1 und testuser2), um ein praxisnahes Szenario zu simulieren. Außerdem erstellten Sie die Dateien users.txt und passwords.txt, die Hydra verwenden sollte.

Anschließend verwendeten Sie die Option -f, um Hydra anzuweisen, nach dem ersten gültigen Benutzername-Passwort-Paar für ein einzelnes Ziel aufzuhören. Dadurch wurde gezeigt, wie sich effizient ein einzelnes angreifbares Konto finden lässt. Danach untersuchten Sie die Option -F mit einer Liste mehrerer Hosts (hosts.txt) und lernten, wie Hydra einen Angriff auf mehrere Ziele vollständig beenden kann, sobald auf einem der aufgeführten Hosts gültige Zugangsdaten gefunden wurden.

Abschließend verglichen Sie die unterschiedlichen Verhaltensweisen von -f und -F und verstanden deren jeweilige Einsatzbereiche: -f zum Stoppen nach dem ersten Erfolg auf einem einzelnen Ziel und -F zum Stoppen nach dem ersten Erfolg über mehrere Ziele hinweg. Dieses Wissen ist entscheidend, um Brute-Force-Angriffe zu optimieren und Ressourcen effizient zu verwalten.