Les mots de passe

Bienvenue sur notre site

Ce site va parler des mots de passe, sur cette page nous allons vous expliquer quelques techniques de hacking, puis nous allons vous parler des protections misent en place et au final donner un exemple mettant en pratique vos nouvelles connaissances en racontant le Hack de Yahoo en 2013 et 2014.

Les techniques de hacking

Image d’un site de phishing
Image d'exemple d’un site de phishing

Le Phishing

Le phishing est une technique destinée à trouver le mot de passe et le nom d’utilisateur en trompant la victime. Le fonctionnement de cette technique est assez simple, l’objectif sera d’envoyer un message (SMS, mail…) à la victime en se faisant passer pour quelqu’un d’autre comme une entreprise ou une banque. Le message demandera à la personne de se connecter sur une imitation du site web de l’entreprise en question. Le hackeur doit donc créer une copie exacte d’un site web, de l’interface au nom de domaine, afin que la victime se croie sur le site web officiel. La victime essayera de se connecter sur le faux site web et ses données de connexion seront récoltées par le hackeur.

Le Spear Phishing

Une variante de cette technique s’appelle le spear phishing, le concept est exactement le même sauf que le spear phishing est ciblé sur une personne et n’est pas prévu pour piéger les masses. La technique est plus difficile à mettre en place mais le contexte étant personnalisé à la victime, il est plus difficile de remarquer l’arnaque. Au-delà de l’informatique, le phishing utilise les failles de la psychologie humaine, en utilisant la pitié ou le stress chez l’utilisateur, des messages de spear phishing cumulés à des recherches sur la personne grâce à de l’OSINT et un vocabulaire spécifique au contexte du message peut donner un résultat très convaincant et très efficace. Cette technique ne pouvant pas être complètement contrée par de la sécurité informatique et se basant sur les failles de la psychologie humaine est actuellement la technique la plus efficace et la plus utilisée pour le hack de mot de passe.

Un petit exemple

« En 2014, des chercheurs en sécurité ont montré qu'un groupe de pirates informatiques avait réussi à compromettre les données d'un nombre important de cadres financiers de Wall Street en utilisant des tactiques telles qu'envoyer des messages à partir des comptes de personnes connues de la cible, en faisant référence à des affaires en cours gérées par la cible et en faisant preuve d'une parfaite maîtrise de la langue et de la culture professionnelle de leurs cibles. » Wikipédia

Les attaques par force brute

Une attaque brute force ou attaque par force brute va générer et tester un grand nombre de combinaisons une à une ou utiliser des bases de données contenant déjà un grand nombre de combinaisons et surtout les mots de passe les plus souvent utilisés. Contrairement à ce qu’on pourrait penser, une attaque brute force n’est pas uniquement utilisée quand le système attaqué n’a pas de limitation du taux de requêtes. Une limitation du taux de requêtes (rate limiting en anglais), est actuellement présente partout, elle empêche l’attaquant de tester un grand nombre de possibilités en limitant le nombre de tentatives de connexion possibles dans un laps de temps. Mais la technique du brute force ne s’arrête pas là. Afin de comprendre ce qui suit il est nécessaire d'être à l'aise avec les notions de hachage et de salage, si vous ne savez pas ce que c'est, allez lire la section sur le hachage et celle sur le salage.

Image d’un mot de passe haché avec SHA-1
Image d’un mot de passe haché avec SHA-1

Les rainbow tables

Prenons le cas d’un hackeur qui a accès à une base de données contenant les noms d’utilisateur et des mots de passe sans salage hachés. Voici un exemple de hash pour un mot de passe, algorithme utilisé SHA-1:

Image d'un mot de passe trouvé avec une rainbow table
crackstation.net utilisé pour trouver notre mot de passe

Crackons tout ça

Le hacker ayant accès à la base de données obtiendra donc,
Son nom d’utilisateur disons :
Pleine Lune

Et son mot de passe haché :
359513fa496bd35ba6282ecc2d4446ec30061d72

Il est impossible d’inverser un algorithme de hachage tant il est complexe. Il va donc falloir trouver une autre technique pour trouver le mot de passe de l’utilisateur. Nous savons qu’un algorithme de hachage va tout le temps donner la même sortie pour la même entrée, donc si l’utilisateur a utilisé un mot de passe pas très sécurisé comme dans ce cas où le mot de passe est : Lune1234, il existe donc des bases de données avec un grand nombre de hash pour l’algorithme utilisé dans notre cas. Testons donc sur crackstation.net (un site qui est uniquement à utiliser à but informatif), ce site contient une base de données de 15 milliards de hash contenant de mots de passe fréquemment utilisés, des mots du dictionnaire (dictionnary attack) et de l’ajout de suites de caractères et de chiffres fréquemment utilisés à la fin des mots de passe. Ces bases de données sont appelées des rainbow tables. Dans notre cas « Lune » est un mot du dictionnaire et « 1234 » est un suffixe souvent utilisé à la fin d’un mot de passe ce qui explique que le hash de notre mot de passe soit présent dans notre base de données:

Mais...

Et voilà, juste à partir du hash de l’utilisateur nous avons pu trouver son mot de passe. Mais l’exemple donné n’est pas réaliste, tout d’abord cette technique ne fonctionnerait pas avec un mot de passe sécurisé comme «VysvB4?-'sY3y@e » car le hash de ce mot de passe ne sera pas dans notre base de données. Notre algorithme de hachage (SHA-1) est très connu mais n’est actuellement plus considéré comme sécurisé, des algorithmes comme bcrypt sont privilégiés. Et notre mot de passe n’a pas subi de processus de salage, qui rend ces bases de données inutiles. Le mot de passe étant modifié avec un processus de salage avant d’être haché. Trouver un mot de passe complexe qui a été salé correctement puis haché avec un bon algorithme est considéré comme impossible.

Mais si le processus est moins bien fait cela peut rester possible. En effet, dans une base données le salt est écrit en clair (pas chiffré) car il est uniquement là pour contrer l’utilisation de Rainbow tables et n’a pas d’utilité à être chiffré mise à part complexifier son utilisation, si le salt était chiffré il devrait être déchiffré avant chaque requête, donc à chaque fois que l'utilisateur veut entrer son mot de passe. Donc si un mot de passe faible est utilisé et que le salt est connu il est possible de tester plusieurs options de mot de passe fréquemment utilisés, d’ajouter le salt connu puis de hacher. Mais cela demande de faire ce processus utilisateur par utilisateur ce qui rend le processus très lent. De plus les bons algorithmes de hachage comme bcrypt font exprès de ralentir le temps pour hacher un mot de passe pour éviter ce type d’attaque, le processus devenant encore plus lent.