L’attaque par force brute est l’une des méthodes d’intrusion les plus simples, mais aussi les plus redoutables. Pourquoi ? Parce qu’elle ne demande que peu d'expérience pour un cybercriminel, est automatisée et exploite avant tout la faiblesse humaine. Les mots de passe restent trop souvent prévisibles, offrant une porte d’entrée idéale.
Mais son impact ne s’arrête pas au simple vol d’identifiants. Les attaques par bruteforce servent souvent de levier pour d’autres attaques, exploitant des failles de sécurité insuffisamment corrigées. C’est pourquoi elle reste un outil incontournable, aussi bien pour les hackers malveillants que pour les pentesters cherchant à identifier les vulnérabilités d’un système.
Son fonctionnement : tester un maximum de combinaisons jusqu’à tomber sur la bonne. Ces attaques sont automatisées et deviennent encore plus rapides et efficaces. Malgré son ancienneté, cette méthode reste un pilier des cyberattaques visant les systèmes et réseaux.
Cet article est une introduction aux attaques par force brute (bruteforce). Bien que certaines techniques présentées ici s'appliquent aussi au crackage de mots de passe chiffrés ou d'autres attaques, cet article a pour vocation de se concentrer essentiellement sur les techniques d'attaque de bruteforce contre des services exposés sur internet.
Vous retrouverez en premiere partie un rappel des concepts de base des attaques par bruteforce, puis une présentation des outils couramment utilisés, des correctifs et protections existantes et enfin des méthodes de contournement de celles-ci. Pour terminer, nous partagerons notre expérience dans l'élaboration de ces attaques.
Les attaques par force brute
Les attaques par force brute constituent une méthode courante dans le paysage des cyberattaques. Elles consistent à essayer un grand nombre de combinaisons possibles pour déverrouiller un système de sécurité en tombant sur une combinaison valide. La même méthode est souvent utilisée pour casser des mots de passe hachés durant des attaques par force brute hors ligne. Cette technique peut se révéler efficace, notamment sur des systèmes mal protégés ou des mots de passe faibles.
Tester toutes les combinaisons de caractères peut cependant s'avérer inefficace, car le nombre de combinaisons à tester est exponentiel par rapport aux nombres de caractères à tester.
Une attaque sur 6 caractères alphanumériques minuscules (soit dans notre 36 caractères) permet 36⁶=2.176.782.336 combinaisons possibles. L’ajout d’un seul seul caractère (donc 7) fait monter le nombre de combinaisons à 36⁷=78.364.164.096, soit 36 fois plus. Quelques caractères de plus suffisent à transformer une attaque de quelques secondes en une attaque de plusieurs décennies. Ce nombre peut aussi dépendre du nombre de caractères autorisés.
C'est pourquoi il existe plusieurs techniques bruteforce, pour réduire le nombre de combinaisons à tester dans l’optique d’avoir une attaque permettant d’aboutir dans un temps raisonnable.
L'attaque par dictionnaire :
Plutôt que de tester toutes les combinaisons possibles de caractères, l’attaque par dictionnaire se base sur des listes prédéfinies de mots communs et de mots de passe souvent utilisés. L'objectif est de tester tous les mots de passe de la liste pour chaque cible. Les attaquants misent sur le fait que beaucoup d'utilisateurs choisissent des mots de passe faibles ou faciles à deviner, comme des mots du dictionnaire, des noms ou des suites de chiffres.
De nombreux dictionnaires sont téléchargeables. Nous recommandons d'ailleurs la collection SecLists qui propose plusieurs dictionnaires très complets.
Pour des besoins plus spécifiques il est possible de créer ses propres listes de mots de passe avec différents outils. On retrouve notamment Cewl, Crunch, Bopscrk, John the Ripper...
Le password spraying :
Contrairement à l'attaque par dictionnaire qui cible un seul compte à la fois, le password spraying tente des mots de passe courants sur de nombreux comptes différents, avec l’espoir qu’au moins l’un d’entre eux utilise un mot de passe faible. Cette technique est notamment utilisée contre des systèmes avec une protection contre les tentatives répétées sur un seul compte.
Attention : Il est recommandé de d’abord vérifier la politique de mot de passe pour éviter le blocage des comptes.
D'expérience, nous avons constaté que de nombreuses entreprises ont tendance à utiliser des mots de passe facilement prédictibles. Ces derniers sont généralement composés de la sorte :
nom ou acronyme de l’entreprise chiffre prédictible (ex : 123) ou date ou numéro de département de l’entreprise parfois un caractère spécial (le plus souvent "?" ou "!")
En suivant cette logique cela peut donner pour l'entreprise “algosecure” le dictionnaire suivant :
Algosecure2024!
Algosecure69?
Algosecure123+
Algo123!
…
Un dictionnaire de mot de passe disposant de ces caractéristiques peut facilement être créé avec les "rules".
Par exemple, la commande ci-dessous permet de créer des mots de passe en utilisant la règle “Wordlist” de John the Ripper.
john --wordlist=pass --rules=Jum --stdout
…
algosecy
algosec123
algosecman
algosecdog
thealgosecure
magosecure
alsecure
algs
algos1
algosecu
algosecalgosec
…
La fuite de mot de passe :
Cette approche repose sur l'exploitation de bases de données de mots de passe compromis, souvent issues de violations de données. Les attaquants récupèrent ces informations, souvent disponibles sur le dark web et tentent de les utiliser sur d'autres services. En effet, il arrive souvent que les utilisateurs utilisent le même mot de passe sur plusieurs plateformes. De nombreux outils permettent de savoir si une fuite de mot de passe lié à un compte existe.
La plateforme https://haveibeenpwned.com permet aux particuliers de savoir si leurs identifiants sont présents dans une fuite ou plusieurs fuites de données.
Pour les professionnels nous proposons notre outil AlgoLightHouse qui permet de récupérer les mots de passe en question à partir de plusieurs bases privées ou d'informations présentes sur des groupes d'échanges sur des forums de discussions.

Quelques outils
Lorsqu'il s'agit de mettre en œuvre des attaques par force brute, plusieurs outils sont couramment utilisés par les professionnels de la cybersécurité. Voici un aperçu succinct de trois options populaires : Burp Suite, Hydra et des scripts personnalisés.
Pour prendre un exemple prenons le site suivant :
Ici l'attaquant souhaite se connecter au compte de target@algosecure.fr
La requête associée à la tentative de connection et la suivante :
curl -d "username=target%40algosecure.fr&password=*****" -X POST https://algosecure.fr/login.php
Burp Suite
Cet outil est principalement utilisé pour l'audit de sécurité des applications web. Il dispose de nombreuses fonctionnalités, dont un module pour les attaques par force brute. Grâce à son intruder, Burp permet d’automatiser le processus en testant plusieurs combinaisons de mots de passe ou de requêtes sur des formulaires de connexion ou autres points d'entrée sensibles d'une application web.
L’interface proposée par Burp propose une solution rapide et intuitive pour les applications web. Une fois la requête interceptée, il suffit d'utiliser le module "Intruder", de définir la zone de la requête qui sera substituée par les différents mots de passe à tester et de sélectionner le fichier qui sera lu à la volée.
Une fois l’attaque lancée, il suffit de chercher la requête dont le résultat se démarque des requêtes erronées :
Ici le statut renvoyé par la requête valide est différent.
Les options de cet outil sont multiples et permettent d’effectuer des filtres très poussés, de modifier les données, contourner certains mécanismes anti-bruteforce tel que les tokens anti-CSRF et de suivre les éventuelles redirections.
Hydra
Hydra est un outil en ligne de commande extrêmement rapide et polyvalent pour les attaques par force brute sur divers protocoles, tels que SSH, FTP, HTTP, et bien d'autres. Il est largement utilisé pour tester les authentifications réseau, offrant une grande flexibilité et supportant plusieurs services simultanément. Hydra peut également utiliser des listes de mots de passe, comme celles disponibles dans SecLists, pour effectuer des tentatives d'authentification massives.
Pour reprendre l’exemple ci-dessus, il suffit d'exécuter la commande suivante :
hydra -l 'target@algosecure.fr' -P dictionnaire.txt -f login.php http-post-form "/:username=^USER^&password=^PASS^:F=invalide"
Cette dernière reprend le dictionnaire.txt et permet de mettre en évidence le mot de passe qui a reçu une réponse serveur ne contenant pas le mot “invalide”.
Pour finir cet outil présente l’avantage d’être compatible avec de nombreux protocoles autres que http.
Scripts personnalisés
Pour les scénarios où des outils préexistants ne répondent pas aux besoins spécifiques, écrire des scripts à la volée peut s’avérer utile. Avec des bibliothèques comme requêtes sur python pour interagir avec des API ou des formulaires web, ou paramiko pour SSH, les scripts personnalisés permettent d’adapter précisément l’attaque à la cible, en automatisant des attaques sur mesure avec un contrôle granulaire.
Le script ci-dessous est un exemple de script python qui permet de tester les combinaisons de mots de passe.
import requests
target_url = 'https://algosecure.fr/login.php'
dictionary_path = 'dictionnaire.txt'
try:
# Ouvrir le fichier de dictionnaire
with open(dictionary_path, 'r') as file:
words = file.readlines()
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# Pour chaque mot dans le dictionnaire
for word in words:
word = word.strip()
data = f"username=target%40algosecure.fr&password={word}"
response = requests.post(target_url, data=data, headers=headers)
# s’il reçoit un réponse positive
if response.status_code == 200:
print(f"mot de passe trouvé: {word}")
break
except FileNotFoundError:
print(f"Dictionary file not found.")
except Exception as e:
print(f"An error occurred: {e}")
Cela permet d’obtenir le résultat suivant :
Les scripts, qu’ils soient en python ou dans un autre langage, sont importants car ils nous permettent d'effectuer des attaques par force brute lorsque nous nous retrouvons dans un environnement restreint. Par exemple, il peut être possible de devoir faire une tentative de bruteforce vers une application interne de l’entreprise ciblé, à partir d’une machine compromise.
Quelques techniques de remédiation
Pour se protéger contre les attaques par force brute, plusieurs techniques de remédiation peuvent être mises en place. L'objectif est de limiter les tentatives répétées d'accès non autorisé, tout en minimisant les impacts sur les utilisateurs légitimes. Voici trois méthodes couramment utilisées : le blocage d'IP, le blocage temporaire des comptes et l’utilisation d’une authentification multi-facteurs.
Blocage d'IP
Cette méthode consiste à bloquer automatiquement l’adresse IP de l'attaquant après un certain nombre de tentatives infructueuses. Elle présente l’avantage d'être relativement facile à mettre en place, souvent sans nécessiter de modifications au niveau applicatif. Le blocage peut être effectué au niveau du serveur ou du pare-feu, offrant une protection rapide contre les attaques par force brute. Cependant, cette méthode peut être contournée si l'attaquant utilise plusieurs adresses IP ou un botnet.
Blocage temporaire des comptes
Cette méthode consiste à désactiver temporairement un compte après plusieurs tentatives de connexion échouées. Elle offre un niveau de sécurité plus élevé, car elle empêche l'attaquant de poursuivre l'attaque sans pénaliser les utilisateurs légitimes à long terme. Toutefois, il est essentiel de configurer correctement cette mesure pour éviter de divulguer des informations sur l'existence des comptes. En effet, le système doit réagir de la même manière, que le compte existe ou non, afin de ne pas révéler aux attaquants la validité d'un identifiant. De plus, la durée du blocage doit être suffisamment courte pour éviter de nuire à la productivité des utilisateurs, tout en dissuadant les attaques par force brute.
En combinant ces deux méthodes, les organisations peuvent renforcer significativement leur protection contre les attaques par force brute, tout en maintenant un équilibre entre sécurité et accessibilité.
L'authentification multi-facteur (MFA)
L'authentification multi-facteurs est l'une des solutions les plus efficaces contre les attaques par force brute. Elle exige que l'utilisateur fournisse, en plus du mot de passe, une seconde preuve d'identité. En effet, ce dernier peut justifier de son identité par trois moyen. Ce qu'il possède (par exemple son numéro de téléphone), ce qu'il connaît (son mot de passe) et ce qu'il est (une empreinte biométrique). L'utilisation de la MFA consiste à utiliser plusieurs facteurs tel que le mot de passe et un code reçu par SMS qui justifie que ce dernier est en possession de son numéro. Cela complique considérablement les tentatives d'accès non autorisé, car même si un mot de passe est compromis, l'attaquant devra encore obtenir ce second facteur pour réussir l'authentification.
Cependant, il existe des techniques de contournement de la MFA, telles que le phishing ou l'ingénierie sociale, où les utilisateurs sont incités à valider la MFA (MFA fatigue) ou fournir leur second facteur directement à l'attaquant. Il est aussi possible de contourner ce mécanisme via des attaques sur des services qui n'implémentent pas correctement cette protection (code prédictible ou bruteforçable). Il est donc important de combiner la MFA avec d'autres mesures de sécurité pour assurer une protection maximale.
Quelques techniques de contournement
Bien que la mise en place de mécanismes des protections cités précédemment permette de limiter la majorité des attaques certains attaquants développent des méthodes pour contourner ces restrictions si ces dernières ne sont pas correctement implémentés.
Utilisation de botnets ou d'IP rotating table
Pour contourner les restrictions basées sur les adresses IP, les attaquants peuvent utiliser des botnets, qui permettent de distribuer les tentatives d'attaque sur un réseau de machines infectées disposant chacune d'une adresse IP différente. Une autre approche consiste à utiliser une IP rotating table, un pool d'adresses IP que l'attaquant peut facilement obtenir via des services tels qu'AWS ou en créant plusieurs instances sur des plateformes comme Scaleway. Cela permet de changer d'IP à chaque tentative, rendant inefficaces les blocages d'IP basés sur un nombre limité de tentatives depuis une seule adresse.
Une extension est d'ailleurs présente sur l'outil Burp : https://github.com/portswigger/ip-rotate. Cette dernière permet de s'interfacer facilement avec une API tel que celle proposée par AWS.
Exploitation de l'en-tête X-Forwarded-For
L'en-tête HTTP X-Forwarded-For est principalement utilisé dans les infrastructures réseau pour informer les serveurs de la véritable adresse IP du client lorsque celui-ci passe par un proxy ou un serveur de load balancing (répartition de charge). Cet en-tête est ajouté par le proxy ou le load balancer pour indiquer au serveur en aval quelle est l’adresse IP d'origine de l'utilisateur, car celle-ci serait autrement masquée.
Le schéma ci-dessous montre l’envoie d’une requête en passant par plusieurs proxy sans puis avec l’entête “X-Forwarded-For”.
Dans le cas d'un blocage IP, certains systèmes doivent donc s'appuyer sur l'adresse IP d'origine pour détecter et bloquer les attaquants. Cependant, si la gestion de l'en-tête X-Forwarded-For est mal configurée, un attaquant pourrait exploiter cette faiblesse en injectant des adresses IP falsifiées dans cet en-tête.
En modifiant cet en-tête, l'attaquant peut tromper le serveur en lui faisant croire que chaque requête provient d'une IP différente, contournant ainsi les restrictions de blocage basées sur une seule adresse IP. Cela est particulièrement efficace si le serveur accepte l’en-tête sans vérifier sa légitimité ou sans appliquer de filtrage approprié.
Ce type d’attaque fonctionne surtout lorsque le serveur ou le système d’authentification ne valide pas correctement l’en-tête X-Forwarded-For ou fait confiance de manière aveugle à la valeur fournie. C’est pourquoi il est essentiel que les systèmes de sécurité ne se basent pas uniquement sur cet en-tête sans appliquer des contrôles supplémentaires. Pour mitiger ce risque, les serveurs doivent s'assurer que seules des sources fiables ajoutent cet en-tête (comme les proxys ou load balancers internes), et que tout ajout de cette entête d'origine externe soit correctement filtré.
Connexion avec un identifiant valide à intervalles réguliers
Une autre technique de contournement consiste à utiliser un identifiant valide après plusieurs tentatives infructueuses. Cela permet de réinitialiser ou de contourner les mécanismes de protection qui bloquent après un certain nombre d'échecs. En se connectant avec des informations correctes toutes les "x" requêtes, l'attaquant peut éviter d'atteindre le seuil de blocage, que ce soit au niveau de l'IP ou du compte. Par exemple, un seuil de blocage à trois tentatives infructueuses peut être contourné comme ci-dessous.
Cette technique nécessite cependant un identifiant valide sur l’environnement cible. Elle est particulièrement efficace contre des systèmes mal configurés, où le blocage temporaire des comptes ou l’interdiction d’accès basée sur l’IP n’est pas appliqué uniformément ou est trop indulgent.
Que faire alors ?
Comme nous pouvons le constater, les solutions comme le blocage d’IP, la désactivation temporaire des comptes ou l’authentification multi-facteurs (MFA) ne suffisent pas toujours : les attaquants peuvent contourner ces mesures en utilisant des techniques comme les botnets ou l'ingénierie sociale. Il est donc important de ne pas se limiter à un seul mécanisme mais de renforcer la sécurité à tous les niveaux. En combinant plusieurs défenses et en pensant aux moyens de contournement possibles. L'association de plusieurs mécanismes réduit considérablement les risques de voir une faille exploitée.
À propos : Le blog d'AlgoSecure est un espace sur lequel notre équipe toute entière peut s'exprimer. Notre personnel marketing et commercial vous donne des informations sur la vie et l'évolution de notre société spécialisée en sécurité sur Lyon. Nos consultants techniques, entre deux tests d'intrusion ou analyses de risque, vous donnent leur avis ainsi que des détails techniques sur l'exploitation d'une faille de sécurité informatique. Ils vous expliqueront également comment sécuriser votre système d'informations ou vos usages informatiques particuliers, avec autant de méthodologie et de pédagogie que possible. Vous souhaitez retrouver sur ce blog des informations spécifiques sur certains sujets techniques ? N'hésitez pas à nous en faire part via notre formulaire de contact, nous lirons vos idées avec attention. Laissez-vous guider par nos rédacteurs : Alexandre, Amine, Anas, Arnaud, Benjamin, Damien, Enzo, Eugénie, Fabien, Françoise, Gilles, Henri, Jean-Charles, Jean-Philippe, Jonathan, Joël, Joëlie, Julien, Jéromine, Lucas, Ludovic, Lyse, Nancy, Natacha, Nicolas, Pierre, PierreG, Quentin, Sébastien, Tristan, Yann, et bonne visite !