Sécurité des applications Web - Menaces et contre-mesures

Auteur: Mohamed CHINY Durée necessaire pour le cours de Sécurité des applications Web - Menaces et contre-mesures Niveau recommandé pour le cours de Sécurité des applications Web - Menaces et contre-mesures Supports vidéo non disponibles pour ce cours Exercices de renforcement non disponibles pour ce cours Quiz non disponibles pour ce cours

Page 11: Craquage de mots de passe

Toutes les pages

Craquage de mots de passe (Password Guessing)

Définition

Comme son nom l'indique, le craquage de mots de passe (ou password guessing) est une attaque qui vise à deviner les mots de passes des utilisateurs d'un site ou application Web. Il s'agit en fait de l'une des attaques les plus classiques et qui n'est pas propre au Web mais à tous les domaines où l'informatique opère.

Le pirate essaie par tous les moyens de trouver les mots de passe des gens pour les raisons suivantes:
  • Usurper l'identité de la victime en se passant pour elle au moment de l'authentification
  • Avoir un accès privilégié à un espace limité
  • Avoir accès à la boite à outil qui gère la totalité du site Web (Back-office)

Le mot de passe étant une information tellement personnelle, le fait de le subtiliser n'augure rien de bon.

Exploitation

Afin de deviner le mot de passe de la victime le pirate peut faire appel à plusieurs stratagèmes:
  • Test aléatoires: Bien que cette technique parait un peu loufoque, mais la plupart des usagers non avertis utilisent des mots de passe trop évidents, comme abcd, abc123, leur noms ou prénoms, leurs dates de naissance... Le fait que le pirate aie des informations sur la victime peut l'aider à deviner un tel mot de passe.
  • Utilisation d'un dictionnaire: Le dictionnaire n'est rien d'autre qu'un fichier (souvent au format texte) qui contient des centaines de milliers, voir des millions de mots de passes prédéfinis. Afin de tester ces mots de passe, le pirate utilise un logiciel automatisé qui les passe en vue un à un. Cette opération prend un temps considérable mais donne souvent son fruit.
  • Force brute: Le pirate utilise un logiciel automatisé qui teste un à un toutes les combinaisons possibles des caractères qu'il a fixé au début (minuscules, majuscules, chiffres...). La longueur maximale du mot de passe constitue aussi une information donnée par le pirate. Cette opération est bien plus efficace que l'utilisation du dictionnaire, mais prend énormément plus de temps.
  • Rainbow Table Attack: C'est une sorte de dictionnaire qui contient des mots de passe pré-hachés afin de réduire le temps du craquage, vu que les mots de passe à craquer sont souvent hachés aussi.
  • Ingénierie sociale: Là, ce sont les compétences relationnelles du pirate qui sont mises à l'avant. Il s'agit d'un moyen (peu technique) qui consiste à convaincre la victime à dévoiler des informations confidentielles comme des données sensibles, le mot de passe...
  • Sniffing: Le pirate se met sur la ligne où circule les données des gens. Si la ligne n'est pas sécurisée, alors il peut voir passer toutes les données y compris les mots de passe...
  • Phishing: (qui signifie hameçonnage) est une technique qui relève en partie de l'ingénierie sociale. Le pirate crée une réplique exacte d'un site officiel (ou seulement d'une page particulière de ce site) puis incite la victime à la visiter en lui envoyant un Email bien étoffé et qui contient le lien vers la page en question. Si la victime est imprudente alors il se rend vers le site du pirate tout en croyant qu'il s'agit du site officiel et peut ainsi fournir des informations confidentielles comme le mot de passe. Ces informations sont alors envoyées directement au pirate. Pour que l'utilisateur ne se doute pas du site visité à cause de l'URL qui ne colle pas, alors le Phishing peut être associé au Pharming qui consiste à compromettre le DNS et afficher une fausse URL chez le client.

Comment s'en protéger?

Pour empêcher les pirates de craquer les mots de passe des utilisateurs on peut procéder à plusieurs démarches:

Utiliser des mots de passe longs et complexes

Plus le mot de passe est long, plus il y a des combinaisons à tester par le pirate, ce qui accroit considérablement le temps nécessaire au craquage. La diversification des caractères utilisés dans le mot de passe aide aussi à mieux sécuriser celui-ci, car on ne peut pas facilement trouver un dictionnaire qui contient des mots aussi complexes.

Par exemple, si le mot de passe contient 10 caractères constitués seulement de chiffres et de lettres (majuscules et minuscules), alors il faut (26+26+10) à la puissance 10 tentatives pour composer tous les mots de passe possibles. Ce qui donne un peu moins d'un milliard de milliards de combinaisons.

Limiter le nombre de tentatives de saisie de mot de passe

Une attaque par force brute ou par dictionnaire demande des millions de tentatives pour, peut être, trouver le bon mot de passe. Si on limite le nombre de tentatives de saisie de mot de passe à 3 par exemple, alors on aura réduit considérablement le risque de son craquage.

Ne jamais stocker les mots de passe en claire

Que ça soit sur un fichier plat ou une base de données, il ne faut jamais stocker en claire les mots de passe des utilisateurs. Même si vous estimez que seul l'administrateur peut avoir accès à l'espace de stockage et qu'il n'y aurait pas de mal si il visualise les mots de passe des gens alors détrompez-vous. Le mot de passe est une donnée intime que seule le détenteur d'origine a le droit de connaitre. Il faut donc toujours hacher les mots de passe avant de les stocker pour les mettre à l'abri des curieux. Et si un jour un utilisateur oublie son mot de passe, générez en un nouveau pour lui.

Ne jamais programmer une authentification sur une connexion non sécurisée

Si vous voulez intégrer une page d'authentification sur votre site, il faut forcer le passage en HTTPS. Ne pensez même pas à faire ceci sur HTTP car il y a un risque considérable que vos données soient écoutées sur la ligne par un pirate.

Inciter les utilisateurs du site à ne jamais communiquer leur mot de passe à qui que ce soit

C'est la règle d'or; "ne jamais donner le mot de passe à qui que ce soit", même si sa cause est convaincante, car les pirates qui agissent sous la couverture de l'ingénierie sociale sont très forts en argumentation, et peuvent facilement duper les utilisateurs naïfs.

Avertir les utilisateurs du risque de Phishing

Demander aux utilisateurs de toujours vérifier l'exactitude de l'URL et si le certificat SSL (TLS) ne présente pas d'erreur qui peut être manifestée par l'affichage d'un avertissement sur le navigateur. Ces vérifications sont d'autant plus importantes si la page demande des informations confidentielles comme dans le cas de l'authentification ou le payement en ligne...