contributeur(s): KirstenS, Paul McMillan, Raesene, Adedov, Dinis.Cruz, JoE, Daniel Waller ,kingthorin
blocage des attaques par force Brute
Une menace commune aux développeurs web est une attaque par devinette de mot de passe connue sous le nom d’attaque par force brute.Une attaque par force brute est une tentative de découvrir un mot de passe en essayant systématiquement toutes les combinaisons possibles de lettres, de chiffres et de symboles jusqu’à ce que vous découvriez la combinaison correcte qui fonctionne.,Si votre site Web nécessite une authentification de l’utilisateur, vous êtes une bonne cible pour une attaque par force brute.
un attaquant peut toujours découvrir un mot de passe grâce à une attaque par force brute, mais l’inconvénient est qu’il pourrait prendre des années pour le trouver.Selon la longueur et la complexité du mot de passe, il pourrait y avoir des milliards de combinaisons possibles.
pour accélérer un peu les choses, une attaque par force brute pourrait commencer avec des mots de dictionnaire ou des mots de dictionnaire légèrement modifiés car la plupart des gens les utiliseront plutôt qu’un mot de passe complètement aléatoire., Ces attaques sont appelées attaques par dictionnaire ou attaques hybrides par force brute.Les attaques par force brute mettent les comptes d’utilisateurs en danger et inondent votre site de trafic inutile.
Les pirates informatiques lancent des attaques par force brute en utilisant des outils largement disponibles qui utilisent des listes de mots et des jeux de règles intelligents pour deviner intelligemment et automatiquement les mots de passe des utilisateurs. Bien que de telles attaques soient faciles à détecter, elles ne sont pas si faciles à prévenir.
par exemple, de nombreux outils de force brute HTTP peuvent relayer les requêtes via une liste de serveurs proxy ouverts., Étant donné que chaque requête semble provenir d’une adresse IP différente, vous ne pouvez pas bloquer ces attaques simplement en bloquant L’adresse IP address.To compliquez encore les choses, certains outils essaient un nom d’utilisateur et un mot de passe différents à chaque tentative, de sorte que vous ne pouvez pas verrouiller un seul compte pour les tentatives de mot de passe qui ont échoué.
verrouillage des comptes
la façon la plus évidente de bloquer les attaques par force brute est de simplement verrouiller les comptes après un nombre défini de tentatives de mot de passe incorrectes.,Les verrouillages de Compte peuvent durer une durée spécifique, telle qu’une heure, ou les comptes peuvent rester verrouillés jusqu’à ce qu’ils soient déverrouillés manuellement par un administrateur.
cependant, le verrouillage du compte n’est pas toujours la meilleure solution, car quelqu’un pourrait facilement abuser de la mesure de sécurité et verrouiller des centaines d’utilisateurs accounts.In fait, certains sites Web subissent tellement d’attaques qu’ils sont incapables d’appliquer une politique de verrouillage parce qu’ils seraient constamment déverrouiller les comptes des clients.,
Les problèmes de verrouillage des comptes sont les suivants:
- un attaquant peut provoquer un déni de service (DoS) en verrouillant un grand nombre de comptes.
- comme vous ne pouvez pas verrouiller un compte qui n’existe pas, seuls les noms de Compte valides seront verrouillés. Un attaquant pourrait utiliser ce fait pour récolter des noms d’utilisateur à partir du site, en fonction des réponses d’erreur.
- un attaquant peut provoquer un détournement en verrouillant de nombreux comptes et en inondant le service d’assistance d’appels d’assistance.,
- un attaquant peut verrouiller en permanence le même compte, même quelques secondes après qu’un administrateur l’a déverrouillé, désactivant ainsi le compte.
- Le verrouillage du compte est inefficace contre les attaques lentes qui n’essaient que quelques mots de passe toutes les heures.
- Le verrouillage du compte est inefficace contre les attaques qui essaient un mot de passe contre une grande liste de noms d’utilisateur.
- Le verrouillage du compte est inefficace si l’attaquant utilise une liste combinée nom d’utilisateur / mot de passe et devine correctement lors des deux premières tentatives.,
- les comptes puissants tels que les comptes administrateur contournent souvent la Politique de verrouillage, mais ce sont les comptes les plus souhaitables à attaquer. Certains systèmes verrouillent les comptes administrateur uniquement sur les connexions réseau.
- même une fois que vous verrouillez un compte, l’attaque peut continuer, consommant de précieuses ressources humaines et informatiques.
le verrouillage du compte est parfois efficace, mais uniquement dans des environnements contrôlés ou dans des cas où le risque est si grand que même les attaques DoS continues sont préférables à la compromission du compte.,Dans la plupart des cas, cependant, le verrouillage du compte est insuffisant pour arrêter les attaques par force brute.
considérons, par exemple, un site d’enchères sur lequel plusieurs enchérisseurs se disputent le même article.Si le site Web de l’enchère appliquait le verrouillage des comptes, un enchérisseur pourrait simplement verrouiller les comptes des autres à la dernière minute de l’enchère, les empêchant de soumettre tout gain bids.An l’attaquant pourrait utiliser la même technique pour bloquer les transactions financières critiques ou les communications par courrier électronique.,
cookies D’appareil
Vous pouvez également envisager de verrouiller séparément les tentatives d’authentification à partir de navigateurs ou d’appareils connus et inconnus.L’article Slow Down Online Guessing Attacks with Device Cookies propose un protocole pour le mécanisme de verrouillage basé sur des informations indiquant si un navigateur spécifique a déjà été utilisé pour une connexion réussie.Le protocole est moins sensible aux attaques DoS que le verrouillage de Compte simple et pourtant efficace et facile à mettre en œuvre.,
trouver D’autres contre-mesures
comme décrit, le verrouillage des comptes n’est généralement pas une solution pratique, mais il existe d’autres astuces pour faire face aux attaques par force brute.Premièrement, étant donné que le succès de l’attaque dépend du temps, une solution facile consiste à injecter des pauses aléatoires lors de la vérification d’un mot de passe.L’ajout d’une pause de quelques secondes peut grandement ralentir une attaque par force brute, mais ne dérangera pas la plupart des utilisateurs légitimes lorsqu’ils se connectent à leurs comptes.,
notez que bien que l’ajout d’un délai puisse ralentir une attaque à thread unique, il est moins efficace si l’attaquant envoie plusieurs demandes d’authentification simultanées.
Une autre solution consiste à verrouiller une adresse IP avec plusieurs connexions échouées.Le problème avec cette solution est que vous pouvez bloquer par inadvertance de grands groupes d’utilisateurs en bloquant un serveur proxy utilisé par un FAI ou une grande entreprise.Un autre problème est que de nombreux outils utilisent des listes de proxy et n’envoient que quelques requêtes à partir de chaque adresse IP avant de passer à la suivante.,
en utilisant des listes de proxy ouvertes largement disponibles, un attaquant pourrait facilement contourner tout mécanisme de blocage IP.Étant donné que la plupart des sites ne bloquent pas après un seul mot de passe échoué, un attaquant peut utiliser deux ou trois tentatives par proxy.An l’attaquant avec une liste de 1 000 proxys peut tenter 2 000 ou 3 000 mots de passe sans être bloqué.
néanmoins, malgré les faiblesses de cette méthode, les sites Web qui subissent un nombre élevé d’attaques (sites Web pour adultes en particulier) choisissent de bloquer les adresses IP proxy.,
Une solution simple mais étonnamment efficace consiste à concevoir votre site web pour ne pas utiliser un comportement prévisible pour les mots de passe défaillants.Par exemple, la plupart des sites Web renvoient un code « HTTP 401 error” avec un échec de mot de passe, bien que certains sites Web renvoient plutôt un code « HTTP 200 SUCCESS” mais dirigent l’utilisateur vers une page expliquant l’échec de la tentative de mot de passe.Cette imbéciles certains systèmes automatisés, mais il est également facile à contourner.
Une meilleure solution pourrait être de varier suffisamment le comportement pour éventuellement décourager tous les pirates sauf les plus dévoués.,Vous pouvez, par exemple, utiliser des messages d’erreur différents à chaque fois ou parfois laisser un utilisateur accéder à une page, puis lui demander à nouveau un mot de passe.
certains outils automatisés de force brute permettent à l’attaquant de définir certaines chaînes de déclenchement pour rechercher qui indiquent une tentative de mot de passe ayant échoué.Par exemple, si la page résultante contient la phrase « mauvais nom d’utilisateur ou mot de passe”, l’outil connaîtrait l’échec des informations d’identification et essaierait le suivant dans la liste.,Un moyen simple de tromper ces outils est d’inclure également ces phrases en tant que Commentaires dans la source HTML de la page qu’ils obtiennent lorsqu’ils s’authentifient avec succès.
Après une ou deux tentatives de connexion infructueuses, vous pouvez demander à l’utilisateur non seulement le nom d’utilisateur et le mot de passe, mais également de répondre à une question secrète.Cela ne cause pas seulement des problèmes avec les attaques automatisées, il empêche un attaquant d’accéder, même s’ils obtiennent le nom d’utilisateur et le mot de passe corrects.,
Vous pouvez également détecter un nombre élevé d’attaques à l’échelle du système et, dans ces conditions, demander à tous les utilisateurs de répondre à leurs questions secrètes.
D’autres techniques que vous pourriez envisager sont:
- Pour les utilisateurs avancés qui souhaitent protéger leurs comptes contre les attaques, donnez-leur la possibilité d’autoriser la connexion uniquement à partir de certaines adresses IP.
- attribuez des URL de connexion uniques à des blocs d’utilisateurs afin que tous les utilisateurs ne puissent pas accéder au site à partir de la même URL.,
- utilisez a pour empêcher les attaques automatisées
- au lieu de verrouiller complètement un compte, placez-le dans un mode de verrouillage avec des capacités limitées.
les attaquants peuvent souvent contourner un grand nombre de ces techniques par eux-mêmes, mais en combinant plusieurs techniques, vous pouvez limiter considérablement la force brute attacks.It il peut être difficile d’arrêter un attaquant déterminé à obtenir un mot de passe spécifiquement à partir de votre site web, mais ces techniques peuvent certainement être efficaces contre de nombreuses attaques, y compris celles de pirates novices.,Ces techniques nécessitent également plus de travail de la part de l’attaquant, ce qui vous donne plus de possibilités de détecter l’attaque et peut-être même d’identifier l’attaquant.
bien que les attaques par force brute soient difficiles à arrêter complètement, elles sont faciles à détecter car chaque tentative de connexion échouée enregistre un code D’état HTTP 401 sur votre serveur Web logs.It il est important de surveiller vos fichiers journaux pour les attaques par force brute-en particulier, Les 200 codes d’état entremêlés qui signifient que l’attaquant a trouvé un mot de passe valide.,
Les attaques par force brute sont étonnamment difficiles à arrêter complètement, mais avec une conception soignée et de multiples contre-mesures, vous pouvez limiter votre exposition à ces attaques.,
en fin de compte, la seule meilleure défense est de s’assurer que les utilisateurs suivent les règles de base pour les mots de passe forts: utilisez des mots de passe longs et imprévisibles, évitez les mots de dictionnaire, évitez de réutiliser les mots de passe et changez les mots de passe régulièrement.
un test de Turing public entièrement automatisé pour distinguer les ordinateurs et les humains, ou , est un programme qui vous permet de faire la distinction entre les humains et les ordinateurs.D « abord largement utilisé par Alta Vista pour empêcher les soumissions de recherche automatisées, s sont particulièrement efficaces pour arrêter tout type d » abus automatisé, y compris les attaques par force brute.,
ils travaillent en présentant un test facile à passer pour les humains mais difficile à passer pour les ordinateurs; par conséquent, ils peuvent conclure avec une certaine certitude s’il y a un humain à l’autre extrémité.
pour que a soit efficace, les humains doivent être en mesure de répondre correctement au test aussi près de 100 pour cent du temps que possible.Les ordinateurs doivent échouer aussi près de 100% du temps que possible.Les chercheurs de l « école d » informatique de Carnegie Mellon travaillent continuellement pour améliorer et introduire de nouveaux S.,
Si vous développez le vôtre , gardez à l’esprit que ce n’est pas à quel point la question est difficile-c’est à quel point il est probable qu’un ordinateur obtienne la bonne réponse.J’ai vu une fois un qui présente à l’utilisateur une photo de trois zèbres, avec une question à choix multiples demandant combien de zèbres étaient dans le picture.To répondez à la question, vous cliquez sur l’un des trois boutons.
bien qu’il soit très difficile pour un programme informatique de comprendre la question et d’interpréter l’image, le programme pourrait simplement deviner au hasard n’importe quelle réponse et la corriger un tiers du temps., Bien que cela puisse sembler un niveau de risque satisfaisant, il n’est en aucun cas efficace .Si vous exécutez un service de messagerie gratuit et utilisez un tel pour empêcher les spammeurs de créer des comptes en vrac, tout ce qu’ils ont à faire est d’écrire un script pour créer automatiquement 1 000 comptes et s’attendre en moyenne à ce que 333 de ces tentatives soient couronnées de succès.
néanmoins, un simple peut toujours être efficace contre les attaques par force brute.,Lorsque vous combinez la possibilité qu’un attaquant envoie un nom d’utilisateur et un mot de passe corrects avec la chance de deviner correctement, combiné avec d’autres techniques décrites dans ce chapitre, même un simple pourrait s’avérer efficace.
Figure 1: Délai D’authentification par mot de passe: c#
Figure 2: Délai d’authentification par mot de passe: VB.NET
Public Sub AuthenticateRequest(ByVal obj As Object, ByVal ea As System.EventArgs) Dim objApp As HttpApplication Dim objContext As HttpContext Dim ran As Random objApp = obj objContext = objApp.Context ' If user identity is not blank, pause for a random amount of time If objApp.User.Identity.Name <> "" Then ran = New Random Thread.Sleep(ran.Next(ran.Next(minSeconds, maxSeconds) * 1000)) End IfEnd Sub