Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen

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 Angriff auf der Grundlage von Anmeldeinformationen mit Hydra durchführen können. Das Lab konzentriert sich darauf, eine mit Doppelpunkten getrennte Datei mit Anmeldeinformationen, die Benutzername/Passwort-Kombinationen enthält, zu nutzen, um die Anmeldeinformationen eines Zielservices zu knacken.

Sie beginnen damit, eine credentials.txt-Datei mit Benutzername:Passwort-Paaren zu erstellen, indem Sie einen Texteditor wie nano verwenden. Dann lernen Sie, wie Sie diese Datei mit der Option -C in Hydra laden können, damit Hydra effizient mehrere Anmeldekombinationen gegen das Ziel testen kann. Abschließend überprüfen Sie, ob die Ausgabe mit den bei dem Angriff verwendeten Anmeldeinformationen übereinstimmt.


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/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/http_form("HTTP Form Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/basic_structure -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} hydra/single_username -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} hydra/single_password -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} hydra/target_ip -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} hydra/target_service -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} hydra/http_form -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} hydra/success_detection -.-> lab-550763{{"Angriff mit durch Doppelpunkte getrennten Anmeldeinformationen"}} end

Erstellen einer Datei mit Anmeldeinformationen (Login:Passwort)

In diesem Schritt erstellen Sie eine Datei, die Benutzernamen und Passwörter enthält, wobei jede Zeile eine Kombination darstellt, getrennt durch einen Doppelpunkt. Diese Datei wird später mit Hydra verwendet, um die Anmeldeinformationen eines Zielservices zu knacken.

Zunächst verstehen wir das erforderliche Format für die Datei mit den Anmeldeinformationen. Jede Zeile sollte einen Benutzernamen, einen Doppelpunkt (:) und das entsprechende Passwort enthalten. Beispiel:

username1:password1
username2:password2

Nun erstellen wir die Datei. Wir verwenden den Texteditor nano, der einfach und benutzerfreundlich ist.

  1. Öffnen Sie eine neue Datei namens credentials.txt im Verzeichnis ~/project mit nano:

    nano ~/project/credentials.txt
  2. Fügen Sie im nano-Editor die folgenden Benutzername/Passwort-Kombinationen hinzu. Sie können diese gerne ändern oder eigene hinzufügen.

    admin:password
    user1:123456
    test:test
    root:toor
  3. Um die Datei zu speichern, drücken Sie Strg+O (Schreiben). Nano wird Sie nach dem Dateinamen fragen. Drücken Sie einfach Enter, um den Standarddateinamen (~/project/credentials.txt) zu akzeptieren.

  4. Um nano zu verlassen, drücken Sie Strg+X.

Nun überprüfen wir, ob die Datei erstellt wurde und den richtigen Inhalt enthält.

  1. Verwenden Sie den Befehl cat, um den Inhalt der Datei credentials.txt anzuzeigen:

    cat ~/project/credentials.txt

    Sie sollten die Benutzername/Passwort-Kombinationen sehen, die Sie zuvor eingegeben haben.

    admin:password
    user1:123456
    test:test
    root:toor

Sie haben nun erfolgreich eine Datei mit Anmeldeinformationen erstellt, die mit Hydra verwendet werden kann. Diese Datei enthält eine Liste möglicher Benutzernamen und Passwörter, die Hydra gegen den Zielservice testen wird.

Laden von Anmeldeinformationen mit der Option -C

In diesem Schritt lernen Sie, wie Sie die Option -C in Hydra verwenden, um eine Datei mit Anmeldeinformationen anzugeben, die Benutzername/Passwort-Kombinationen enthält. Dies ist eine effizientere Methode, Hydra mehrere Anmeldeversuche zur Verfügung zu stellen, als wenn Sie Benutzernamen und Passwörter separat angeben.

Die Option -C teilt Hydra mit, Benutzername- und Passwort-Kombinationen direkt aus einer Datei zu lesen. Die Datei sollte so formatiert sein, dass jede Zeile Benutzername:Passwort enthält, wie Sie es im vorherigen Schritt erstellt haben.

Simulieren wir einen grundlegenden Hydra-Befehl unter Verwendung der Option -C. In diesem Schritt werden wir tatsächlich keinen Service angreifen, sondern den Befehl konstruieren, um sicherzustellen, dass Sie verstehen, wie Sie die Option verwenden.

Stellen Sie sich vor, Sie möchten einen HTTP-Service angreifen, der auf 127.0.0.1 läuft. Der grundlegende Hydra-Befehl, um die von Ihnen erstellte Datei mit den Anmeldeinformationen zu verwenden, würde wie folgt aussehen:

hydra -C ~/project/credentials.txt 127.0.0.1 http-get /

Lassen Sie uns diesen Befehl zerlegen:

  • hydra: Dies ist der Befehl, um das Hydra-Tool auszuführen.
  • -C ~/project/credentials.txt: Diese Option gibt den Pfad zur Datei mit den Anmeldeinformationen an, die Sie im vorherigen Schritt erstellt haben. Hydra liest die Benutzername/Passwort-Kombinationen aus dieser Datei.
  • 127.0.0.1: Dies ist die Ziel-IP-Adresse. In diesem Beispiel handelt es sich um die lokale Maschine.
  • http-get /: Dies gibt den zu angreifenden Service (HTTP) und den Pfad der Anfrage (/) an. Dies ist ein Platzhalter und wird im nächsten Schritt verwendet.

Wichtiger Hinweis: Dieser Befehl wird in diesem Schritt tatsächlich keinen erfolgreichen Angriff durchführen. Wir demonstrieren nur, wie Sie die Option -C verwenden. Sie benötigen einen anfälligen HTTP-Service, um einen echten Angriff durchzuführen, was im nächsten Schritt behandelt wird.

Um sicherzustellen, dass Sie verstehen, wie Sie die Option -C verwenden, überprüfen wir Ihre Befehlsgeschichte.

Angriff auf einen HTTP-Service mit einer Datei mit Anmeldeinformationen

In diesem Schritt verwenden Sie Hydra, um einen simulierten HTTP-Service mit der Datei mit Anmeldeinformationen anzugreifen, die Sie zuvor erstellt haben. Um diesen Schritt möglich zu machen, richten wir zunächst einen einfachen HTTP-Server ein, der eine Authentifizierung erfordert. Dieser Server wird absichtlich anfällig für einen Brute-Force-Angriff sein.

  1. Erstellen eines einfachen HTTP-Servers mit Basisauthentifizierung:

    Wir verwenden das eingebaute http.server-Modul von Python, um einen einfachen HTTP-Server zu erstellen, der eine Authentifizierung erfordert. Erstellen Sie zunächst eine Datei namens webserver.py in Ihrem ~/project-Verzeichnis:

    nano ~/project/webserver.py

    Fügen Sie den folgenden Python-Code in die Datei ein:

    import http.server
    import socketserver
    import base64
    
    PORT = 8000
    
    class AuthHandler(http.server.SimpleHTTPRequestHandler):
        def do_HEAD(self):
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
    
        def do_AUTHHEAD(self):
            self.send_response(401)
            self.send_header('WWW-Authenticate', 'Basic realm="My Realm"')
            self.send_header('Content-type', 'text/html')
            self.end_headers()
    
        def do_GET(self):
            auth = self.headers.get('Authorization')
            if auth == None:
                self.do_AUTHHEAD()
                self.wfile.write(b"Authentication Required")
            elif auth == 'Basic YWRtaW46cGFzc3dvcmQ=': ## admin:password base64 encoded
                http.server.SimpleHTTPRequestHandler.do_GET(self)
            else:
                self.do_AUTHHEAD()
                self.wfile.write(b"Authentication Failed")
    
    Handler = AuthHandler
    
    with socketserver.TCPServer(("", PORT), Handler) as httpd:
        print("serving at port", PORT)
        httpd.serve_forever()

    Dieses Skript erstellt einen einfachen HTTP-Server, der eine Basisauthentifizierung erfordert. Der richtige Benutzername ist admin und das Passwort ist password. Die Base64-codierte Zeichenfolge YWRtaW46cGFzc3dvcmQ= repräsentiert admin:password.

    Speichern Sie die Datei (Strg+O, dann Enter) und verlassen Sie nano (Strg+X).

  2. Starten des HTTP-Servers:

    Führen Sie das Python-Skript aus, um den HTTP-Server zu starten:

    python3 ~/project/webserver.py

    Der Server wird starten und auf Port 8000 lauschen. Halten Sie dieses Terminalfenster geöffnet, da der Server für den Hydra-Angriff laufen muss.

  3. Angriff auf den HTTP-Service mit Hydra:

    Öffnen Sie ein neues Terminalfenster. Verwenden Sie nun Hydra, um den HTTP-Service mit der Datei mit Anmeldeinformationen anzugreifen, die Sie im ersten Schritt erstellt haben:

    hydra -C ~/project/credentials.txt 127.0.0.1 http-get /

    Hydra wird jede Benutzername/Passwort-Kombination aus der Datei credentials.txt gegen den HTTP-Service testen. Es wird versuchen, auf den Root-Pfad / zuzugreifen.

    Sie sollten Ausgaben von Hydra sehen, die anzeigen, dass es verschiedene Benutzername/Passwort-Kombinationen testet. Wenn Hydra die richtigen Anmeldeinformationen (admin:password) erfolgreich findet, wird es sie in der Ausgabe anzeigen.

    Beispielausgabe (erfolgreicher Angriff):

    Hydra v9.1 (c) 2020 by van Hauser/THC - Use freely but carefully.
    ...
    [http-get] 1 of 1 target
    [http-get] Trying login: admin/password
    ...
    [http-get] host: 127.0.0.1   login: admin   password: password
    ...
    1 target completed, 1 valid password found

    Wenn der Angriff erfolgreich ist, wird Hydra den richtigen Benutzernamen und das Passwort ausgeben.

  4. Stoppen des HTTP-Servers:

    Drücken Sie im Terminalfenster, in dem das Skript webserver.py läuft, Strg+C, um den Server zu stoppen.

Sie haben nun erfolgreich Hydra verwendet, um einen HTTP-Service mit einer Datei mit Anmeldeinformationen anzugreifen.

Überprüfen, ob die Ausgabe mit den Anmeldeinformationen übereinstimmt

In diesem Schritt überprüfen Sie, ob die Anmeldeinformationen, die Hydra während des Angriffs im vorherigen Schritt gefunden hat, mit den erwarteten Anmeldeinformationen in der Datei credentials.txt und im Skript webserver.py übereinstimmen. Dies stellt sicher, dass Hydra gültige Anmeldeinformationen korrekt erkennt.

Im vorherigen Schritt sollten Sie eine Ausgabe von Hydra ähnlich der folgenden gesehen haben:

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

Diese Ausgabe zeigt an, dass Hydra erfolgreich den Benutzernamen admin und das Passwort password gefunden hat.

Lassen Sie uns nun überprüfen, ob diese Anmeldeinformationen sowohl in der Datei credentials.txt als auch im Skript webserver.py enthalten sind.

  1. Überprüfen der Anmeldeinformationen in credentials.txt:

    Verwenden Sie den Befehl cat, um den Inhalt der Datei credentials.txt anzuzeigen:

    cat ~/project/credentials.txt

    Stellen Sie sicher, dass die Datei die Zeile admin:password enthält.

  2. Überprüfen der Anmeldeinformationen in webserver.py:

    Verwenden Sie den Befehl cat, um den Inhalt der Datei webserver.py anzuzeigen:

    cat ~/project/webserver.py

    Stellen Sie sicher, dass die Datei die Zeile elif auth == 'Basic YWRtaW46cGFzc3dvcmQ=': ## admin:password base64 encoded enthält. Diese Zeile bestätigt, dass der Server den Benutzernamen admin und das Passwort password (Base64-codiert) erwartet.

Indem Sie überprüfen, dass die von Hydra gefundenen Anmeldeinformationen mit den Anmeldeinformationen in der Datei credentials.txt und im Skript webserver.py übereinstimmen, können Sie sicher sein, dass Hydra korrekt funktioniert und gültige Anmeldeinformationen erkennt.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie eine Datei namens credentials.txt mit Anmeldeinformationen erstellen. Diese Datei enthält Benutzername-Passwort-Kombinationen, die durch Doppelpunkte getrennt sind, wobei jede Kombination in einer neuen Zeile steht. Die Datei wird im Verzeichnis ~/project gespeichert und für die Verwendung mit Hydra vorbereitet.

Das Lab hat auch das grundlegende Konzept der Verwendung der -C-Option in Hydra vorgestellt, um diese Anmeldeinformationen zu laden und so effizientere Anmeldeversuche durchzuführen. Die vollständige Implementierung dieser Option wird jedoch im hier bereitgestellten Auszug nicht detailliert beschrieben.