Steuern der Hydra-Verbindungsintervalle

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 lernen Sie, wie Sie die Verbindungsintervalle des Passwort-Cracking-Tools Hydra steuern können. Das Lab zeigt, wie Sie Hydra so konfigurieren können, dass zwischen den Verbindungsversuchen Verzögerungen eingefügt werden. Dies ermöglicht es Ihnen, das Tempo des Angriffs zu steuern und möglicherweise die Entdeckung zu vermeiden.

Das Lab beginnt mit der Einrichtung eines einfachen SSH-Servers auf der LabEx-VM mithilfe von OpenSSH. Sie installieren den Server, überprüfen seinen Status und stellen sicher, dass er auf Port 22 lauscht. Anschließend führen Sie Hydra mit den Standard-Zeitparametern aus und ändern dann den Befehl, um die Option -W 5 hinzuzufügen. Diese Option fügt zwischen den Verbindungsversuchen eine Pause von 5 Sekunden ein. Abschließend beobachten Sie die Auswirkungen dieser Zeitanpassung auf das Gesamt-Tempo des Angriffs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/timeout_setting("Timeout Adjustment") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/error_handling("Error Message Handling") hydra/HydraGroup -.-> hydra/rate_control("Rate Limiting Control") subgraph Lab Skills hydra/installation -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/single_username -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/single_password -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/target_service -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/ssh_attack -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/timeout_setting -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/success_detection -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/error_handling -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} hydra/rate_control -.-> lab-550764{{"Steuern der Hydra-Verbindungsintervalle"}} end

Einrichten des SSH-Servers

In diesem Schritt werden wir einen einfachen SSH-Server auf der LabEx-VM einrichten. SSH (Secure Shell) ist ein kryptographisches Netzwerkprotokoll, das es ermöglicht, Netzwerkdienste sicher über ein unsicheres Netzwerk zu betreiben. Es wird häufig für die ferngesteuerte Anmeldung an der Befehlszeile und die Ausführung von Befehlen auf entfernten Systemen verwendet.

Zunächst müssen wir den OpenSSH-Server installieren. OpenSSH ist eine Sammlung von sicherheitsrelevanten Netzwerktools, die auf dem Secure Shell-Protokoll basieren, und es ist die am weitesten verbreitete SSH-Implementierung.

Öffnen Sie ein Terminal in der LabEx-VM. Sie können das Standard-Xfce-Terminal verwenden.

Führen Sie den folgenden Befehl aus, um die Paketlisten zu aktualisieren:

sudo apt update

Dieser Befehl synchronisiert die Paketindexdateien mit ihren Quellen. Es ist eine gute Praxis, diesen Befehl auszuführen, bevor Sie neue Software installieren. Möglicherweise werden Sie nach Ihrem Passwort gefragt, aber beachten Sie, dass der Benutzer labex sudo-Rechte ohne Passwort hat.

Als Nächstes installieren Sie den OpenSSH-Server:

sudo apt install openssh-server -y

Das -y-Flag beantwortet automatisch alle Abfragen während der Installation mit "ja", wodurch der Prozess nicht interaktiv wird.

Nach Abschluss der Installation sollte der SSH-Server automatisch starten. Sie können seinen Status mit dem folgenden Befehl überprüfen:

sudo systemctl status ssh

Möglicherweise sehen Sie eine Fehlermeldung wie System has not been booted with systemd as init system (PID 1). Can't operate. Dies liegt daran, dass die LabEx-VM in einem Docker-Container läuft, der systemd nicht verwendet. Machen Sie sich keine Sorgen, der SSH-Server läuft dennoch.

Um zu bestätigen, dass der SSH-Server läuft, können Sie überprüfen, ob der SSH-Port (Port 22) geöffnet ist und auf eingehende Verbindungen wartet. Verwenden Sie dazu den netstat-Befehl:

netstat -tulnp | grep 22

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

Dies zeigt an, dass der SSH-Server auf Port 22 sowohl für IPv4- als auch für IPv6-Verbindungen lauscht.

Jetzt, da der SSH-Server eingerichtet ist, können Sie von einem anderen Computer aus mithilfe eines SSH-Clients eine Verbindung zu ihm herstellen. In diesem Lab werden wir uns jedoch darauf konzentrieren, Hydra zu verwenden, um das SSH-Passwort zu knacken.

Ausführen von Hydra mit Standard-Zeitparametern

In diesem Schritt werden wir Hydra ausführen, um zu versuchen, das SSH-Passwort zu knacken. Wir verwenden eine einfache Liste von Benutzernamen und Passwörtern und beobachten das Angriffstempo mit den Standard-Zeitparametern.

Zunächst erstellen wir eine Datei namens users.txt im Verzeichnis ~/project, die die Liste der Benutzernamen enthält. Diese Datei soll nur einen Benutzernamen enthalten: labex.

echo "labex" > ~/project/users.txt

Als Nächstes erstellen wir eine Datei namens passwords.txt im Verzeichnis ~/project, die die Liste der Passwörter enthält. Diese Datei soll einige häufige Passwörter enthalten, darunter auch das richtige Passwort für den Benutzer labex, das labex ist.

echo "password" > ~/project/passwords.txt
echo "123456" >> ~/project/passwords.txt
echo "labex" >> ~/project/passwords.txt

Jetzt können wir Hydra mit den Standard-Zeitparametern ausführen. Die grundlegende Syntax für Hydra lautet:

hydra [options] <target> <service> [MODULE-OPTIONS]

In unserem Fall ist das Ziel localhost (die LabEx-VM selbst), der Dienst ist ssh, und wir verwenden die gerade erstellten Listen von Benutzernamen und Passwörtern.

Führen Sie den folgenden Befehl aus:

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ssh

Lassen Sie uns diesen Befehl analysieren:

  • hydra: Der Befehl, um das Hydra-Tool auszuführen.
  • -L ~/project/users.txt: Gibt die Datei mit der Liste der Benutzernamen an.
  • -P ~/project/passwords.txt: Gibt die Datei mit der Liste der Passwörter an.
  • localhost: Das Zielhost (in diesem Fall der lokale Rechner).
  • ssh: Der anzugreifende Dienst (SSH).

Hydra beginnt nun, sich am SSH-Server mit den Benutzernamen und Passwörtern aus den Listen anzumelden. Sie werden eine Ausgabe sehen, die den Fortschritt des Angriffs anzeigt. Es wird jede Kombination aus Benutzername und Passwort ausprobiert. Da das richtige Passwort "labex" in der Datei passwords.txt enthalten ist, sollte Hydra es relativ schnell finden.

Die Ausgabe wird in etwa so aussehen:

Hydra v9.6 (c) 2024 by van Hauser/THC - use help for legal stuff


Hydra starting at 2024-01-01 00:00:00
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] 0.00 tries/min
[STATUS] 0 of 3 passwords tested (0.00%)
[22][ssh] host: localhost   login: labex   password: labex
Hydra finished.

Die wichtige Zeile ist [22][ssh] host: localhost login: labex password: labex. Dies zeigt an, dass Hydra erfolgreich das Passwort für den Benutzer labex gefunden hat.

Beachten Sie die Geschwindigkeit, mit der Hydra die Passwörter ausprobiert. Dies sind die Standard-Zeitparameter. Im nächsten Schritt werden wir die Zeitparameter ändern, um zu sehen, wie sich dies auf das Angriffstempo auswirkt.

Hinzufügen von -W 5 für 5-Sekunden-Pausen

In diesem Schritt fügen wir die Option -W 5 dem Hydra-Befehl hinzu. Diese Option führt eine 5-Sekunden-Verzögerung zwischen jedem Anmeldeversuch ein. Dies ist nützlich, um Kontosperrungen zu vermeiden oder von Intrusion Detection Systemen (Eindringlingserkennungssystemen) nicht erkannt zu werden.

Die -W-Option in Hydra gibt das Timeout für das Warten auf eine Antwort des Ziel-Dienstes an. Standardmäßig verwendet Hydra ein sehr kurzes Timeout. Die Erhöhung dieses Timeouts kann hilfreich sein, wenn der Ziel-Dienst langsam auf Anfragen reagiert oder wenn es Netzwerklatenzprobleme gibt.

Führen Sie den folgenden Befehl aus:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -W 5 localhost ssh

Der einzige Unterschied zwischen diesem Befehl und dem vorherigen ist die Hinzufügung der Option -W 5.

Jetzt wird Hydra versuchen, sich am SSH-Server anzumelden, aber es wird 5 Sekunden nach jedem fehlgeschlagenen Anmeldeversuch warten, bevor es das nächste Passwort ausprobiert.

Beobachten Sie die Ausgabe. Sie werden feststellen, dass das Angriffstempo deutlich langsamer ist als im vorherigen Schritt. Hydra wird immer noch das richtige Passwort ("labex") finden, aber es wird länger dauern.

Die Ausgabe wird in etwa so aussehen:

Hydra v9.6 (c) 2024 by van Hauser/THC - use help for legal stuff


Hydra starting at 2024-01-01 00:00:00
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] 0.00 tries/min
[STATUS] 0 of 3 passwords tested (0.00%)
[22][ssh] host: localhost   login: labex   password: labex
Hydra finished.

Der entscheidende Unterschied ist jedoch die Zeit, die es dauert, bis die Meldung Hydra finished. angezeigt wird. Mit der Option -W 5 wird es mindestens 10 Sekunden (2 fehlgeschlagene Versuche * 5 Sekunden/Versuch) dauern, bevor Hydra das richtige Passwort findet.

Im nächsten Schritt werden wir die Auswirkungen dieser Änderung auf das Angriffstempo und die Implikationen für die Sicherheitstests besprechen.

Beobachten der Auswirkungen auf das Angriffstempo

In diesem Schritt werden wir die Auswirkungen der Option -W 5 auf das Angriffstempo von Hydra analysieren.

Wie Sie in den vorherigen Schritten beobachtet haben, hat das Hinzufügen von -W 5 den Angriff deutlich verlangsamt. Ohne die Option -W 5 versucht Hydra, sich so schnell wie möglich anzumelden, nur beschränkt durch die Netzwerklatenz und die Antwortzeit des Servers. Mit -W 5 wartet Hydra 5 Sekunden nach jedem fehlgeschlagenen Anmeldeversuch.

Dieser Unterschied im Angriffstempo hat mehrere wichtige Implikationen:

  • Kontosperrung: Viele Systeme haben Kontosperrrichtlinien, die ein Konto nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche deaktivieren. Indem Sie das Angriffstempo mit -W 5 verlangsamen, können Sie das Risiko, diese Sperrrichtlinien auszulösen, verringern und vermeiden, dass Sie aus dem Zielkonto gesperrt werden.

  • Intrusion Detection Systeme (IDS): IDSs überwachen den Netzwerkverkehr auf verdächtige Aktivitäten, wie z. B. Brute-Force-Angriffe. Eine schnelle Abfolge fehlgeschlagener Anmeldeversuche ist ein starker Indikator für einen Brute-Force-Angriff und kann eine Warnung auslösen. Indem Sie das Angriffstempo verlangsamen, können Sie es für ein IDS schwieriger machen, den Angriff zu erkennen.

  • Ressourcenverbrauch: Ein schnelles Angriffstempo kann erhebliche Ressourcen sowohl auf dem Angriffssystem als auch auf dem Zielserver verbrauchen. Das Verlangsamen des Angriffstempis kann den Ressourcenverbrauch reduzieren und den Angriff weniger auffällig machen.

  • Zeit bis zur Beendigung: Der offensichtlichste Effekt ist die erhöhte Zeit, die es dauert, den Angriff abzuschließen. Wenn Sie eine große Passwortliste haben, kann das Hinzufügen einer Verzögerung zwischen den Versuchen die Gesamtzeit, die zum Knacken des Passworts benötigt wird, erheblich erhöhen.

Zusammenfassend lässt sich sagen, dass die -W-Option in Hydra es Ihnen ermöglicht, das Angriffstempo zu steuern und den Bedarf an Geschwindigkeit mit dem Risiko der Entdeckung und der Kontosperrung auszugleichen. Die Wahl des richtigen Werts für -W hängt vom spezifischen Ziel und den Zielen des Angriffs ab. Bei Penetrationstests ist es oft besser, unauffällig zu bleiben und eine Entdeckung zu vermeiden, auch wenn dies bedeutet, dass der Angriff länger dauert.

Dieses Lab demonstrierte ein einfaches Beispiel für die Verwendung von Hydra zum Knacken eines SSH-Passworts. In realen Szenarien verwenden Angreifer oft viel größere Listen von Benutzernamen und Passwörtern sowie ausgefeiltere Techniken, um Sicherheitsmaßnahmen zu umgehen. Es ist von entscheidender Bedeutung, starke, eindeutige Passwörter zu verwenden und geeignete Sicherheitsmaßnahmen zu implementieren, um sich gegen Brute-Force-Angriffe zu schützen.

Zusammenfassung

In diesem Lab haben wir zunächst einen einfachen SSH-Server auf der LabEx-VM eingerichtet. Dies beinhaltete das Aktualisieren der Paketlisten mit sudo apt update und die Installation des OpenSSH-Servers mit sudo apt install openssh-server -y.

Anschließend haben wir überprüft, ob der SSH-Server läuft, indem wir seinen Status geprüft und bestätigt haben, dass er auf Port 22 lauscht, indem wir netstat -tulnp | grep 22 verwendet haben. Die Lab-Umgebung nutzt Docker, daher können systemd-Befehle möglicherweise nicht wie erwartet funktionieren, aber der SSH-Server funktioniert dennoch korrekt.