Einführung
In diesem Labor lernen Sie, die Antwortwartezeiten von Hydra bei Angriffen auf Dienste mit potenziell langsamen oder unzuverlässigen Antworten zu optimieren. Wir verwenden SMTP als Beispiel, um diese Konzepte zu demonstrieren.
Sie beginnen mit der Einrichtung eines einfachen SMTP-Servers mit einer simulierten verzögerten Antwort mithilfe von Python. Dadurch können Sie eine langsame oder unzuverlässige Netzwerkumgebung simulieren. Anschließend führen Sie Hydra gegen diesen Server aus, zunächst mit den Standardwartezeit-Einstellungen und anschließend mit der Anpassung der Wartezeit über die Option -w, um deren Auswirkungen zu beobachten. Schließlich werden Sie die Optionen -l und -p zum direkten Spezifizieren einzelner Anmeldeinformationen erkunden und dies mit einem einzelnen Thread testen.
Einrichtung von SMTP mit verzögerter Antwort
In diesem Schritt richten Sie einen einfachen SMTP-Server mithilfe von Python ein. Dieser Server führt eine Verzögerung in seinen Antworten ein und simuliert so einen langsamen oder unzuverlässigen Dienst. Diese Einrichtung ist entscheidend, um zu verstehen, wie sich die Wartezeit-Einstellungen von Hydra auf seine Leistung auswirken.
Zuerst müssen Sie eine Python-Skriptdatei mit dem Namen delayed_smtp.py in Ihrem Verzeichnis ~/project erstellen. Dieses Skript fungiert als Ihr SMTP-Server.
Öffnen Sie den Texteditor nano, um diese Datei zu erstellen:
nano ~/project/delayed_smtp.py
Kopieren Sie nun den folgenden Python-Code in die Datei delayed_smtp.py:
import socket
import time
import threading
def handle_client(client_socket):
try:
## Begrüßung senden
client_socket.send(b"220 localhost ESMTP\r\n")
while True:
data = client_socket.recv(1024).decode('utf-8').strip()
if not data:
break
if data.upper().startswith('EHLO') or data.upper().startswith('HELO'):
client_socket.send(b"250-localhost\r\n250-AUTH LOGIN\r\n250 OK\r\n")
elif data.upper().startswith('AUTH LOGIN'):
client_socket.send(b"334 VXNlcm5hbWU6\r\n") ## Username:
client_socket.recv(1024) ## Benutzername empfangen
## 5-Sekunden-Verzögerung hinzufügen
time.sleep(5)
client_socket.send(b"334 UGFzc3dvcmQ6\r\n") ## Password:
client_socket.recv(1024) ## Passwort empfangen
client_socket.send(b"235 Authentication successful\r\n")
elif data.upper().startswith('QUIT'):
client_socket.send(b"221 Bye\r\n")
break
else:
client_socket.send(b"250 OK\r\n")
except:
pass
finally:
client_socket.close()
def run_server():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('127.0.0.1', 1025))
server.listen(5)
print("SMTP-Server gestartet auf Port 1025")
while True:
try:
client, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(client,))
thread.daemon = True
thread.start()
except:
break
if __name__ == '__main__':
run_server()
Dieses vereinfachte Python-Skript erstellt einen einfachen SMTP-Server, der auf Port 1025 lauscht. Der Server unterstützt die SMTP-Authentifizierung mit dem LOGIN-Verfahren, was Hydra erwartet. Das entscheidende Feature ist die Zeile time.sleep(5) im Authentifizierungs-Handler, die eine 5-Sekunden-Verzögerung während des Authentifizierungsprozesses einführt, um eine langsame Netzwerkantwort zu simulieren.
Speichern Sie die Datei nach dem Einfügen des Codes und beenden Sie nano mit Strg + X, dann Y und anschließend Eingabe.
Als Nächstes müssen Sie dieses Python-Skript im Hintergrund ausführen. Die Verwendung von nohup stellt sicher, dass das Skript auch dann weiterläuft, wenn Sie Ihre Terminalsitzung schließen. Sie leiten auch die Ausgabe in eine Protokolldatei namens delayed_smtp.log um, um die Überwachung zu ermöglichen.
Führen Sie im Terminal den folgenden Befehl aus:
nohup python3 ~/project/delayed_smtp.py > ~/project/delayed_smtp.log 2>&1 &
Dieser Befehl startet den SMTP-Server. Das & am Ende verschiebt den Prozess in den Hintergrund, sodass Sie Ihr Terminal weiter verwenden können.
Um zu bestätigen, dass der SMTP-Server läuft und auf Port 1025 lauscht, können Sie den Befehl ss verwenden. Der Befehl ss ist ein Werkzeug zur Untersuchung von Sockets.
ss -tulnp | grep 1025
Sie sollten eine Ausgabe ähnlich dieser sehen, die anzeigt, dass der Server auf Port 1025 lauscht:
tcp LISTEN 0 4096 0.0.0.0:1025 0.0.0.0:* users:(("python3",pid=XXXX,fd=X))
Die pid=XXXX zeigt die tatsächliche Prozess-ID Ihres Python-Skripts an. Dies bestätigt, dass Ihr SMTP-Server mit Verzögerung aktiv und bereit für Tests ist.
Diese Ausgabe bestätigt, dass der Python SMTP-Server erfolgreich läuft und auf Port 1025 lauscht. Der Status LISTEN zeigt an, dass der Server bereit ist, Verbindungen anzunehmen, und der Prozessname python3 bestätigt, dass unser Skript läuft. Die in diesem Server integrierte 5-Sekunden-Verzögerung hilft uns zu verstehen, wie sich die Wartezeit-Einstellungen von Hydra auf die Angriffsleistung auswirken.

Hydra mit Standardwartezeit ausführen
In diesem Schritt führen Sie Hydra gegen den von Ihnen eingerichteten SMTP-Server mit verzögerter Antwort aus. Sie verwenden die Standardwartezeit von Hydra, die 10 Sekunden beträgt. Dies demonstriert das Verhalten von Hydra, wenn die Zieldienst-Antwortverzögerung innerhalb des Standardtimeouts von Hydra liegt.
Zuerst müssen Sie eine Benutzerliste und eine Passworterliste für Hydra erstellen. Diese Dateien befinden sich in Ihrem Verzeichnis ~/project.
Erstellen Sie die Datei users.txt:
nano ~/project/users.txt
Fügen Sie die folgenden Benutzernamen in die Datei users.txt ein:
testuser
admin
user
Speichern Sie die Datei und beenden Sie nano (Strg + X, Y, Eingabe).
Als Nächstes erstellen Sie die Datei passwords.txt:
nano ~/project/passwords.txt
Fügen Sie die folgenden Passwörter in die Datei passwords.txt ein:
password
123456
test
Speichern Sie die Datei und beenden Sie nano (Strg + X, Y, Eingabe).
Nun führen Sie Hydra aus. Sie zielen auf den SMTP-Server auf localhost (127.0.0.1) auf Port 1025 ab. Sie verwenden den Modul smtp, Ihre users.txt-Liste und Ihre passwords.txt-Liste. Die Option -t 1 stellt sicher, dass Hydra nur einen Thread verwendet, wodurch die Ausgabe leichter zu verfolgen ist.
hydra -L ~/project/users.txt -P ~/project/passwords.txt -vV -t 1 127.0.0.1 smtp -s 1025
Zerlegung des Befehls:
hydra: Der Befehl zum Aufrufen des Hydra-Tools.-L ~/project/users.txt: Gibt den Pfad zur Datei mit der Liste der Benutzernamen an.-P ~/project/passwords.txt: Gibt den Pfad zur Datei mit der Liste der Passwörter an.-vV: Aktiviert den ausführlichen Modus, der detaillierte Informationen über die Anmeldeversuche anzeigt, einschließlich erfolgreicher und fehlgeschlagener.-t 1: Legt die Anzahl der parallelen Aufgaben (Threads) auf 1 fest. Dies ist nützlich, um jeden Versuch nacheinander zu beobachten.127.0.0.1: Die Ziel-IP-Adresse, die Ihr lokales System ist.smtp: Das Dienstmodul, das Hydra für den Angriff verwenden soll, in diesem Fall SMTP.-s 1025: Gibt die Portnummer des Zieldienstes an, in diesem Fall1025für Ihren SMTP-Server mit Verzögerung.
Da Ihr SMTP-Server eine 5-Sekunden-Verzögerung hat und die Standardwartezeit von Hydra 10 Sekunden beträgt, sollte Hydra jeden Versuch erfolgreich abschließen, ohne abzulehnen. Sie sehen eine Ausgabe ähnlich der folgenden, die Hydra zeigt, wie es jede Benutzer-Passwort-Kombination versucht:
labex:project/ $ hydra -L ~/project/users.txt -P ~/project/passwords.txt -vV -t 1 127.0.0.1 smtp -s 1025
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Bitte verwenden Sie dieses Tool nicht in militärischen oder Geheimdienstorganisationen oder für illegale Zwecke (dies ist nicht bindend, diese *** ignorieren Gesetze und Ethik sowieso).
Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2025-05-29 13:47:03
[INFO] mehrere Anbieter haben Schutzmaßnahmen gegen das Knacken implementiert, prüfen Sie zuerst mit einer kleinen Wörterliste - und bleiben Sie legal!
[DATA] maximal 1 Aufgabe pro 1 Server, insgesamt 1 Aufgabe, 9 Anmeldeversuche (b:3/p:3), ~9 Versuche pro Aufgabe
[DATA] Angriff auf smtp://127.0.0.1:1025/
[VERBOSE] Adressen auflösen ... [VERBOSE] Auflösung abgeschlossen
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "testuser" - Passwort "password" - 1 von 9 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: testuser Passwort: password
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "admin" - Passwort "password" - 4 von 9 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: admin Passwort: password
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "user" - Passwort "password" - 7 von 9 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: user Passwort: password
[STATUS] Angriff für 127.0.0.1 abgeschlossen (Warten auf Kinder, um Tests abzuschließen)
1 von 1 Ziel erfolgreich abgeschlossen, 3 gültige Passwörter gefunden
Hydra (https://github.com/vanhauser-thc/thc-hydra) beendet am 2025-05-29 13:47:20
Diese Ausgabe zeigt Hydra mit seiner Standardwartezeit von 10 Sekunden gegen einen Server mit 5-Sekunden-Verzögerungen. Beachten Sie, dass alle Versuche erfolgreich abgeschlossen werden, ohne Zeitüberschreitungen, was zeigt, dass die Standardwartezeit für dieses Szenario ausreichend ist. Die Zeile [DATA] zeigt 9 Gesamtversuche (3 Benutzer × 3 Passwörter) an, und jede erfolgreiche Anmeldung wird mit [1025][smtp] gekennzeichnet, was den Port und den Diensttyp anzeigt.
Anpassung der Wartezeit mit -w
In diesem Schritt legen Sie die Wartezeit von Hydra explizit mit der Option -w fest. Während die Standardwartezeit (10 Sekunden) für unsere 5-Sekunden-Verzögerung ausreichend war, ist das Verständnis und die Kontrolle dieses Parameters entscheidend, um Hydra an verschiedene Netzwerkbedingungen und Serververhaltensweisen anzupassen.
Sie verwenden die gleichen Benutzer- und Passworterlisten (users.txt und passwords.txt), die Sie im vorherigen Schritt erstellt haben.
Führen Sie nun Hydra erneut aus, diesmal mit der Option -w. Dieser Befehl verhält sich identisch zum vorherigen, da 10 Sekunden die Standardwartezeit von Hydra ist, aber er demonstriert die Verwendung der Option.
hydra -L ~/project/users.txt -P ~/project/passwords.txt -vV -t 1 -w 10 127.0.0.1 smtp -s 1025
Hier ist die Auflistung des Befehls, wobei der Hauptunterschied hervorgehoben ist:
hydra: Der Hydra-Befehl.-L ~/project/users.txt: Gibt die Datei mit der Benutzerliste an.-P ~/project/passwords.txt: Gibt die Datei mit der Passworterliste an.-vV: Aktiviert den ausführlichen Modus.-t 1: Legt die Anzahl der Threads auf 1 fest.-w 10: Legt die Wartezeit (Timeout) explizit auf 10 Sekunden fest. Dies bedeutet, dass Hydra bis zu 10 Sekunden auf eine Antwort vom Zieldienst wartet, bevor der Versuch als fehlgeschlagen betrachtet wird.127.0.0.1: Die Ziel-IP-Adresse.smtp: Das Dienstmodul.-s 1025: Gibt die Portnummer an.
Die Ausgabe wird ähnlich zum vorherigen Schritt sein, da die 10-Sekunden-Wartezeit für die 5-Sekunden-Verzögerung Ihres SMTP-Servers ausreichend ist. Dieser Schritt dient hauptsächlich der Veranschaulichung der Verwendung der Option -w.
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Bitte verwenden Sie dieses Tool nicht in militärischen oder Geheimdienstorganisationen oder für illegale Zwecke (dies ist nicht bindend, diese *** ignorieren Gesetze und Ethik sowieso).
Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2025-05-29 14:02:49
[INFO] mehrere Anbieter haben Schutzmaßnahmen gegen das Knacken implementiert, prüfen Sie zuerst mit einer kleinen Wörterliste - und bleiben Sie legal!
[DATA] maximal 1 Aufgabe pro 1 Server, insgesamt 1 Aufgabe, 9 Anmeldeversuche (b:3/p:3), ~9 Versuche pro Aufgabe
[DATA] Angriff auf smtp://127.0.0.1:1025/
[VERBOSE] Adressen auflösen ... [VERBOSE] Auflösung abgeschlossen
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "testuser" - Passwort "password" - 1 von 9 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: testuser Passwort: password
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "admin" - Passwort "password" - 4 von 9 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: admin Passwort: password
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "user" - Passwort "password" - 7 von 9 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: user Passwort: password
[STATUS] Angriff für 127.0.0.1 abgeschlossen (Warten auf Kinder, um Tests abzuschließen)
1 von 1 Ziel erfolgreich abgeschlossen, 3 gültige Passwörter gefunden
Hydra (https://github.com/vanhauser-thc/thc-hydra) beendet am 2025-05-29 14:03:05
Diese Ausgabe zeigt die explizite Verwendung von -w 10 zur Festlegung der Wartezeit auf 10 Sekunden, was zu identischen Ergebnissen wie bei der Standardeinstellung führt. Der Angriff wurde erfolgreich abgeschlossen und alle 3 gültigen Passwörter innerhalb des Zeitrahmens von 16 Sekunden (14:02:49 bis 14:03:05) gefunden. Dieser Schritt zeigt, wie Sie Timeout-Einstellungen explizit steuern können, was unerlässlich wird, wenn Server mit Antwortzeiten länger als die Standardgrenze von 10 Sekunden haben.
Testen einer einzelnen Anmeldeinformation mit den Optionen -l und -p
In diesem Schritt lernen Sie, wie Sie die Optionen -l und -p von Hydra verwenden, um eine einzelne Benutzer-Passwort-Kombination zu testen. Dieser Ansatz ermöglicht es Ihnen, ein einzelnes Anmeldepaar direkt in der Befehlszeile anzugeben, anstatt separate Dateien zu verwenden. Dies ist besonders nützlich, um schnell ein bestimmtes Anmeldepaar zu testen, ohne Dateien zu erstellen oder zu ändern.
Sie verwenden weiterhin den in Schritt 1 eingerichteten SMTP-Server mit Verzögerung.
Führen Sie den folgenden Hydra-Befehl aus, wobei Sie die Option -l für den Benutzernamen und die Option -p für das Passwort verwenden:
hydra -t 1 -l testuser -p password -vV 127.0.0.1 smtp -s 1025
Zerlegung dieses Befehls:
hydra: Der Hydra-Befehl.-t 1: Legt die Anzahl der Threads auf 1 fest, um einen klaren, sequenziellen Versuch sicherzustellen.-l testuser: Gibt den zu testenden Benutzernamen an. Die Option-l(kleines L) wird für einen einzelnen Benutzernamen verwendet.-p password: Gibt das zu testende Passwort an. Die Option-pwird für ein einzelnes Passwort verwendet.-vV: Aktiviert den ausführlichen Modus.127.0.0.1: Die Ziel-IP-Adresse.smtp: Das Dienstmodul.-s 1025: Gibt die Portnummer an.
In diesem Szenario versucht Hydra nur, sich mit dem einzelnen Anmeldepaar testuser:password anzumelden. Da unser SMTP-Server für Demonstrationszwecke alle Anmeldeinformationen akzeptiert, meldet Hydra eine erfolgreiche Anmeldung.
Sie sehen eine Ausgabe ähnlich dieser:
labex:project/ $ hydra -t 1 -l testuser -p password -vV 127.0.0.1 smtp -s 1025
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Bitte verwenden Sie dieses Tool nicht in militärischen oder Geheimdienstorganisationen oder für illegale Zwecke (dies ist nicht bindend, diese *** ignorieren Gesetze und Ethik sowieso).
Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2025-05-29 13:50:25
[INFO] mehrere Anbieter haben Schutzmaßnahmen gegen das Knacken implementiert, prüfen Sie zuerst mit einer kleinen Wörterliste - und bleiben Sie legal!
[DATA] maximal 1 Aufgabe pro 1 Server, insgesamt 1 Aufgabe, 1 Anmeldeversuch (b:1/p:1), ~1 Versuch pro Aufgabe
[DATA] Angriff auf smtp://127.0.0.1:1025/
[VERBOSE] Adressen auflösen ... [VERBOSE] Auflösung abgeschlossen
[VERSUCH] Ziel 127.0.0.1 - Anmeldung "testuser" - Passwort "password" - 1 von 1 [Kind 0] (0/0)
[VERBOSE] Verwendung des SMTP LOGIN AUTH Mechanismus
[1025][smtp] Host: 127.0.0.1 Benutzername: testuser Passwort: password
[STATUS] Angriff für 127.0.0.1 abgeschlossen (Warten auf Kinder, um Tests abzuschließen)
1 von 1 Ziel erfolgreich abgeschlossen, 1 gültiges Passwort gefunden
Hydra (https://github.com/vanhauser-thc/thc-hydra) beendet am 2025-05-29 13:50:30
Diese Ausgabe zeigt das Testen eines einzelnen Anmeldepaares mit den Optionen -l und -p anstelle von Wörterbuchdateien. Beachten Sie, dass die Zeile [DATA] nun 1 Anmeldeversuch (b:1/p:1) anzeigt, was darauf hinweist, dass nur ein Benutzername und ein Passwort getestet werden. Dieser Ansatz ist effizient für gezielte Tests, wenn Sie bestimmte Anmeldeinformationen überprüfen müssen, und er ist viel schneller, da nur ein Versuch statt neun durchgeführt wird.
Zusammenfassung
In diesem Labor haben Sie gelernt, wie Sie Hydras Verhalten bei Diensten mit langsamen oder unzuverlässigen Antworten optimieren können.
Sie begannen mit der Einrichtung eines simulierten langsamen SMTP-Servers mithilfe eines Python-Skripts, das eine 5-Sekunden-Verzögerung in seinen Antworten einführte. Dies ermöglichte es Ihnen, eine kontrollierte Umgebung zu schaffen, um die Timeout-Einstellungen von Hydra zu testen. Anschließend führten Sie Hydra gegen diesen Server aus, beobachteten zunächst sein Standardverhalten und passten dann die Wartezeit explizit mit der Option -w an. Schließlich haben Sie die Optionen -l und -p erkundet, um einzelne Anmeldeinformationen direkt in der Befehlszeile anzugeben, was für schnelle, gezielte Tests nützlich ist.
Dieses Labor hat Ihnen praktische Erfahrungen bei der Konfiguration von Hydra für verschiedene Netzwerkbedingungen vermittelt und Ihre Fähigkeit verbessert, effektive Brute-Force-Angriffe durchzuführen.


