web-dev-qa-db-fra.com

Comment l'attaquant sait-il quel algorithme et quel sel utiliser dans une attaque par dictionnaire?

Je suis curieux de connaître les méthodes de craquage de mots de passe comme les attaques par dictionnaire et par force brute. De nos jours, les mots de passe sont stockés sous forme de hachages et non en texte brut sur le serveur. Comment comparer les mots de passe en texte brut du dictionnaire avec les hachages de la base de données divulguée? Comme les hachages peuvent être de différents types comme bcrypt, SHA-512 et ainsi de suite, comment les outils de craquage peuvent-ils savoir comment créer les hachages et les comparer?

Par exemple, jetez un œil à l'attaque du dictionnaire ci-dessous. Les mots de passe divulgués ne sont que des hachages et le dictionnaire contient des mots anglais simples. Alors comment les comparer? Comment l'attaquant ou les outils de craquage savent-ils quel algorithme de hachage il doit utiliser? Même le sel est là, mais comment l'attaquant sait-il ce qu'est le sel?

Brute force attack with dictionary words.Database dump with hashes and salts.

30
andjava

Comment le texte en clair et les hachages sont-ils comparés?

Pendant l'attaque par force brute, les mots du dictionnaire sont hachés avec l'algorithme de hachage et le sel correct, puis comparés au hachage dans le vidage de la base de données. L'attaquant doit donc connaître non seulement la valeur de hachage elle-même, mais l'algorithme et le sel.

Comment l'attaquant connaît-il le sel?

Le sel est généralement stocké dans la base de données juste à côté du hachage. En fait, cela doit être. Sinon, comment le serveur Web pourrait-il hacher les mots de passe entrants lors de leur vérification? Donc, si vous avez un vidage de base de données, vous avez les sels.

Comment l'attaquant sait-il quel algorithme utiliser?

Cela peut se faire de plusieurs manières:

  • Vous pouvez souvent le dire par le format ou la longueur du hachage. Par exemple, un hachage bcrypt commence généralement par le marqueur $2b$.
  • Essayez quelques mots de passe très courants en utilisant les algorithmes les plus courants, et tôt ou tard, vous obtiendrez une correspondance. Étant donné qu'un seul algorithme est généralement utilisé pour tous les hachages, vous n'avez besoin que de trouver une correspondance, puis vous pouvez continuer à casser les autres mots de passe avec cet algorithme.
  • Encore plus simple, si vous ne connaissez qu'un seul mot de passe (vous avez peut-être créé votre propre compte avant la violation), vous pouvez essayer différents algorithmes sur celui-ci. (Merci, Oie .)
  • Si vous avez accès au code, vous y trouverez la réponse. (Merci, marcelm .)
  • Ou si vous savez quel logiciel est utilisé, vous le trouverez peut-être dans la documentation. (Merci, eckes .)
62
Anders