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 eth0
192.168.1.100).
📌 Une solution
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
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