Attaques par force brute
Attaques par force brute et énumération
Notions théoriques
1. Qu'est-ce qu'une attaque par force brute ?
Une attaque par force brute est une méthode utilisée pour deviner un mot de passe ou une clé de chiffrement en essayant toutes les combinaisons possibles jusqu'à trouver la bonne.
Cette attaque est efficace si le mot de passe est court ou simple.
Par exemple, un mot de passe comme "123456" sera facilement trouvé en quelques secondes.
2. Qu'est-ce que l'énumération ?
L’énumération est une technique qui consiste à collecter des informations sur un système avant une attaque.
Cela peut inclure :
- La découverte d’utilisateurs existants sur un site Web.
- La récupération de noms de fichiers ou de répertoires cachés.
- L’identification des services actifs sur un serveur.
Elle est souvent utilisée avant une attaque par force brute pour réduire le nombre de tentatives nécessaires.
3. Comment se protéger ?
Pour se protéger contre ces attaques, il est recommandé de :
- Utiliser des mots de passe longs et complexes.
- Mettre en place une limitation du nombre de tentatives (ex. : blocage après 5 essais).
- Activer l’authentification à deux facteurs (2FA).
- Configurer des CAPTCHAs pour éviter les attaques automatisées.
Exemple pratique
Nous allons voir comment un attaquant pourrait utiliser un outil pour trouver un mot de passe par force brute et comment il pourrait découvrir des utilisateurs existants sur un site.
1. Attaque par force brute sur un mot de passe
Un attaquant peut utiliser Hydra, un outil permettant de tester des mots de passe sur un service comme SSH.
Commande pour tester des mots de passe sur un serveur SSH :
hydra -l admin -P passwords.txt ssh://192.168.1.10
Explication :
-l admin: Nom d'utilisateur ciblé.-P passwords.txt: Liste de mots de passe à tester.ssh://192.168.1.10: Adresse du serveur cible.
Si le mot de passe est dans la liste, Hydra affichera :
[22][ssh] host: 192.168.1.10 login: admin password: password123
2. Énumération des utilisateurs sur un site Web
Avec WFuzz, un attaquant peut tester des noms d'utilisateur sur un formulaire de connexion.
Commande pour tester des noms d’utilisateur :
wfuzz -c -z file,users.txt --hc 403 http://site.com/login?username=FUZZ
Explication :
-z file,users.txt: Liste de noms d’utilisateur à tester.--hc 403: Ignore les réponses avec un code 403 (accès refusé).FUZZ: RemplaceFUZZpar chaque nom d’utilisateur de la liste.
Si un utilisateur existe, la réponse du serveur sera différente.
4 outils très utilisés en cybersécurité
Voici 4 outils très utilisés en cybersécurité pour tester la robustesse des systèmes et identifier les failles potentielles.
Il est essentiel de les utiliser uniquement dans un cadre légal et éthique.
| Outil | Utilisation principale |
|---|---|
| Hydra | Attaque par force brute sur SSH et autres services |
| WFuzz | Énumération des utilisateurs et fichiers cachés |
| John the Ripper | Crackage de mots de passe chiffrés |
| Gobuster | Découverte de répertoires cachés sur un site Web |
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Présentation des TP
Ces TP pratiques sont conçus pour vous permettre d'expérimenter concrètement les concepts d'attaques par force brute et d'énumération, en vous concentrant sur l'analyse et la résolution de problèmes de sécurité. Ils s'appuient sur un environnement contrôlé et éthique, où vous agissez en tant que "red team" testant vos propres systèmes.
-
Identifier une machine cible : Utilisez une VM Debian (par exemple, Debian 12 ou une version récente) installée spécialement pour ces essais, ou une machine Debian existante que vous utilisez déjà pour des services comme Apache, MariaDB ou d'autres. Si vous n'en avez pas, téléchargez l'ISO Debian depuis le site officiel et installez-la dans VirtualBox ou VMware avec au moins 1 Go de RAM et un disque de 20 Go. Configurez le réseau en mode "host-only" ou "NAT" pour l'isoler. Sur cette VM, installez et activez les services nécessaires selon le TP :
- Pour SSH :
sudo apt update && sudo apt install openssh-server && sudo systemctl enable --now ssh - Pour FTP :
sudo apt update && sudo apt install vsftpd && sudo systemctl enable --now vsftpd(note : configurez/etc/vsftpd.confpour autoriser les utilisateurs locaux si besoin) - Pour le serveur Web (Apache) :
sudo apt update && sudo apt install apache2 && sudo systemctl enable --now apache2(pour les TP web comme WFuzz ou Gobuster) - Vérifiez les ports ouverts avec
sudo netstat -tulnouss -tuln.
- Pour SSH :
-
Créer l'utilisateur de test : Sur la machine cible Debian, créez un utilisateur dédié pour les attaques, nommé
abc123avec le mot de passeabc123. Cela simule un compte faible pour observer les vulnérabilités. Exécutez :sudo adduser abc123- Suivez les invites pour définir le mot de passe
abc123(confirmez-le deux fois). Vous pouvez ignorer les questions optionnelles (nom complet, téléphone, etc.) en appuyant sur Entrée. - Ajoutez l'utilisateur au groupe sudo si nécessaire pour des tests avancés :
sudo usermod -aG sudo abc123. - Vérifiez la création :
id abc123(devrait afficher UID, GID, etc.).
- Suivez les invites pour définir le mot de passe
Important : Ces TP sont réalisés dans un cadre pédagogique et éthique. Il est interdit d’utiliser ces techniques sur des systèmes sans autorisation. Supprimez l'utilisateur abc123 après les TP (sudo deluser abc123) et réinitialisez les mots de passe. Testez uniquement sur vos propres machines.
Conseil : Documentez vos observations (IP de la cible, résultats des scans, temps d'attaque) dans un fichier Markdown pour analyser les patterns de vulnérabilités.
TP avec Medusa
Objectif : Comprendre et expérimenter les attaques par force brute sur des services réseau avec Medusa dans un environnement de test contrôlé.
Matériel requis :
- Une machine virtuelle avec Kali Linux (attaquant)
- Une machine virtuelle Debian configurée comme cible (voir présentation des TP pour l'installation et la configuration des services)
- Un éditeur de texte et un terminal
1. Introduction
1.1. Présentation du TP
Dans ce TP, vous allez apprendre à :
- Effectuer une attaque par force brute sur un service SSH avec Medusa.
- Tester une attaque sur un service FTP pour énumérer des identifiants.
- Analyser les résultats et comprendre les limites de ces attaques.
Présentation de Medusa
Medusa est un outil de brute force en ligne de commande, rapide et modulaire, conçu pour tester la sécurité des services réseau en tentant de deviner des identifiants (noms d'utilisateur et mots de passe).
Similaire à Hydra, Medusa supporte de nombreux protocoles (SSH, FTP, HTTP, Telnet, etc.) et est particulièrement apprécié pour sa vitesse et sa capacité à gérer plusieurs cibles simultanément. Il est couramment utilisé en pentesting pour évaluer la robustesse des authentifications distantes.
Principales commandes Medusa
1. Attaque de base sur un service (ex: SSH)
medusa -h 192.168.1.100 -u abc123 -P /usr/share/wordlists/rockyou.txt -M ssh
-h: hôte cible-u: nom d'utilisateur à tester-P: fichier contenant les mots de passe à tester-M: module/protocole ciblé (ex: ssh)-n: numéro du port (ex: 2222)
2. Utiliser une liste d'utilisateurs et de mots de passe
medusa -H hosts.txt -U users.txt -P passwords.txt -M ftp
-H: fichier contenant les hôtes cibles-U: liste d'utilisateurs-P: liste de mots de passe-M: module/protocole (ex: ftp)
3. Spécifier le nombre de threads (accélère l'attaque)
medusa -h 192.168.1.100 -U users.txt -P passwords.txt -M ssh -t 10
-t 10: utilise 10 threads simultanés
4. Attaque sur un formulaire HTTP (ex: login Web)
medusa -h 192.168.1.100 -U users.txt -P passwords.txt -M http -m DIR:/login.php -T
-M http: module HTTP-m DIR:/login.php: chemin du formulaire-T: utilise les threads pour accélérer
5. Afficher les modules disponibles (protocoles supportés)
medusa -M
6. Afficher l’aide complète
medusa -d
Exemple simple
medusa -h 192.168.1.100 -u abc123 -P rockyou.txt -M ssh -n 2222
Medusa tente de se connecter en SSH à la machine 192.168.1.100 avec l’utilisateur "abc123" et les mots de passe du fichier rockyou.txt sur le port 2222.
2. Préparation de l’environnement
2.1. Lancer les machines virtuelles
- Démarrer Kali Linux (machine attaquante).
- Démarrer la VM Debian (machine cible, avec SSH et FTP activés comme indiqué dans la présentation des TP).
- Identifier l’adresse IP de la cible en exécutant la commande suivante sur la VM Debian :
Notez l’adresse IP affichée (ex:
ip addr show eth0192.168.1.100).
Une solution
Vous devez être connecté pour voir le contenu.
3. Installation et configuration de Medusa
3.1. Vérifier la présence de Medusa
- Sur Kali Linux, ouvrez un terminal et exécutez :
medusa -d - Si l'aide s’affiche, Medusa est installé. Sinon, installez-le avec :
sudo apt update && sudo apt install medusa
3.2. Préparer les listes de mots
- Vérifiez la disponibilité d’une wordlist par défaut :
ls /usr/share/wordlists/rockyou.txt - Si le fichier n'existe pas, décompressez-le (il est souvent compressé) :
sudo gunzip /usr/share/wordlists/rockyou.txt.gz
Une solution
Vous devez être connecté pour voir le contenu.
4. Attaque par force brute sur SSH avec Medusa
4.1. Présentation de Medusa
Medusa est un outil modulaire pour des attaques par force brute sur des protocoles réseau, optimisé pour la vitesse et la parallélisation.
4.2. Objectif
Nous allons essayer de trouver un mot de passe SSH en testant une liste de mots de passe courants sur l'utilisateur abc123.
4.3. Étapes
Étape 1 : Vérifier que SSH est actif sur la cible
Sur Kali Linux, exécutez :
nmap -p 22 192.168.1.100
Si le port 22/tcp open apparaît, SSH est activé.
Étape 2 : Lancer une attaque par force brute avec Medusa
Exécutez la commande suivante :
medusa -h 192.168.1.100 -u abc123 -P /usr/share/wordlists/rockyou.txt -M ssh
Explication des options :
-h 192.168.1.100: Hôte cible.-u abc123: Nom d’utilisateur ciblé.-P /usr/share/wordlists/rockyou.txt: Liste de mots de passe à tester.-M ssh: Module SSH.
Si vous avez besoin de préciser un numéro de port (par exemple 2222), il suffit d'ajouter l'option :
-n: numéro du port (ex: 2222)
et d'exécuter la commande suivante :
medusa -h 192.168.1.100 -u abc123 -P /usr/share/wordlists/rockyou.txt -M ssh -n 2222
Si c'est trop long, vous pouvez ajouter l'option -t 16 pour tester 16 mots de passe silmutanément (au lieu de 4 par défaut).
Étape 3 : Analyser les résultats
Medusa affiche les succès comme :
ACCOUNT FOUND: [ssh] Host: 192.168.1.100 User: abc123 Password: abc123 [1]
Testez la connexion :
ssh abc123@192.168.1.100
Une solution
Vous devez être connecté pour voir le contenu.
5. Attaque par force brute sur FTP avec Medusa
5.1. Objectif
Tester une attaque sur le service FTP pour identifier des identifiants valides.
5.2. Étapes
Étape 1 : Vérifier que FTP est actif
nmap -p 21 192.168.1.100
Cherchez 21/tcp open ftp.
Étape 2 : Lancer l'attaque
medusa -h 192.168.1.100 -U users.txt -P /usr/share/wordlists/rockyou.txt -M ftp
Créez users.txt si nécessaire :
echo -e "abc123\nanonymous\nftp" > users.txt
Étape 3 : Analyser les résultats
Recherchez les comptes trouvés et testez avec :
ftp 192.168.1.100
Une solution
Vous devez être connecté pour voir le contenu.
6. Questions de réflexion
- Pourquoi Medusa est-il plus rapide que d'autres outils comme Hydra dans certains scénarios ?
- Quels sont les risques d'une attaque par force brute sur un service comme FTP ?
- Comment détecter une tentative d'attaque par force brute dans les logs d'un serveur ?
- Quelles sont les différences entre les modules de Medusa et comment choisir le bon ?
- Pourquoi est-il crucial de combiner la force brute avec d'autres techniques d'énumération ?
7. Conclusion et bonnes pratiques
- Les attaques par force brute avec Medusa mettent en évidence les faiblesses des mots de passe faibles et des services exposés.
- Pour contrer ces attaques : implémentez des verrouillages de compte, utilisez des mots de passe forts, activez l'authentification à deux facteurs (2FA), et surveillez les connexions échouées.
- Dans un cadre professionnel, testez régulièrement vos systèmes avec des outils comme Medusa pour renforcer la sécurité.
8. Pour aller plus loin
- Testez Medusa sur HTTP avec un formulaire de login (ex: installez DVWA sur la VM Debian).
- Comparez les performances de Medusa et Hydra sur la même cible en mesurant le temps d'exécution.
- Expérimentez avec des listes d'utilisateurs personnalisées basées sur une énumération préalable (ex: via Gobuster).
- Configurez Fail2Ban sur la VM Debian pour observer le blocage automatique des attaques.
TP avec John the Ripper
Objectif : Comprendre et expérimenter l'utilisation de John the Ripper pour cracker des mots de passe chiffrés, en explorant les concepts d'attaques par dictionnaire et par force brute abordés dans la séance de cours sur les attaques par force brute et l'énumération.
Matériel requis
- Une machine virtuelle avec Kali Linux (machine attaquante)
- Un éditeur de texte (comme nano ou vim) et un terminal
- Un accès à Internet pour télécharger des ressources publiques
1. Introduction
1.1. Présentation du TP
Dans ce TP, vous allez apprendre à :
- Utiliser John the Ripper pour cracker des hashs de mots de passe.
- Comparer les approches par dictionnaire et par force brute.
- Analyser les résultats pour en tirer des enseignements sur la sécurité des mots de passe.
Important : Ce TP est réalisé dans un cadre pédagogique et éthique. L'utilisation de ces techniques sur des systèmes ou données sans autorisation explicite est strictement interdite.
Présentation de John the Ripper
John the Ripper (souvent abrégé en John) est un outil open-source de craquage de mots de passe, principalement utilisé pour tester la robustesse des mots de passe :
- Casser des mots de passe hachés
- Tester la sécurité des mots de passe
- Réaliser des attaques par dictionnaire, brute force ou règles personnalisées
Principales commandes de John the Ripper
1. Détection automatique du type de hash
john --format=auto hash.txt
John essaie de détecter automatiquement le type de hash contenu dans le fichier hash.txt.
2. Lancer une attaque simple (mode par défaut)
john hash.txt
John utilise son mode par défaut (souvent une attaque par dictionnaire avec des règles) pour tenter de casser les mots de passe.
3. Utiliser un fichier de dictionnaire (wordlist)
john --wordlist=rockyou.txt hash.txt
Utilise le fichier rockyou.txt pour effectuer une attaque par dictionnaire.
4. Spécifier un format de hash
john --format=raw-md5 hash.txt
Permet de forcer le format du hash s’il n’est pas détecté automatiquement.
5. Voir les mots de passe trouvés
john --show hash.txt
Affiche les mots de passe déjà craqués et stockés dans le fichier .pot de John.
6. Reprendre une session interrompue
john --restore
Reprend une session de craquage précédemment interrompue.
7. Lister les formats de hash supportés
john --list=formats
Affiche tous les formats de hachage que John peut gérer.
Outils associés
unshadow: combine/etc/passwdet/etc/shadowpour créer un fichier exploitable par John.zip2john,rar2john,pdf2john, etc. : extraient les hashs de fichiers protégés pour les casser avec John.
Exemple simple d'utilisation
unshadow passwd.txt shadow.txt > hash.txt
john --wordlist=rockyou.txt hash.txt
john --show hash.txt
2. Préparation de l’environnement
2.1. Démarrer Kali Linux
Lancez votre machine virtuelle Kali Linux et ouvrez un terminal pour exécuter les commandes nécessaires.
2.2. Télécharger une liste de mots pour le cracking
Vous aurez besoin d'une liste de mots (wordlist) pour tester les attaques par dictionnaire. Téléchargez une wordlist publique depuis un dépôt accessible.
Commande à exécuter dans le terminal :
wget https://github.com/danielmiessler/SecLists/raw/master/Passwords/Common-Credentials/10-million-password-list-top-10000.txt -O wordlist.txt
Cette commande télécharge une liste de 10 000 mots de passe courants et la sauvegarde sous le nom wordlist.txt dans le répertoire courant.
Une solution
Vous devez être connecté pour voir le contenu.
3. Création d’un fichier de hashs à cracker
3.1. Générer des hashs de mots de passe
Pour ce TP, vous allez créer un fichier contenant des hashs de mots de passe au format MD5 brut, simulant une fuite de données. Exécutez les commandes suivantes dans le terminal pour générer un fichier hashes.txt :
echo -n "secret" | md5sum | awk '{print "user1:" $1}' > hashes.txt
echo -n "admin123" | md5sum | awk '{print "user2:" $1}' >> hashes.txt
echo -n "welcome" | md5sum | awk '{print "user3:" $1}' >> hashes.txt
Explication :
echo -nsupprime le saut de ligne pour éviter de fausser le hash.md5sumcalcule le hash MD5 du mot de passe.awk '{print "userX:" $1}'formate la sortie avec un nom d'utilisateur suivi du hash.
Une solution
Vous devez être connecté pour voir le contenu.
4. Cracking des hashs avec John the Ripper
4.1. Attaque par dictionnaire
Utilisez John the Ripper pour tenter de cracker les hashs en utilisant la wordlist téléchargée.
Commande à exécuter :
john --wordlist=wordlist.txt --format=raw-md5 hashes.txt
Explication :
--wordlist=wordlist.txtindique la liste de mots à tester.--format=raw-md5spécifie que les hashs sont au format MD5 brut.hashes.txtest le fichier cible contenant les hashs.
Une solution
Vous devez être connecté pour voir le contenu.
4.2. Attaque par force brute
Si certains mots de passe ne sont pas dans la wordlist, tentez une attaque par force brute.
Commande à exécuter :
john --format=raw-md5 hashes.txt
Explication :
- Sans
--wordlist, John passe en mode force brute, essayant toutes les combinaisons possibles. - Cette méthode est plus lente mais exhaustive.
Une solution
Vous devez être connecté pour voir le contenu.
4.3. Analyse des résultats
Affichez les mots de passe crackés pour confirmer les résultats.
Commande à exécuter :
john --show hashes.txt
Une solution
Vous devez être connecté pour voir le contenu.
5. Questions de réflexion
- Pourquoi les mots de passe courts ou courants sont-ils vulnérables aux attaques par dictionnaire ?
- Quelle est la principale différence entre une attaque par dictionnaire et une attaque par force brute en termes de temps et d’efficacité ?
- Comment la longueur et la complexité d’un mot de passe influencent-elles la durée du cracking ?
- Quels mécanismes pourraient empêcher ou ralentir le cracking des hashs avec John the Ripper ?
- Pourquoi est-il dangereux de stocker des hashs sans protection supplémentaire (comme un sel) ?
6. Conclusion et bonnes pratiques
- Ce TP démontre la puissance de John the Ripper pour cracker des mots de passe chiffrés, soulignant la nécessité de choisir des mots de passe robustes.
- Les bonnes pratiques incluent l’utilisation de mots de passe longs (au moins 12 caractères), combinant lettres majuscules, minuscules, chiffres et symboles, ainsi que l’activation de l’authentification à deux facteurs.
- La protection des fichiers de hashs avec des sels et des algorithmes de hachage modernes (comme bcrypt) est essentielle pour réduire les risques.
7. Pour aller plus loin
- Testez John the Ripper avec d’autres formats de hashs (SHA-1, SHA-256) en adaptant
--format. - Expérimentez avec des wordlists plus grandes ou personnalisées.
- Explorez l’outil Hashcat pour comparer ses performances avec John the Ripper.
- Simulez une attaque sur un fichier de hashs réels (générés éthiquement) pour évaluer leur robustesse.
- Recherchez des techniques avancées de cracking, comme les attaques par rainbow tables ou les attaques par dictionnaire optimisées.
TP avec Hydra et WFuzz
Objectif : Comprendre et expérimenter les attaques par force brute et énumération sur un environnement de test.
Matériel requis :
- Une machine virtuelle avec Kali Linux (attaquant)
- Une machine virtuelle Debian configurée comme cible (avec SSH et Apache activés, voir présentation des TP)
- Un éditeur de texte et un terminal
1. Introduction
1.1. Présentation du TP
Dans ce TP, vous allez apprendre à :
- Effectuer une attaque par force brute sur un service SSH avec Hydra.
- Réaliser une énumération d’utilisateurs sur un site Web avec WFuzz.
- Comprendre les mécanismes de protection contre ces attaques.
Important : Ce TP est réalisé dans un cadre pédagogique et éthique. Il est interdit d’utiliser ces techniques sur des systèmes sans autorisation.
Présentation d'Hydra
Hydra (ou THC-Hydra) est un outil de brute force en ligne, utilisé pour tester la sécurité de services réseau en tentant de deviner des identifiants (nom d'utilisateur et mot de passe).
Contrairement à John the Ripper qui travaille principalement sur des hashs locaux, Hydra attaque des services distants (SSH, FTP, HTTP, etc.).
Il est largement utilisé en pentesting pour évaluer la robustesse des mécanismes d'authentification sur des protocoles variés.
Principales commandes Hydra
1. Attaque de base sur un service (ex: SSH)
hydra -l root -P /chemin/vers/wordlist.txt ssh://192.168.1.10
-l root: nom d'utilisateur à tester-P: fichier contenant les mots de passe à testerssh://: protocole ciblé
2. Utiliser une liste d'utilisateurs et de mots de passe
hydra -L users.txt -P passwords.txt ftp://192.168.1.10
-L: liste d'utilisateurs-P: liste de mots de passeftp://: protocole ciblé