HAVEIBEENHASHED

Qu'est-ce que le projet HAVEIBEENHASHED ?

HAVEIBEENHASHED est un projet informatique s’inscrivant dans mon parcours au sein de L’ESIEA réalisé en utilisant des compétences en Python, en système de gestion de base de données MYSQL ainsi qu’en sécurité.

Le projet HAVEIBEENHASHED est un projet ayant été commandité par l’ESIEA.
Le but de ce projet est de mettre en place une plateforme pouvant être utilisée lors de présentations prévention sur la sécurité des mots de passe des utilisateurs. En effet, la sécurité des mots de passe est devenue un sujet important avec l’évolution d’internet, mais aussi en parallèle, l’augmentation des vols de données. Aujourd’hui, selon 1&1, 69% des utilisateurs utilisent le même mot de passe pour plusieurs comptes. De plus, encore beaucoup trop de personnes utilisent des mots de passes sans chiffres ou bien caractères spéciaux, et le nombre de caractères des mots de passe reste relativement bas, ce qui rend la tâche facile à une personne malintentionnée de d’accéder au mot de passe d’une victime en employant certaines méthodes comme les attaques par brute force.
C’est donc dans le contexte de la prévention que l’ESIEA nous a attribué ce sujet.

Afin de réaliser ce projet, différents objectifs nous ont été établis :

  • Mettre en place un système de gestion de base donnée permettant de stocker un certain nombre de mots de passe
  • Créer une interface web permettant à un utilisateur de vérifier si son mot de passe est existant dans la base de données
  • Mettre en place un script python permettant de récupérer des mots de passe ayant déjà fuité sur internet

Pour la réalisation de ce projet, il y avait plusieurs acteurs :

  • Pour commencer, il y avait l’équipe d’étudiants qui a travaillé sur le projet afin de rendre un produit fonctionnel. Le travail était réparti entre les différents membres de l’équipe.
  • Nous étions en contact avec l’ESIEA qui a été notre commanditaire sur ce projet. Nous devions donc présenter au fil des différents sprints notre progression sur le projet.
  • Pour finir, nous étions en contact avec notre suiveur, à qui nous faisions des rapports réguliers afin de montrer l’avancée du projet et à qui nous nous adressions en cas de problème ou de blocage.

Pour commencer, j’ai mis en place une machine virtuelle installée sur ma machine personnelle. Cette machine virtuelle comprenait un OS Linux. Cette machine a été créée dans le but de mettre en place un système de gestion de base de données MYSQL afin de stocker une grande quantité de mots de passes que nous récupérerions avec notre script Python. Pour réaliser cela, j’ai créé ma machine virtuelle en utilisant VMWare Workstation. Grâce à cela j’ai pu commencer avec une base de machine Debian. Sur celle-ci j’ai installé tous les paquets nécessaires à l’installation d’une base de données MYSQL. En plus de cela, afin de faciliter la navigation et d’avoir une interface graphique pour la base de données, j’ai installé une interface phpMyAdmin, permettant de se connecter depuis un navigateur web a une interface web pour gérer la base de données.
Une fois tout cela fait, j’ai réalisé une ouverture de ports de mon routeur afin de permettre aux membres de mon équipe et aux applications qui vont être créées par la suite d’accéder à la base de données via internet.

J’ai commencé à sécuriser la solution en limitant les adresses qui peuvent accéder à l’interface graphique phpMyAdmin et à la base de données. De plus, j’ai limité l’ouverture de ports aux ports destinés à deux protocoles, les protocoles dédiés aux services HTTP et SQL.

Une fois cela fait, je me suis occupé de l’administration du système de gestion de bases de données.
Pour cela, je me suis occupé de créer différents utilisateurs.
Le premier utilisateur est un utilisateur destiné à administrer le SGBD (système de gestion de base de données) entier. Grâce à cela, il aura le droit de créer, modifier ou supprimer des bases de données, et il pourra modifier les tables des bases de données.
Le second utilisateur a été créé pour le script python destiné à aller chercher des mots de passe, et de faire plusieurs requêtes dans la base de données afin d’y conserver les mots de passe. Cet utilisateur a les droits en lecture et en écriture sur la base de données créé spécialement pour les mots de passes récupérés.
Le dernier utilisateur a été créé pour permettre à l’application destinée à vérifier si les mots de passes sont connus de notre base de données, de pouvoir y lire. Cet utilisateur a les droits en lecture sur la base de données contenant les mots de passe.
Les utilisateurs réservés aux applications, n’ont pas le droit nécessaire pour pouvoir se connecter a l’interface graphique de la base de données, c’est-à-dire, à l’interface phpMyAdmin.
Grâce à la création de ces différents utilisateurs, ainsi qu’à la limitation des droits en fonction des utilisateurs , on permet d’éviter qu’une personne malintentionné ait accès au SGBD et puisse réaliser des actions que nous ne souhaiterions pas.

Pour finir, j’ai aidé à la conception du script python permettant de récupérer des mots de passes.
Pour se faire, nous avons récupéré sur certains dépôts des listes de mots de passe écrit en clair dans des fichiers txt. Nous avons demandé à notre script Python d’aller chercher ses listes de mots de passe via les liens que nous lui avons fourni, et sur chacune des listes, en fonction des délimitations, va découper les fichiers par mot afin d’envoyer un par un les mots de passe. Lors de la requête faites à la base de données, nous vérifions si le mot de passe envoyé existait déjà dans la base de données, si oui, le mot de passe y était ajouté, sinon l’ajout du mot de passe est abandonné.

Suite à ce projet, nous avons réussi à fournir à l’ESIEA une plateforme de vérification de mots de passe qui nous a permis de tester si les mots de passes les plus courant étaient bien référencées dans notre base de données.

Dans ce projet, je considère que mon apport principal a été la mise en place de la machine virtuelle ainsi que la partie administration du SGBD ainsi que de la sécurité. En effet, le serveur SQL a été mis en place sur une machine personnelle, et sur mon réseau personnel. Je me devais donc de m’occuper de mettre en place la sécurité de cette machine le plus rigoureusement possible. De plus, j’ai participé à la mise en place du script Python permettant de récupérer les mots de passe.

De ce projet, j’en ressors avec de meilleures compétences dans l’utilisation de Python et sa flexibilité, qui m’a permis d’envoyer vers la base de données toutes les infos dont nous avions besoin. Grâce à mes connaissances concernant l’hébergement linux, j’ai aussi réussi à mettre en place de manière assez rapide la machine virtuelle contenant le SGBD, cependant, j’ai mis un accent très important sur la partie sécurité et en particulier les ouvertures de port. 
De plus, nous sommes heureux d’avoir pu aider l’ESIEA à réaliser un outil permettant de faire de la communication et de la prévention sur un sujet aussi important que la sécurité des mots de passe. Grâce à cela, nous pourrons potentiellement aider des personnes qui seront mises au courant de l’existence de ce sujet, et cela pour permettre de sauver certaines personnes de certains problèmes.

Andy ARMAND

Expert en systèmes d'informations

Copyright ©. Tous droits réservés.

Nous avons besoin de votre consentement pour charger les traductions

Nous utilisons un service tiers pour traduire le contenu du site web qui peut collecter des données sur votre activité. Veuillez consulter les détails dans la politique de confidentialité et accepter le service pour voir les traductions.