Attaque de mot de passe par force brute

Un article de Haypo.

Retour aux articles de sécurité

Sommaire

[modifier] Présentation

Une attaque par force brute, ou vulgairement "attaque bourrin", consiste à cracker un mot de passe en testant exhaustivement toutes les combinaisons possibles. C'est très long, et du coup, on utilise souvent des astuces pour restreindre cet espace de recherche. En particulier, on peut utiliser une liste de mot de passe courants pour tester les mots de passe les plus simple.

[modifier] Mots de passe en clair

[modifier] Stockés sur le disque dur

Pour les mots de passe stockés sur un ordinateur en clair (ou avec un "chiffrement" très léger qui n'est en fait qu'un encodage un peu spécial) sur un ordinateur, voyez par exemple le programme Lamer qui permet d'en dresser la liste.

[modifier] Transitant sur le réseau

Les mots de passe sont utilisés un peu partout sur un ordinateur. Certains transitent en clair sur le réseau et peuvent facilement être attrapé avec un sniffeur de réseau tel que Ethereal. On peut citer :

  • POP3 : Protocole utilisé pour relever ses courriels
  • FTP : Protocole d'échange de fichier
  • HTTP Basic : Protocole d'authentificiation HTTP dans lequel l'identifiant et mot de passe transitent en clair

Il est vivement recommandé d'utiliser des protocoles sécurisés :

  • POP3 dans un tunnel SSL
  • SFTP : FTP dans un tunnel SSL
  • Autre méthode d'authentification HTTP (en utilisant HTTPS par exemple)

[modifier] Mots de passe chiffrés

Là où ça devient intéressant, c'est lorsque le mot de passe est stocké de manière "chiffré". En fait, c'est souvent un hash du mot de passe. Un hash est le résultat d'une fonction mathématique très difficilement réversible, on peut citer les fonctions MD5 et SHA1. Au passage, ces deux dernières fonctions ont montrées des faiblesses récement. Il est donc déconseillé de les utiliser.

[modifier] Stockés sur le disque dur

Si on a accès au hash, on peut utiliser le programme John the Ripper pour tenter de retrouver le mot de passe en clair.

[modifier] Accès via un système d'authentification

Si on n'a accès qu'à un système d'authentification (FTP par exemple), on peut utiliser un programme qui va tenter de se connecter avec un grand nombre d'identifiant - mot de passe. On peut citer Hydra développé par The Hacker's Choice.

[modifier] Éviter les attaques par dictionnaire sur un hash

Il existe plusieurs programmes permettant de casser un hash, c'est à dire retrouver le mot de passe qui a donné ce hash. Les programmes les plus rapides utilisent des dictionnaires des mots de passe les plus courants et calculent à l'avance des hash (ce qui prend d'ailleurs beaucoup de place sur le disque dur, plusieurs Go).

Pour éviter les attaques par dictionnaire sur un hash, le plus simple est d'ajouter un peu de « sel ». Le sel est une valeur générée aléatoirement et qui est différente pour chaque mot de passe. On ajoute simplement le sel au mot de passe avant de calculer le hash, et on conserve le sel en clair pour ... ben pour vérifier qu'une chaîne de caractère correspond bien au mot de passe enregistré :-D

Pseudo algorithme pour calculer un hash avec sel :

  • sel = générer une chaîne aléatoire (8 octets pour du MD5 par exemple)
  • input = sel + mot_passe
  • hash = calcule_hash(input)

On enregistre alors (sel, hash).

Pseudo algorithme pour tester un mot de passe :

  • charge sel et hash
  • input = sel + mot_passe_a_tester
  • hash_test = calcule_hash(input)

Le mot de passe est valide si hash = hash_test.

[modifier] Articles connexes

[modifier] Lien externe