Zusätzliche Passwortprüfungen in Hydra nutzen

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 Verwendung zusätzlicher Passwortprüfungen in Hydra, einem beliebten Passwort-Cracking-Tool, untersuchen. Das Lab konzentriert sich darauf, zu zeigen, wie man einen Telnet-Service auf der LabEx VM einrichtet und dann Hydra mit der Option -e nsr verwendet, um Passwort-Cracking-Versuche durchzuführen. Dabei werden leere Passwörter, Benutzernamen und umgekehrte Benutzernamen als potenzielle Passwörter genutzt.

Das Lab beinhaltet die Installation und Konfiguration des Telnet-Services, die Änderung der Datei /etc/inetd.conf, um aus Demonstrationsgründen die Authentifizierung zu deaktivieren, und anschließend das Ausführen von Hydra mit der Option -e nsr. Abschließend werden wir die Ausgabe prüfen, um erfolgreiche Prüfungen zu beobachten, und die Ergebnisse mit der Option -e ns vergleichen. Dies soll die Wirksamkeit der Einbeziehung zusätzlicher Passwortprüfungen bei Passwort-Cracking-Versuchen verdeutlichen.


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/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") subgraph Lab Skills hydra/installation -.-> lab-550776{{"Zusätzliche Passwortprüfungen in Hydra nutzen"}} hydra/single_username -.-> lab-550776{{"Zusätzliche Passwortprüfungen in Hydra nutzen"}} hydra/single_password -.-> lab-550776{{"Zusätzliche Passwortprüfungen in Hydra nutzen"}} hydra/verbose_mode -.-> lab-550776{{"Zusätzliche Passwortprüfungen in Hydra nutzen"}} hydra/success_detection -.-> lab-550776{{"Zusätzliche Passwortprüfungen in Hydra nutzen"}} hydra/service_options -.-> lab-550776{{"Zusätzliche Passwortprüfungen in Hydra nutzen"}} end

Einrichten des Telnet-Services

In diesem Schritt werden wir den Telnet-Service auf der LabEx VM einrichten. Telnet ist ein Netzwerkprotokoll, das verwendet wird, um eine bidirektionale, interaktive, textbasierte Kommunikationsmöglichkeit über eine virtuelle Terminalverbindung bereitzustellen. Obwohl Telnet aufgrund seiner fehlenden Verschlüsselung im Allgemeinen als unsicher angesehen wird, ist es für Demonstrations- und Testzwecke in einer kontrollierten Umgebung wie unserer LabEx VM nützlich.

Zunächst müssen wir den Telnet-Server installieren. Da die LabEx VM einen Docker-Container verwendet, können wir systemctl nicht direkt nutzen, um Dienste zu verwalten. Stattdessen werden wir einen Workaround nutzen, um den Telnet-Service innerhalb des Containers zu starten.

  1. Installation des Telnet-Servers:

    Öffnen Sie Ihr Terminal im Verzeichnis ~/project und führen Sie den folgenden Befehl aus:

    sudo apt update
    sudo apt install -y telnetd

    Dieser Befehl aktualisiert die Paketliste und installiert das telnetd-Paket, das die Funktionalität des Telnet-Servers bereitstellt. Sie sollten eine Ausgabe sehen, die den Installationsprozess anzeigt.

    ...
    Setting up openbsd-inetd (0.20180617-1) ...
    ...
    Processing triggers for systemd (247.3-7ubuntu3.9) ...
    Processing triggers for man-db (2.9.1-1) ...
  2. Konfiguration von Telnet zur Ausführung ohne Authentifizierung (nur zu Demonstrationszwecken - MACHT DAS NIE in einer Produktionsumgebung):

    Bearbeiten Sie die Datei /etc/inetd.conf, um die Authentifizierung zu deaktivieren. Verwenden Sie nano, um die Datei zu bearbeiten:

    sudo nano /etc/inetd.conf

    Suchen Sie die Zeile, die mit telnet beginnt, und kommentieren Sie sie aus, indem Sie ein # am Anfang der Zeile hinzufügen. Fügen Sie dann eine neue Zeile darunter hinzu, die die Authentifizierung deaktiviert.

    #telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd
    telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i

    Drücken Sie Ctrl+S, um die Änderungen zu speichern, und Ctrl+X, um nano zu verlassen.

  3. Neustart des inetd-Dienstes:

    Da wir systemctl nicht verwenden können, werden wir das Skript /etc/init.d nutzen, um den inetd-Dienst neu zu starten, der Telnet verwaltet.

    sudo /etc/init.d/openbsd-inetd restart

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

     * Restarting internet superserver inetd

Ausführen von Hydra mit -e nsr-Prüfungen

In diesem Schritt werden wir Hydra verwenden, um einen Brute-Force-Angriff auf den Telnet-Service durchzuführen, den wir im vorherigen Schritt eingerichtet haben. Wir werden die Option -e nsr nutzen, die Hydra anweist, leere Passwörter, den Benutzernamen als Passwort und umgekehrte Benutzernamen als Passwörter zu versuchen. Dies ist eine gängige Technik, um schwach oder standardmäßig gesetzte Zugangsdaten schnell zu identifizieren.

  1. Ausführen von Hydra mit der Option -e nsr:

    Öffnen Sie Ihr Terminal im Verzeichnis ~/project und führen Sie den folgenden Befehl aus:

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e nsr telnet://localhost

    Lassen Sie uns diesen Befehl zerlegen:

    • hydra: Der Befehl, um das Hydra-Tool auszuführen.
    • -l labex: Gibt den zu probierenden Benutzernamen an. Wir verwenden labex, den Standardbenutzer auf der LabEx VM.
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: Gibt eine Passwortlisten-Datei an. Diese Datei enthält eine Liste von gängigen Passwörtern.
    • -vV: Aktiviert den ausführlichen Modus, der jeden Anmeldeversuch anzeigt.
    • -e nsr: Dies ist die Schlüsseloption für diesen Schritt. Sie weist Hydra an, Folgendes zu versuchen:
      • n: Leeres Passwort (leere Zeichenkette).
      • s: Benutzername als Passwort.
      • r: Umgekehrter Benutzername als Passwort.
    • telnet://localhost: Gibt den Zielservice und die Adresse an. telnet gibt das Telnet-Protokoll an, und localhost bezieht sich auf den lokalen Rechner.

    Hydra wird nun versuchen, sich am Telnet-Service mit dem angegebenen Benutzernamen und der Passwortliste sowie dem leeren Passwort, dem Benutzernamen und dem umgekehrten Benutzernamen anzumelden. Die Ausgabe wird jeden Anmeldeversuch und ob er erfolgreich war, anzeigen.

    Beispielausgabe (kann je nach Passwortliste variieren):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    [ATTEMPT] target localhost - login: 'labex' - pass: 'xebal'
    [23][telnet] host: localhost   login: labex   password: xebal
    ...

    Da wir Telnet so konfiguriert haben, dass Anmeldungen ohne Authentifizierung erlaubt sind, wird Hydra wahrscheinlich einen erfolgreichen Anmeldeversuch mit einem leeren Passwort finden.

Überprüfung der Ausgabe auf erfolgreiche Prüfungen

In diesem Schritt werden wir die Ausgabe des Hydra-Befehls, den wir im vorherigen Schritt ausgeführt haben, analysieren, um alle erfolgreichen Anmeldeversuche zu identifizieren.

  1. Untersuchung der Hydra-Ausgabe:

    Blättern Sie im Terminal zurück zur Ausgabe des vorherigen Schritts. Suchen Sie nach Zeilen, die einen erfolgreichen Anmeldeversuch anzeigen. Diese Zeilen enthalten typischerweise das Wort [23][telnet] host: localhost login: labex password: gefolgt vom erfolgreichen Passwort.

    Da wir die Authentifizierung für Telnet deaktiviert haben, sollten Sie eine Zeile ähnlich der folgenden sehen:

    [23][telnet] host: localhost   login: labex   password:

    Dies zeigt an, dass Hydra in der Lage war, sich am Telnet-Service auf localhost als Benutzer labex mit einem leeren Passwort (einem leeren String) anzumelden.

  2. Verständnis der Ausgabe:

    Die Ausgabe von Hydra liefert wertvolle Informationen über die Sicherheit des Zielservices. In diesem Fall hebt der erfolgreiche Anmeldeversuch mit einem leeren Passwort eine erhebliche Schwachstelle hervor. Ein Angreifer könnte möglicherweise ohne Angabe von Zugangsdaten auf das System zugreifen.

    Wenn Sie andere erfolgreiche Anmeldungen mit Passwörtern aus der Passwortliste sehen, bedeutet dies, dass der Benutzer ein schwaches Passwort verwendet, das leicht zu erraten ist.

    Die Option -vV im Hydra-Befehl liefert eine ausführliche Ausgabe, die jeden Anmeldeversuch anzeigt. Dies kann hilfreich sein, um den Fortschritt des Angriffs zu verstehen und Muster oder Probleme zu identifizieren.

Vergleich mit -e ns-Prüfungen

In diesem Schritt werden wir Hydra erneut ausführen, diesmal jedoch mit der Option -e ns. Diese Option weist Hydra an, leere Passwörter und den Benutzernamen als Passwort zu versuchen. Anschließend vergleichen wir die Ergebnisse mit denen des vorherigen Runs mit -e nsr, um den Unterschied zu verstehen.

  1. Ausführen von Hydra mit der Option -e ns:

    Öffnen Sie Ihr Terminal im Verzeichnis ~/project und führen Sie den folgenden Befehl aus:

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e ns telnet://localhost

    Wie zuvor, lassen Sie uns diesen Befehl zerlegen:

    • hydra: Der Befehl, um das Hydra-Tool auszuführen.
    • -l labex: Gibt den zu probierenden Benutzernamen an. Wir verwenden labex, den Standardbenutzer auf der LabEx VM.
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: Gibt eine Passwortlisten-Datei an. Diese Datei enthält eine Liste von gängigen Passwörtern.
    • -vV: Aktiviert den ausführlichen Modus, der jeden Anmeldeversuch anzeigt.
    • -e ns: Diese Option weist Hydra an, Folgendes zu versuchen:
      • n: Leeres Passwort (leere Zeichenkette).
      • s: Benutzername als Passwort.
    • telnet://localhost: Gibt den Zielservice und die Adresse an. telnet gibt das Telnet-Protokoll an, und localhost bezieht sich auf den lokalen Rechner.

    Hydra wird nun versuchen, sich am Telnet-Service mit dem angegebenen Benutzernamen und der Passwortliste sowie dem leeren Passwort und dem Benutzernamen anzumelden. Die Ausgabe wird jeden Anmeldeversuch und ob er erfolgreich war, anzeigen.

    Beispielausgabe (kann je nach Passwortliste variieren):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    ...
  2. Vergleich der Ergebnisse:

    Vergleichen Sie die Ausgabe dieses Befehls mit der Ausgabe des vorherigen Schritts (mit -e nsr). Sie sollten Folgendes beobachten:

    • Beide Befehle werden wahrscheinlich einen erfolgreichen Anmeldeversuch mit einem leeren Passwort finden, da wir Telnet so konfiguriert haben, dass dies erlaubt ist.
    • Beide Befehle versuchen den Benutzernamen als Passwort.
    • Der Befehl -e nsr hat auch den umgekehrten Benutzernamen als Passwort versucht, was -e ns nicht getan hat.

    Dieser Vergleich zeigt, wie verschiedene Optionen in Hydra den Umfang und die Effektivität des Angriffs beeinflussen können. In diesem Fall umfasst -e nsr eine zusätzliche Prüfung (umgekehrter Benutzername), die in bestimmten Szenarien nützlich sein kann.

Zusammenfassung

In diesem Lab haben wir einen Telnet-Service auf der LabEx VM zu Demonstrations- und Testzwecken eingerichtet. Dies beinhaltete die Installation des telnetd-Pakets mit apt und die Konfiguration der Datei /etc/inetd.conf, um die Authentifizierung zu deaktivieren. Dies ist entscheidend, um Hydras Fähigkeiten zur Passwortknackung in einer kontrollierten Umgebung aufzuzeigen.

Da die LabEx VM einen Docker-Container verwendet, haben wir die Standard-systemctl-Befehle umgangen und stattdessen die inetd.conf-Datei geändert und das Skript /etc/init.d verwendet, um den inetd-Service neu zu starten. Diese Konfiguration, obwohl für Produktionsumgebungen unsicher, ermöglicht es uns, in den folgenden Schritten die Passwortknackungsfähigkeiten von Hydra zu demonstrieren.