Hydra-Threadanzahl anpassen

HydraBeginner
Jetzt üben

Einführung

In diesem Labor lernen Sie, die Threadanzahl in Hydra, einem leistungsstarken Netzwerk-Login-Cracker, anzupassen, um die Leistung zu optimieren. Wir richten einen grundlegenden SSH-Server auf der LabEx-VM ein und verwenden dann Hydra, um Passwort-Crack-Versuche mit verschiedenen Threadanzahlen (16, 32 und 4) durchzuführen. Durch den Vergleich der Geschwindigkeit und die Beobachtung der Auswirkungen dieser verschiedenen Einstellungen verstehen Sie, wie Sie Hydra-Angriffe optimieren, indem Sie die Threadanzahl basierend auf den verfügbaren Ressourcen und den Eigenschaften des Zieldienstes anpassen.

SSH-Server einrichten

In diesem Schritt richten wir einen grundlegenden SSH-Server auf der LabEx-VM ein. SSH (Secure Shell) ist ein kryptografisches Netzwerkprotokoll zum sicheren Betrieb von Netzwerkdiensten über ein unsicheres Netzwerk. Es wird häufig für Remote-Befehlszeilenanmeldungen und die Ausführung von Remote-Befehlen verwendet.

Zuerst müssen wir den OpenSSH-Server installieren. OpenSSH ist eine Suite von sicherheitsbezogenen Netzwerk-Tools auf Basis des Secure Shell-Protokolls und die gängigste SSH-Implementierung.

Öffnen Sie ein Terminal auf 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 von ihren Quellen. Es ist eine gute Praxis, dies auszuführen, bevor Sie neue Software installieren. Möglicherweise werden Sie nach Ihrem Passwort gefragt, aber denken Sie daran, dass der Benutzer labex ohne Passwort sudo-Berechtigungen hat.

Als Nächstes installieren Sie den OpenSSH-Server:

sudo apt install openssh-server -y

Der Flagge -y antwortet automatisch mit "ja" auf alle Eingabeaufforderungen während der Installation, wodurch der Prozess nicht interaktiv ist.

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

sudo service ssh status

Um zu bestätigen, dass der SSH-Server läuft, können Sie überprüfen, ob der SSH-Port (Port 22) lauscht. Verwenden Sie den Befehl netstat:

netstat -tulnp | grep 22

Sie sollten eine Ausgabe ähnlich dieser 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.

Nachdem der SSH-Server eingerichtet ist, können Sie sich von einem anderen Rechner aus mit einem SSH-Client verbinden. In diesem Labor konzentrieren wir uns jedoch darauf, Hydra zu verwenden, um das SSH-Passwort mit verschiedenen Threadkonfigurationen zu knacken.

Hydra mit Standard-16 Threads ausführen

In diesem Schritt verwenden Sie Hydra, um zu versuchen, das Passwort für den Benutzer labex auf Ihrem SSH-Server zu knacken. Sie beginnen mit Hydras Standard-Threadanzahl von 16.

Die Passwortsliste wurde bereits während des Einrichtungsprozesses heruntergeladen. Die Datei ~/project/password.txt enthält die unix_passwords.txt-Wortliste aus dem Metasploit-Framework, die Hunderte gängiger Unix-Passwörter umfasst. Diese größere Wortliste bietet eine bessere Demonstration der Unterschiede in der Threadleistung im Vergleich zu einer kleinen manuellen Liste.

Sie können die Verfügbarkeit der Passwortsliste überprüfen und deren Größe prüfen:

ls -la ~/project/password.txt
wc -l ~/project/password.txt

Dies zeigt Ihnen die Dateidetails und die Anzahl der Passwörter in der Wortliste (sollten mehrere Hundert Einträge sein).

Führen Sie nun den Hydra-Befehl aus. Die Option -l gibt den Benutzer an, der angegriffen werden soll (labex), -P gibt den Pfad zu Ihrer Passwortsliste an (~/project/password.txt), und -V aktiviert den ausführlichen Modus, um jeden Versuch anzuzeigen. ssh://localhost gibt an, dass Sie den SSH-Dienst auf dem lokalen Rechner angreifen.

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

Hydra beginnt nun, sich mit jedem Passwort in Ihrer Datei password.txt anzumelden. Da Sie die Option -t nicht angegeben haben, verwendet Hydra seine Standardeinstellung von 16 Threads, d. h. es versucht 16 Passwortversuche gleichzeitig. Die Flagge -V zeigt Ihnen jeden Versuch in Echtzeit an.

Wichtiger Hinweis zur Flagge -V:

Der Parameter -V (ausführlich) ist entscheidend, um den Angriffsprozess zu beobachten. Ohne ihn zeigt Hydra nur zusammengefasste Informationen und das Endergebnis an, aber Sie sehen nicht die einzelnen Zeilen [ATTEMPT], die jedes getestete Passwort anzeigen. Dieser ausführliche Output hilft Ihnen zu verstehen, wie sich die Threading auf die Angriffsgeschwindigkeit und -muster auswirkt.

Sie sehen eine Ausgabe ähnlich dieser, während Hydra fortschreitet:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 16 tasks per 1 server, overall 16 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Mit der größeren Wortliste werden Sie feststellen, dass Hydra länger braucht, um das richtige Passwort zu finden, wodurch die Unterschiede in der Threadanzahl deutlicher werden. Beachten Sie die Zeitinformationen, die Hydra liefert, wenn der Vorgang abgeschlossen ist.

Threads auf 32 erhöhen und Geschwindigkeit vergleichen

In diesem Schritt erhöhen Sie die Anzahl der Threads, die Hydra verwendet, auf 32, und beobachten die Auswirkungen auf die Knackgeschwindigkeit. Die Erhöhung der Threadanzahl kann den Prozess potenziell beschleunigen, indem mehr gleichzeitige Versuche ermöglicht werden. Die Effektivität hängt jedoch von den Ressourcen Ihres Systems und den Einschränkungen des Zieldienstes ab.

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

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

Dieser Befehl ist identisch mit dem vorherigen, außer durch die Hinzufügung von -t 32, wodurch Hydra explizit angewiesen wird, 32 Threads zu verwenden. Die Flagge -V stellt sicher, dass Sie jeden Passwortversuch sehen können.

Beobachten Sie die Ausgabe. Sie sollten feststellen, dass Hydra meldet, dass 32 Tasks/Threads gestartet werden:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 32 tasks per 1 server, overall 32 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Geschwindigkeitsvergleich:

Mit der größeren Wortliste sollten Sie deutliche Zeitunterschiede zwischen den Ausführungen mit 16 und 32 Threads beobachten können. Achten Sie auf:

  • Die von Hydra gemeldeten Start- und Endzeiten
  • Die Berechnung der "Versuche pro Task", die zeigt, wie die Arbeitslast verteilt wird
  • Die Gesamtzeit, die zum Abschluss des Angriffs benötigt wird

Mit 32 Threads könnten Sie möglicherweise schnellere Abschlusszeiten beobachten, insbesondere wenn das Zielpasswort später in der Wortliste steht. Sie können jedoch auch eine erhöhte Systemressourcenutzung und potenziell mehr gleichzeitig ausgeführte Verbindungsversuche feststellen.

Threads auf 4 reduzieren und beobachten

In diesem Schritt reduzieren Sie die Anzahl der von Hydra verwendeten Threads auf 4 und beobachten die Auswirkungen auf die Leistung. Dieser Szenario ist nützlich, wenn Sie über begrenzte Systemressourcen verfügen oder wenn der Zieldienst eine aggressive Rate-Limiting-Strategie anwendet, die zu viele gleichzeitige Verbindungsversuche blockieren könnte.

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

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

Dieser Befehl ähnelt den vorherigen, aber jetzt legen Sie die Threadanzahl explizit auf 4 fest, indem Sie -t 4 verwenden. Die Flagge -V zeigt Ihnen jeden Passwortversuch detailliert an.

Beobachten Sie die Ausgabe. Sie sollten sehen, dass Hydra nur 4 Tasks/Threads startet:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 4 tasks per 1 server, overall 4 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Beobachtung der Auswirkungen:

Mit nur 4 Threads und der größeren Wortliste sollten Sie einen signifikanten Unterschied in der Leistung feststellen:

  • Die Anzahl der "Versuche pro Task" wird deutlich höher sein, da jeder Thread mehr Passwörter verarbeiten muss.
  • Die Gesamtzeit bis zum Abschluss sollte im Vergleich zu den Ausführungen mit 16 und 32 Threads deutlich länger sein.
  • Sie werden weniger gleichzeitige [ATTEMPT]-Nachrichten sehen, da nur 4 Versuche gleichzeitig ausgeführt werden.

Dieses Experiment zeigt, dass eine geringere Threadanzahl im Allgemeinen zu einer langsameren Leistung führt, aber in bestimmten Situationen eine notwendige Anpassung sein kann, z. B. wenn versucht wird, die Erkennung durch Sicherheitsmaßnahmen des Zielsystems zu vermeiden oder wenn auf einem ressourcenbeschränkten Rechner gearbeitet wird.

Analyse des Thread-Einflusses auf die Leistung

In diesem Schritt analysieren Sie die Auswirkungen der Threadanzahl auf die Leistung von Hydra basierend auf Ihren Beobachtungen aus den vorherigen Schritten. Sie haben mit 4, 16 (Standard) und 32 Threads eine umfangreiche Wortliste aus dem Metasploit-Framework verwendet.

Wichtige Überlegungen zur Threadanzahl:

  • Systemressourcen: Die optimale Threadanzahl wird stark von den verfügbaren Ressourcen Ihres Systems beeinflusst, einschließlich CPU-Kernen, Arbeitsspeicher und Netzwerkbandbreite. Wenn Sie die Threadanzahl zu hoch einstellen, kann Ihr System überlastet werden, was zu Leistungseinbußen aufgrund von Kontextwechsel-Overhead und Ressourcenkonkurrenz führt.
  • Einschränkungen des Zieldienstes: Der Zieldienst (in diesem Fall SSH) kann Rate Limiting oder andere Sicherheitsmechanismen implementiert haben. Wenn der Dienst die Anzahl der Anmeldeversuche pro Zeiteinheit begrenzt, verbessert eine Erhöhung der Threads über einen bestimmten Punkt hinaus die Leistung nicht und könnte sogar Sicherheitswarnungen oder temporäre Blockierungen auslösen.
  • Netzwerklatenz: Eine hohe Netzwerklatenz zwischen Hydra und dem Zieldienst kann ebenfalls die Effektivität einer Erhöhung der Threadanzahl begrenzen. Jeder Thread muss eine Verbindung herstellen und verwalten, und hohe Latenzzeiten können diese Operationen verlangsamen und die Vorteile der Parallelität aufheben.
  • Wortlistenlänge: Bei größeren Wortlisten wie der in diesem Labor verwendeten werden die Unterschiede in der Threadanzahl deutlicher. Die Wortliste unix_passwords.txt enthält Hunderte von Einträgen, wodurch die Leistungsauswirkungen verschiedener Threadanzahlen besser erkennbar sind.

Beobachtungen und allgemeine Richtlinien:

  • 4 Threads: Diese Einstellung ist im Allgemeinen langsamer, eignet sich aber für Systeme mit begrenzten Ressourcen oder bei Angriffen auf Dienste mit strengem Rate Limiting. Sie ist weniger wahrscheinlich, dass sie zu Systemüberlastung oder sofortigen Sicherheitswarnungen führt. Mit der großen Wortliste sollten Sie deutlich längere Abschlusszeiten beobachtet haben.
  • 16 Threads (Standard): Die Standardthreadanzahl von 16 Threads bei Hydra stellt oft ein gutes Gleichgewicht zwischen Leistung und Ressourcenverbrauch für viele Systeme und Zieldienste dar. Sie bietet eine angemessene Parallelität, ohne in der Regel den Angriffsrechner oder das Ziel zu überlasten.
  • 32 Threads: Eine Erhöhung der Threadanzahl auf 32 kann die Leistung potenziell verbessern, insbesondere wenn Ihr System über ausreichend Ressourcen (z. B. mehrere CPU-Kerne) verfügt und der Zieldienst kein aggressives Rate Limiting anwendet. Es ist jedoch entscheidend, die Systemressourcenutzung zu überwachen, um sicherzustellen, dass sie nicht zum Engpass wird.

Zu berücksichtigende Leistungsmetriken:

Bei der Bewertung der Threadleistung sollten Sie diese Faktoren berücksichtigen:

  • Gesamtlaufzeit: Die Zeit vom Start bis zum Abschluss.
  • Versuche pro Sekunde: Die Rate, mit der Passwortversuche durchgeführt werden.
  • Systemressourcenverbrauch: CPU-, Speicher- und Netzwerknutzung.
  • Antwort des Zieldienstes: Ob der Dienst nicht mehr reagiert oder Blockierungen implementiert.

Fazit:

Es gibt keinen einzigen "besten" Threadzähler für Hydra; die optimale Einstellung hängt von einer Vielzahl von Faktoren ab, die spezifisch für Ihren Angriffsrechner und den Zieldienst sind. Es ist wichtig, mit verschiedenen Einstellungen zu experimentieren und sowohl die Leistung Ihres Systems als auch die Reaktion des Ziels zu überwachen, um das effizienteste Gleichgewicht zwischen Geschwindigkeit und Ressourcenverbrauch zu finden. Das Verständnis dieser Dynamiken ermöglicht es Ihnen, Ihre Hydra-Angriffe für verschiedene Szenarien zu optimieren.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie Sie die Threadanzahl von Hydra und deren Auswirkungen auf die Leistung mithilfe einer umfangreichen Passwort-Wortliste anpassen können. Sie haben zunächst einen grundlegenden SSH-Server auf Ihrer LabEx-VM eingerichtet. Anschließend haben Sie Hydra verwendet, um Passwort-Crack-Versuche gegen diesen SSH-Server mit unterschiedlichen Threadanzahlen durchzuführen: die Standardanzahl von 16, eine erhöhte Anzahl von 32 und eine reduzierte Anzahl von 4, wobei Sie die Wortliste unix_passwords.txt aus dem Metasploit-Framework verwendet haben. Durch die Beobachtung der Geschwindigkeit und der Bearbeitungszeit für jedes Szenario mit einer realistischen Wortliste haben Sie praktische Einblicke in die Auswirkungen der Threadanzahl auf die Effizienz von Hydra gewonnen. Dieses Labor hat die Bedeutung der Optimierung der Threadanzahl basierend auf den verfügbaren Systemressourcen und den Eigenschaften des Zieldienstes demonstriert, um die beste Leistung bei Passwort-Crack-Operationen zu erzielen.