Comment je me suis hacké pour retrouver un mot de passe perdu

par colivier

Le 27 juin à 21h20

104

Bonjour ! J'ai récemment eu un petit problème de mot de passe et je me suis dit que ça pouvait être intéressant de vous le partager. En effet j'utilise le format KeePass pour stocker tous mes mots de passe de manière chiffrée avec un mot de passe maître. Et vous voyez venir le problème... Impossible de me souvenir de ce mot de passe et donc d'avoir accès à tous mes autres mots de passe...

Pour me sortir de cette situation j'ai décidé d'utiliser une attaque brut-force, une attaque par force brute qui consiste à utiliser un dictionnaire, une liste de mot de passe pour les tester un par un. Je vais donc vous montrer étape par étape comment monter cette attaque.


Pour la mettre en place, nous allons avoir besoin de plusieurs choses, d'abord, notre fichier kdbx, celui qui contient nos mots de passes chiffrés, ensuite, un dictionnaire de mot de passe, et enfin un logiciel pour exécuter l'attaque brut-force, nous n’allons pas tester tous ces mots de passe un par un ;)


Générer un dictionnaire

Nous allons d'abord devoir générer un dictionnaire de mot de passe, vous pourriez trouver sur internet d'énorme dictionnaire mais dans ce cas, il s'agit de mon mot de passe, j'en connais donc un peu près la structure, et il serait plus intelligent de créer mon propre dictionnaire.

Pour cet article, j'ai recréé un fichier kdbx protéger par le mot de passe OCazerty, d'ailleurs, je vous déconseille fortement ce genre de mot de passe très très trèèès peu sécurisé.

Pour créer ce dictionnaire, nous allons créer un script en python qui va générer 100000 mots de passe et les écrire dans un fichier.

Sans plus attendre, voici le script :


from random import *

caract = [ "a", "e", "t", "z", "r", "y" ]

def genPasswd():

genPass = "OC"

for i in range(6):

char = choice(caract)

genPass += char

return genPass

if __name__ == '__main__':

file = open('passwordDict.list', 'w')

try:

for i in range(100000):

file.write(genPasswd() + '\n')

finally:

file.close()


Ce script très (trop ?) simple peut (et dois) être adapté en fonction de la complexité de votre mot de passe.

Nous pouvons ensuite lancer la commande suivante pour créer le dictionnaire :

python main.py

Préparer l'attaque

Prochaine étape : mettre en place l'attaque, pour cela, il y a deux choses à faire :

Installer JohnTheRipper

Récupérer le hash de notre mot de passe


Installer JohnTheRipper

JohnTheRipper est un logiciel open source très réputé dans le monde du hacking et est la référence quand on parle d'attaques brut-force. Pour l'installer, rien de plus simple, on va d'abord le cloner depuis GitHub :

git clone git://github.com/magnumripper/JohnTheRipper

On se rend ensuite dans le répertoire src

cd JohnTheRipper/src

Et on exécute :

./configure

make -s clean && make -sj4

Ta-Da ! JohnTheRipper est fonctionnel !


Récupérer le hash de notre mot de passe

Pour ça, rien de plus simple, JohnTheRipper à un module pour extraire le hash de notre mot de passe depuis notre fichier de mots de passe kdbx. Il suffira simplement d'adapter dans la commande suivante avec les noms de fichier que vous souhaitez, remplacez passwords.kdbx par votre fichierkdbx et kee.hash par le fichier dans lequel vous voulez mettre votre hash.

JohnTheRipper/run/keepass2john passwords.kdbx > kee.hash


Lancer l'attaque

Encore une fois, c'est très simple, on lance la commande suivante en passant notre fichier-dictionnaire et le hash de notre mot de passe :

JohnTheRipper/run/john --wordlist=passwordDict.list kee.hash


On attend quelques minutes et on devrait obtenir un résultat.


Résultat

Using default input encoding: UTF-8

Loaded 1 password hash (KeePass [SHA256 AES 32/64])

Cost 1 (iteration count) is 6000 for all loaded hashes

Cost 2 (version) is 2 for all loaded hashes

Cost 3 (algorithm [0=AES, 1=TwoFish, 2=ChaCha]) is 0 for all loaded hashes

Will run 4 OpenMP threads

Press 'q' or Ctrl-C to abort, almost any other key for status

OCazerty (passwords_file)

1g 0:00:02:15 DONE (2019-06-25 18:36) 0.007357g/s 572.5p/s 572.5c/s 572.5C/s OCyazazr..OCezeeya

Use the "--show" option to display all of the cracked passwords reliably

Session completed


Magie ! On voit à l'avant, avant, avant, avant-dernière ligne que le programme a retrouvé notre mot de passe, OCazerty !

Bon finalement j'ai retrouvé mon mot de passe et je peux enfin accéder à mes données chiffrées ! J'espère que ce petit article pourra aussi vous aider, mais ne l'utilisez pas contre d'autres personnes que vous ! Et de toute façon, ça risque d'être un peu plus compliqué car ici notre mot de passe était relativement simple et nous en connaissions la structure.

Ah oui ! Une petite morale quand même ! (je vais faire très rapide) Utilisez des mots de passes compliqué pour éviter ce genre d'attaque et utiliser un mot de passe différent pour chaque service !

COMMENTAIRES

Vous devez être connecté pour ajouter un commentaire !
SE CONNECTERS'INSCRIRE

Aucun commentaires... Soyez le premier à en ajouter un !