Attaquer les services SMB avec Hydra

HydraBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à attaquer les services SMB (Server Message Block) à l'aide d'Hydra, un outil puissant de cassage de mots de passe. Ce laboratoire se concentre sur la démonstration de la manière d'identifier et d'exploiter les identifiants faibles sur un serveur SMB.

Vous commencerez par configurer un serveur SMB local à l'aide de Samba, y compris l'installation des packages nécessaires, la configuration du fichier smb.conf pour créer un répertoire partagé et la définition des autorisations appropriées. Ensuite, vous préparerez des listes d'utilisateurs et de mots de passe à utiliser dans l'attaque Hydra. Enfin, vous exécuterez l'attaque SMB d'Hydra et vérifierez les résultats pour voir si des identifiants ont été correctement cassés.

Configurer un serveur SMB local

Dans cette étape, vous allez configurer un serveur SMB (Server Message Block) local à l'aide de Samba. SMB est un protocole de partage de fichiers réseau qui permet aux applications sur un ordinateur d'accéder aux fichiers et aux ressources sur un serveur distant. Samba est une implémentation logicielle libre du protocole réseau SMB. Cela fournira une cible pour votre attaque Hydra SMB dans les étapes ultérieures.

Tout d'abord, installons Samba. Ouvrez votre terminal dans le répertoire ~/project.

sudo apt update
sudo apt install samba -y

Cette commande met à jour les listes de paquets, puis installe le paquet Samba. L'option -y répond automatiquement par « oui » à toutes les invites pendant l'installation.

Ensuite, vous devez configurer Samba. Vous commencerez par sauvegarder le fichier de configuration original.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Maintenant, créons un nouveau fichier de configuration propre en écrasant directement le fichier existant. Cette approche garantit l'absence de conflits avec les paramètres Samba par défaut d'Ubuntu.

Copiez la commande suivante et exécutez-la dans le terminal. Assurez-vous que la commande est copiée correctement.

sudo tee /etc/samba/smb.conf > /dev/null << 'EOF'
[global]
   workgroup = WORKGROUP
   server string = Serveur Samba
   netbios name = fileserver
   security = user
   map to guest = never
   ## Désactiver l'accès anonyme
   restrict anonymous = 2
   ## Activer explicitement SMBv1 et NTLMv1 pour Hydra
   server min protocol = NT1
   client min protocol = NT1
   ntlm auth = ntlmv1-permitted
   ## Se lier à l'hôte local
   interfaces = 127.0.0.1
   bind interfaces only = yes
   ## Journalisation
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   debug level = 3

[share]
   path = /home/labex/project/share
   browsable = oui
   writable = oui
   guest ok = non
   read only = non
   valid users = labex
EOF

Cette commande remplacera entièrement le contenu de /etc/samba/smb.conf par notre configuration propre.

Points de configuration importants :

  • map to guest = never - Empêche l'accès anonyme des invités
  • restrict anonymous = 2 - Désactive complètement l'accès anonyme
  • server min protocol = NT1 et client min protocol = NT1 - Active SMBv1 pour la compatibilité avec Hydra
  • ntlm auth = ntlmv1-permitted - Autorise l'authentification NTLMv1 pour les tests
  • interfaces = 127.0.0.1 et bind interfaces only = yes - Limite l'accès à l'hôte local uniquement
  • guest ok = no - Désactive l'accès des invités au partage
  • valid users = labex - Limite l'accès à un utilisateur spécifique uniquement

Pourquoi écraser l'intégralité du fichier :

  • Évite les conflits avec les paramètres Samba par défaut d'Ubuntu
  • Assure une configuration propre et minimale optimisée pour les tests Hydra
  • Élimine les problèmes potentiels liés aux directives en double ou contradictoires
  • Fournit un point de départ cohérent pour tous les utilisateurs

Cette configuration garantit qu'Hydra pourra détecter correctement les tentatives d'authentification sans interférence de l'accès anonyme.

Maintenant, créons le répertoire partagé.

mkdir ~/project/share
sudo chmod 777 ~/project/share

Cela crée un répertoire nommé share dans votre répertoire ~/project et définit ses permissions à 777, ce qui signifie que tout le monde a les permissions de lecture, d'écriture et d'exécution. Remarque : Dans un scénario réel, vous souhaiteriez utiliser des permissions plus restrictives. Pour simplifier cet environnement de laboratoire, nous utilisons 777.

Ensuite, vous devez ajouter un utilisateur Samba. Cet utilisateur sera utilisé pour s'authentifier sur le serveur SMB. Vous utiliserez l'utilisateur labex qui existe déjà sur le système. Tout d'abord, définissez un mot de passe Samba pour l'utilisateur labex.

sudo smbpasswd -a labex

Vous serez invité à saisir un nouveau mot de passe pour l'utilisateur labex. Entrez password et confirmez-le.

Nouveau mot de passe SMB :
Ressaisissez le nouveau mot de passe SMB :
Utilisateur labex ajouté.

Enfin, redémarrez le service Samba pour appliquer les modifications.

sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart

Vous devriez voir une sortie similaire à ceci :

 * Arrêt du démon SMB/CIFS smbd                                        [ OK ]
 * Démarrage du démon SMB/CIFS smbd                                        [ OK ]
 * Arrêt du serveur de noms NetBIOS nmbd                                    [ OK ]
 * Démarrage du serveur de noms NetBIOS nmbd                                    [ OK ]

Cette commande vérifie votre configuration Samba pour les erreurs de syntaxe et affiche la configuration active. Vous devriez voir une sortie confirmant vos paramètres sans aucune erreur.

Maintenant, votre serveur SMB local est configuré avec des paramètres de sécurité appropriés. Vous avez créé un répertoire partagé nommé share et ajouté l'utilisateur labex avec un mot de passe Samba. La configuration est optimisée pour fonctionner correctement avec les attaques Hydra.

Préparer les listes d'utilisateurs et de mots de passe

Dans cette étape, vous allez créer les listes d'utilisateurs et de mots de passe que Hydra utilisera pour effectuer l'attaque SMB. Ces listes contiendront des noms d'utilisateurs et des mots de passe potentiels que Hydra tentera d'utiliser pour s'authentifier sur le serveur SMB.

Tout d'abord, créons la liste des utilisateurs. Vous utiliserez nano pour créer un fichier nommé users.txt dans le répertoire ~/project.

nano ~/project/users.txt

Dans ce fichier, ajoutez les noms d'utilisateurs suivants, un par ligne :

labex
admin
guest
user
test
root

Appuyez sur Ctrl+X, puis sur Y, puis sur Entrée pour enregistrer le fichier.

Maintenant, créons la liste des mots de passe. Vous utiliserez nano pour créer un fichier nommé passwords.txt dans le répertoire ~/project.

nano ~/project/passwords.txt

Dans ce fichier, ajoutez les mots de passe suivants, un par ligne :

password
123456
labex
admin
guest

Appuyez sur Ctrl+X, puis sur Y, puis sur Entrée pour enregistrer le fichier.

Ce sont des listes simples à des fins de démonstration. Dans un scénario réel, vous utiliseriez des listes beaucoup plus grandes et plus complexes.

Vous avez maintenant créé deux fichiers : users.txt contenant une liste de noms d'utilisateurs et passwords.txt contenant une liste de mots de passe. Hydra utilisera ces listes à l'étape suivante pour tenter de casser le mot de passe du serveur SMB.

Exécuter l'attaque Hydra SMB

Dans cette étape, vous utiliserez Hydra pour effectuer une attaque par force brute contre le serveur SMB que vous avez configuré à l'étape précédente. Hydra est un outil de craquage de connexion parallélisé qui prend en charge de nombreux protocoles d'attaque.

Ouvrez votre terminal dans le répertoire ~/project.

Exécutons maintenant la commande Hydra pour attaquer le service SMB.

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 smb

Décomposons cette commande :

  • hydra : C'est la commande pour exécuter l'outil Hydra.
  • -L ~/project/users.txt : Spécifie le chemin vers le fichier de liste d'utilisateurs.
  • -P ~/project/passwords.txt : Spécifie le chemin vers le fichier de liste de mots de passe.
  • 127.0.0.1 : C'est l'adresse IP du serveur SMB cible (l'hôte local dans ce cas).
  • smb : Spécifie le service à attaquer (SMB).

Hydra va maintenant commencer à tenter de se connecter au serveur SMB en utilisant les noms d'utilisateurs et les mots de passe des listes que vous avez fournies. Il essaiera toutes les combinaisons de nom d'utilisateur et de mot de passe jusqu'à ce qu'il trouve une combinaison valide ou épuise toutes les possibilités.

Avec le serveur SMB correctement configuré de l'étape 1, vous devriez voir la découverte réussie des informations d'identification :

Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Veuillez ne pas utiliser dans les organisations militaires ou de services secrets, ou à des fins illégales (ceci n'est pas contraignant, ces *** ignorent les lois et l'éthique de toute façon).

Hydra (https://github.com/vanhauser-thc/thc-hydra) démarré le 2025-05-30 10:52:16
[INFO] Nombre de tâches réduit à 1 (smb n'aime pas les connexions parallèles)
[DATA] max 1 tâche par 1 serveur, au total 1 tâche, 30 tentatives de connexion (l :6/p :5), ~30 tentatives par tâche
[DATA] attaque smb://127.0.0.1:445/
[445][smb] hôte : 127.0.0.1  utilisateur : labex  mot de passe : password
1 sur 1 cible terminée avec succès, 1 mot de passe valide trouvé
Hydra (https://github.com/vanhauser-thc/thc-hydra) terminé le 2025-05-30 10:52:17

Comprendre la sortie :

  • La ligne [445][smb] hôte : 127.0.0.1  utilisateur : labex  mot de passe : password indique qu'Hydra a trouvé avec succès des informations d'identification valides.
  • Nom d'utilisateur : labex
  • Mot de passe : password
  • Le résumé indique "1 mot de passe valide trouvé", confirmant l'attaque réussie.

Important : Cette attaque est effectuée sur un serveur SMB local à des fins éducatives. Nous avons spécifiquement configuré le serveur pour démontrer le fonctionnement d'Hydra. Dans les environnements de production, SMBv1 doit être désactivé pour des raisons de sécurité. Effectuer des attaques non autorisées sur des systèmes distants est illégal et contraire à l'éthique.

La commande peut prendre un certain temps à s'exécuter, en fonction de la taille de vos listes d'utilisateurs et de mots de passe. Observez la sortie pour voir quand Hydra réussit à craquer le mot de passe.

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

Dans cette étape, vous analyserez la sortie de l'attaque SMB avec Hydra pour confirmer la découverte réussie des informations d'identification et vérifier la validité des informations d'identification décryptées en vous connectant au partage SMB.

Après avoir exécuté la commande Hydra (et éventuellement appliqué les étapes de dépannage) à l'étape précédente, vous devriez voir une sortie similaire à ceci :

[445][smb] host: 127.0.0.1   login: labex   password: password
1 of 1 target successfully completed, 1 valid password found

Cette ligne indique qu'Hydra a réussi à décrypter les informations d'identification SMB :

  • Nom d'utilisateur : labex
  • Mot de passe : password

Vérification des informations d'identification décryptées :
Pour confirmer que les informations d'identification décryptées sont valides, vous pouvez utiliser la commande smbclient pour vous connecter au partage SMB. Installez-la d'abord si elle n'est pas déjà installée :

sudo apt update
sudo apt install smbclient -y

Vous devriez voir une sortie similaire à ceci :

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libsmbclient
The following NEW packages will be installed:
  libsmbclient smbclient
0 upgraded, 2 newly installed, 0 to remove and 252 not upgraded.
...
Setting up smbclient (2:4.15.13+dfsg-0ubuntu1.6) ...

Maintenant, utilisez les informations d'identification décryptées pour vous connecter au partage SMB :

smbclient //127.0.0.1/share -U labex%password

Décomposons cette commande :

  • smbclient : L'utilitaire de ligne de commande pour accéder aux ressources SMB/CIFS sur les serveurs.
  • //127.0.0.1/share : Le chemin d'accès au partage SMB. 127.0.0.1 est l'adresse IP de votre serveur SMB local, et share est le nom du répertoire partagé.
  • -U labex%password : Spécifie le nom d'utilisateur (labex) et le mot de passe (password) décryptés par Hydra. Le nom d'utilisateur et le mot de passe sont séparés par un signe %.

Si la connexion est réussie, vous verrez un invite smb:\>, indiquant que vous vous êtes connecté avec succès au partage SMB en utilisant les informations d'identification décryptées :

Try "help" to get a list of possible commands.
smb: \>

Vous pouvez ensuite taper exit et appuyer sur Entrée pour quitter l'invite smbclient :

exit

Cette connexion réussie confirme que :

  1. Hydra a réussi à décrypter les informations d'identification SMB.
  2. La combinaison nom d'utilisateur et mot de passe est valide.
  3. L'attaque a été efficace contre le serveur SMB configuré.
  4. Les informations d'identification décryptées permettent d'accéder au répertoire partagé.

Implications de sécurité :
Cette attaque réussie démontre l'importance de :

  • Utiliser des mots de passe forts et complexes.
  • Implémenter des politiques de verrouillage de compte.
  • Surveiller les attaques par force brute.
  • Désactiver les services et protocoles inutiles.
  • Effectuer des audits et des tests de pénétration de sécurité réguliers.

Résumé

Dans ce laboratoire, vous avez appris à attaquer les services SMB à l'aide d'Hydra, un puissant outil de craquage de mots de passe. Vous avez commencé par configurer un serveur SMB local à l'aide de Samba, ce qui impliquait l'installation des packages nécessaires, la configuration du fichier smb.conf pour créer un répertoire partagé avec la prise en charge de SMBv1 et NTLMv1 pour la compatibilité avec Hydra, et la définition des autorisations appropriées.

Vous avez ensuite préparé des listes d'utilisateurs et de mots de passe (users.txt avec 6 noms d'utilisateur et passwords.txt avec 5 mots de passe) à utiliser dans l'attaque Hydra. Avec le serveur SMB correctement configuré de l'étape 1, l'attaque SMB avec Hydra a réussi à décrypter les informations d'identification SMB en trouvant la combinaison valide du nom d'utilisateur labex et du mot de passe password.

Vous avez confirmé la réussite de l'attaque en utilisant smbclient pour vous connecter au partage SMB avec les informations d'identification découvertes, démontrant que les informations d'identification décryptées permettaient un accès légitime au répertoire partagé.

Ce laboratoire a efficacement démontré :

  1. Les capacités d'Hydra : Comment Hydra peut tester systématiquement les combinaisons nom d'utilisateur et mot de passe contre les services SMB.
  2. Une configuration appropriée : L'importance d'une configuration correcte du service cible pour les tests de sécurité.
  3. La méthodologie d'attaque par force brute : Le processus de préparation des listes de mots et d'exécution d'attaques automatisées.
  4. La vérification de l'attaque : L'importance de confirmer la découverte réussie des informations d'identification.
  5. La configuration de la sécurité : Comment une configuration SMB appropriée empêche l'accès anonyme tout en permettant des tests d'authentification légitimes.

Leçons clés en matière de sécurité :

  • Les mots de passe faibles sont vulnérables aux attaques par force brute.
  • Une configuration appropriée du service est essentielle à la fois pour la sécurité et pour les tests.
  • La désactivation de l'accès anonyme garantit des résultats d'authentification clairs.
  • Les outils automatisés comme Hydra peuvent rapidement tester de nombreuses combinaisons d'informations d'identification.
  • Des tests de sécurité réguliers aident à identifier les vulnérabilités avant les attaquants.

Remarque importante : Cette attaque a été effectuée sur un serveur SMB local configuré spécifiquement à des fins éducatives. Dans les environnements de production, SMBv1 doit être désactivé, des politiques de mots de passe forts doivent être appliquées et une surveillance doit être mise en place pour détecter les attaques par force brute. Effectuer des attaques non autorisées sur des systèmes distants est illégal et contraire à l'éthique.