Anpassen der Hydra-Threadzahlen

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 die Auswirkungen der Anzahl der Threads auf die Leistung von Hydra untersuchen. Das Lab beginnt mit der Einrichtung eines grundlegenden SSH-Servers auf der LabEx VM mithilfe von OpenSSH, um sicherzustellen, dass er läuft und erreichbar ist.

Als nächstes werden wir Hydra mit der Standardanzahl von 16 Threads ausführen, dann auf 32 erhöhen und anschließend auf 4 verringern. Dabei vergleichen wir die Geschwindigkeit und beobachten die Auswirkungen unterschiedlicher Threadanzahlen auf die Gesamtleistung des Hydra-Angriffs. Abschließend werden wir die Auswirkungen der Threadanzahl auf die Leistung von Hydra analysieren.


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_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/rate_control("Rate Limiting Control") subgraph Lab Skills hydra/installation -.-> lab-550758{{"Anpassen der Hydra-Threadzahlen"}} hydra/single_username -.-> lab-550758{{"Anpassen der Hydra-Threadzahlen"}} hydra/single_password -.-> lab-550758{{"Anpassen der Hydra-Threadzahlen"}} hydra/target_ip -.-> lab-550758{{"Anpassen der Hydra-Threadzahlen"}} hydra/ssh_attack -.-> lab-550758{{"Anpassen der Hydra-Threadzahlen"}} hydra/rate_control -.-> lab-550758{{"Anpassen der Hydra-Threadzahlen"}} end

Einrichten des SSH-Servers

In diesem Schritt werden wir einen grundlegenden 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 üblicherweise für die ferngesteuerte Befehlszeilenanmeldung und die ferngesteuerte Befehlsausführung verwendet.

Zunächst müssen wir den OpenSSH-Server installieren. OpenSSH ist eine Suite von sicherheitsrelevanten Netzwerktools, die auf dem Secure Shell-Protokoll basieren. Es bietet einen sicheren Kanal über ein unsicheres Netzwerk in einer Client-Server-Architektur.

Führen Sie den folgenden Befehl aus, um den OpenSSH-Server zu installieren:

sudo apt update
sudo apt install -y openssh-server

Dieser Befehl aktualisiert zunächst die Paketlisten für Upgrades und neue Installationen. Anschließend wird das openssh-server-Paket installiert. Das -y-Flag beantwortet automatisch alle Abfragen während der Installation mit "ja".

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

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-10-24 10:00:00 UTC; 10s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 1234 (sshd)
      Tasks: 1 (limit: 4621)
     Memory: 1.2M
        CPU: 10ms
     CGroup: /system.slice/ssh.service
             └─1234 sshd: /usr/sbin/sshd -D

Oct 24 10:00:00 labex systemd[1]: Started OpenBSD Secure Shell server.

Wenn der SSH-Service nicht läuft, können Sie ihn mit folgendem Befehl starten:

sudo systemctl start ssh

Da der SSH-Server jetzt läuft, können Sie von einem anderen Computer aus mit einem SSH-Client eine Verbindung zu ihm herstellen. Um eine Verbindung herzustellen, benötigen Sie die IP-Adresse der LabEx VM. Sie können diese mit dem Befehl ifconfig ermitteln. Da ifconfig jedoch möglicherweise nicht standardmäßig installiert ist, ist ein zuverlässigerer Befehl ip addr.

ip addr

Suchen Sie nach der inet-Adresse, die mit der Netzwerkschnittstelle (normalerweise eth0 oder enp0s3) verknüpft ist. Sie sieht in etwa so aus: 192.168.1.100.

Beispielsweise könnte die Ausgabe so aussehen:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

In diesem Fall ist die IP-Adresse 172.17.0.2.

Sie können dann diese IP-Adresse verwenden, um von einem anderen Computer aus mit dem Befehl ssh labex@<IP_ADDRESS> eine Verbindung zum SSH-Server herzustellen. Sie müssen dies jetzt nicht tun, da wir Hydra auf demselben Computer verwenden werden.

Abschließend konfigurieren wir den SSH-Server so, dass die Passwortauthentifizierung ermöglicht wird. Standardmäßig bevorzugt SSH häufig die Schlüsselbasierte Authentifizierung, die sicherer ist. Für dieses Lab aktivieren wir jedoch aus Gründen der Einfachheit die Passwortauthentifizierung.

Bearbeiten Sie die SSH-Server-Konfigurationsdatei mit nano:

sudo nano /etc/ssh/sshd_config

Suchen Sie die Zeile #PasswordAuthentication no und heben Sie die Kommentierung auf (entfernen Sie das #) und ändern Sie no in yes:

PasswordAuthentication yes

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

Starten Sie den SSH-Server neu, damit die Änderungen wirksam werden:

sudo systemctl restart ssh

Jetzt ist der SSH-Server eingerichtet und so konfiguriert, dass die Passwortauthentifizierung möglich ist.

Ausführen mit Standard -t 16 Threads

In diesem Schritt werden wir Hydra mit seinen Standard-Einstellungen ausführen, die die Verwendung von 16 Threads umfassen. Hydra ist ein parallelisierter Login-Cracker, der zahlreiche Protokolle zum Angriff unterstützt. Wir werden es verwenden, um das Passwort des Benutzers labex auf dem SSH-Server, den wir im vorherigen Schritt eingerichtet haben, zu knacken.

Zunächst erstellen wir eine einfache Passwortliste. Dies wird eine Textdatei sein, die eine Liste möglicher Passwörter enthält, die Hydra ausprobieren wird.

Verwenden Sie nano, um eine Datei namens password.txt in Ihrem ~/project-Verzeichnis zu erstellen:

nano ~/project/password.txt

Fügen Sie die folgenden Passwörter in die Datei ein, jeweils ein Passwort pro Zeile:

password
123456
qwerty
labex
test

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

Jetzt führen wir Hydra mit der Standardanzahl von Threads (-t 16) aus. Die Option -l gibt den Benutzer an, gegen den der Angriff gerichtet ist, -P gibt die Passwortliste an und ssh://localhost gibt den Ziel-SSH-Server an. Da wir Hydra auf demselben Computer wie den SSH-Server ausführen, verwenden wir localhost.

Führen Sie den folgenden Befehl aus:

hydra -l labex -P ~/project/password.txt ssh://localhost

Hydra beginnt nun, sich mit den Passwörtern in password.txt am SSH-Server anzumelden. Die Ausgabe zeigt den Fortschritt des Angriffs.

Sie sollten eine Ausgabe ähnlich der folgenden sehen (die genaue Ausgabe kann variieren):

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

Hydra starting at 2023-10-27 10:00:00
[DATA] 1 task/thread started, 0 tasks total
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: password
[ATTEMPT] target: localhost - login: labex - pass: 123456
[ATTEMPT] target: localhost - login: labex - pass: qwerty
[ATTEMPT] target: localhost - login: labex - pass: labex
[22][ssh] host: localhost   login: labex   password: labex
[DATA] 1 of 1 target successfully completed, 0 failed
Hydra is finished.

Wenn das Passwort "labex" das richtige Passwort für den Benutzer labex ist, wird Hydra es finden und die Anmeldeinformationen anzeigen. Wenn keines der Passwörter in der Liste korrekt ist, wird Hydra melden, dass es das Passwort nicht knacken konnte.

In diesem Fall gehen wir davon aus, dass das Passwort für den Benutzer labex labex ist.

Die Option -t steuert die Anzahl der Threads, die Hydra verwendet. Standardmäßig verwendet Hydra 16 Threads, wenn Sie die Option -t nicht angeben. Dies bedeutet, dass es 16 Passwortversuche gleichzeitig durchführen wird.

Erhöhen auf -t 32 und Geschwindigkeitsvergleich

In diesem Schritt erhöhen wir die Anzahl der von Hydra verwendeten Threads auf 32 und vergleichen die Geschwindigkeit mit dem vorherigen Lauf mit den Standard 16 Threads. Das Erhöhen der Anzahl der Threads kann möglicherweise den Knackprozess beschleunigen, aber es hängt auch von den Ressourcen des Systems und dem Zielservice ab.

Führen Sie den folgenden Befehl aus, um Hydra mit 32 Threads auszuführen:

hydra -t 32 -l labex -P ~/project/password.txt ssh://localhost

Dieser Befehl ist ähnlich dem vorherigen, aber wir haben die Option -t 32 hinzugefügt, um anzugeben, dass Hydra 32 Threads verwenden soll.

Beobachten Sie die Ausgabe. Sie sollten sehen, dass Hydra 32 Aufgaben/Threads startet.

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

Hydra starting at 2023-10-27 10:05:00
[DATA] 32 tasks/threads started, 0 tasks total
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: password
[ATTEMPT] target: localhost - login: labex - pass: 123456
[ATTEMPT] target: localhost - login: labex - pass: qwerty
[ATTEMPT] target: localhost - login: labex - pass: labex
[22][ssh] host: localhost   login: labex   password: labex
[DATA] 1 of 1 target successfully completed, 0 failed
Hydra is finished.

Geschwindigkeitsvergleich:

Es ist schwierig, den Geschwindigkeitsunterschied in einer Lab-Umgebung ohne präzise Zeitmessungstools genau zu messen. Allerdings können Sie subjektiv beobachten, ob der Knackprozess mit 32 Threads schneller scheint als mit 16 Threads. Im Allgemeinen wird das Erhöhen der Anzahl der Threads wahrscheinlich die Geschwindigkeit verbessern, insbesondere bei einer kleinen Passwortliste. Es gibt jedoch einen Punkt, an dem die Effektivität abnimmt, und das zu starke Erhöhen der Anzahl der Threads kann den Prozess aufgrund von Ressourcenkonflikten tatsächlich verlangsamen.

Im nächsten Schritt werden wir die Anzahl der Threads auf 4 reduzieren und die Auswirkungen beobachten.

Reduzieren auf -t 4 und Beobachtung

In diesem Schritt werden wir die Anzahl der von Hydra verwendeten Threads auf 4 reduzieren und die Auswirkungen auf die Leistung beobachten. Das Reduzieren der Anzahl der Threads kann nützlich sein, wenn das System begrenzte Ressourcen hat oder wenn der Zielservice eine Rate-Limiting-Regelung (Geschwindigkeitsbegrenzung) hat.

Führen Sie den folgenden Befehl aus, um Hydra mit 4 Threads auszuführen:

hydra -t 4 -l labex -P ~/project/password.txt ssh://localhost

Dieser Befehl ist ähnlich den vorherigen, aber wir haben die Option -t 4 hinzugefügt, um anzugeben, dass Hydra 4 Threads verwenden soll.

Beobachten Sie die Ausgabe. Sie sollten sehen, dass Hydra 4 Aufgaben/Threads startet.

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

Hydra starting at 2023-10-27 10:10:00
[DATA] 4 tasks/threads started, 0 tasks total
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: password
[ATTEMPT] target: localhost - login: labex - pass: 123456
[ATTEMPT] target: localhost - login: labex - pass: qwerty
[ATTEMPT] target: localhost - login: labex - pass: labex
[22][ssh] host: localhost   login: labex   password: labex
[DATA] 1 of 1 target successfully completed, 0 failed
Hydra is finished.

Beobachtung der Auswirkungen:

Mit nur 4 Threads sollten Sie bemerken, dass der Knackprozess wahrscheinlich langsamer ist im Vergleich zur Verwendung von 16 oder 32 Threads. Dies liegt daran, dass Hydra jetzt weniger Passwörter gleichzeitig ausprobiert. Die Gesamtzeit, um die Aufgabe abzuschließen, wird erhöht.

Im nächsten Schritt werden wir die Auswirkungen der Anzahl der Threads auf die Leistung analysieren.

Analyse der Auswirkungen von Threads auf die Leistung

In diesem Schritt werden wir die Auswirkungen der Anzahl der Threads auf die Leistung von Hydra analysieren. Wir haben mit 4, 16 (Standard) und 32 Threads experimentiert. Lassen Sie uns nun die allgemeinen Prinzipien besprechen.

Wichtige Überlegungen:

  • Systemressourcen: Die Anzahl der Threads, die Sie effektiv verwenden können, hängt von den Ressourcen Ihres Systems ab, einschließlich CPU-Kernen, Arbeitsspeicher und Netzwerkbandbreite. Wenn Sie die Anzahl der Threads zu hoch setzen, kann das System überlastet werden, was zu einer Leistungseinbuße führt.
  • Zielservice: Der Zielservice (in diesem Fall SSH) kann eine Rate-Limiting-Regelung (Geschwindigkeitsbegrenzung) oder andere Sicherheitsmaßnahmen haben, die die Leistung von Hydra beeinflussen können. Wenn der Service die Anzahl der Anmeldeversuche pro Zeiteinheit begrenzt, verbessert das Erhöhen der Anzahl der Threads über einen bestimmten Punkt hinaus die Leistung nicht und kann sogar Sicherheitsmechanismen auslösen, die den Angriff blockieren.
  • Passwortliste: Die Größe und Komplexität der Passwortliste beeinflussen ebenfalls die Leistung. Eine größere Passwortliste wird länger dauern, zu knacken, unabhängig von der Anzahl der Threads.
  • Netzwerklatenz: Eine hohe Netzwerklatenz kann auch die Effektivität des Erhöhens der Anzahl der Threads einschränken.

Beobachtungen und allgemeine Leitlinien:

  • 4 Threads: Mit 4 Threads ist es weniger wahrscheinlich, dass Hydra das System überlastet oder die Rate-Limiting-Regelung des Zielservices auslöst. Allerdings wird der Knackprozess im Vergleich zur Verwendung von mehr Threads langsamer sein. Diese Einstellung ist geeignet für Systeme mit begrenzten Ressourcen oder beim Angriff auf Services mit strenger Rate-Limiting-Regelung.
  • 16 Threads (Standard): Die Standardeinstellung von 16 Threads ist ein guter Kompromiss zwischen Leistung und Ressourcenverbrauch für viele Systeme und Zielservices. Sie ermöglicht es Hydra, eine angemessene Anzahl von Passwörtern gleichzeitig zu testen, ohne das System zu überlasten.
  • 32 Threads: Das Erhöhen der Anzahl der Threads auf 32 kann möglicherweise die Leistung verbessern, insbesondere wenn das System über ausreichende Ressourcen verfügt und der Zielservice keine strenge Rate-Limiting-Regelung hat. Es ist jedoch wichtig, die Ressourcenauslastung des Systems zu überwachen, um sicherzustellen, dass es nicht überlastet wird.

Schlussfolgerung:

Die optimale Anzahl der Threads für Hydra hängt von einer Vielzahl von Faktoren ab. Es ist wichtig, mit verschiedenen Einstellungen zu experimentieren und die Leistung des Systems zu überwachen, um den besten Kompromiss zwischen Geschwindigkeit und Ressourcenverbrauch zu finden. In einer realen Welt würden Sie auch die rechtlichen und ethischen Implikationen der Verwendung von Hydra zum Versuch, Passwörter zu knacken, berücksichtigen müssen.

Dieses Lab hat gezeigt, wie die -t-Option die Leistung von Hydra beeinflusst. Durch die Anpassung der Anzahl der Threads können Sie Hydra für verschiedene Umgebungen und Zielservices optimieren.

Zusammenfassung

In diesem Lab haben wir zunächst einen grundlegenden SSH-Server auf der LabEx-VM (virtuellen Maschine) mithilfe von OpenSSH eingerichtet. Dies beinhaltete das Aktualisieren der Paketlisten, die Installation des openssh-server-Pakets und die Überprüfung, ob der SSH-Service läuft, indem wir systemctl status ssh verwendet haben. Falls erforderlich, konnte der Service mit systemctl start ssh gestartet werden.

Die anfängliche Einrichtung bildete die Grundlage für die folgenden Schritte, bei denen wahrscheinlich Hydra verwendet wird, um die Sicherheit des SSH-Servers zu testen, indem versucht wird, Passwörter mit unterschiedlichen Threadzahlen zu knacken. Anschließend wird das Lab die Auswirkungen verschiedener Threadzahlen auf die Leistung von Hydra analysieren.