Introduction
airolib-ng est un outil puissant de la suite Aircrack-ng conçu pour gérer et utiliser des bases de données de clés maîtres pré-calculées (PMK - Pre-computed Master Key). Lors de la tentative de craquage d'une poignée de main WPA/WPA2, la partie la plus longue est le calcul de la PMK à partir d'une phrase de passe potentielle et du nom du réseau (ESSID).
En pré-calculant ces PMK pour une liste de phrases de passe et de noms de réseaux courants et en les stockant dans une base de données, vous pouvez accélérer considérablement le processus de craquage. Au lieu d'effectuer le calcul intensif pour chaque mot de passe pendant l'attaque, aircrack-ng peut simplement rechercher la PMK dans la base de données.
Dans ce laboratoire, vous apprendrez les opérations fondamentales de airolib-ng pour créer et peupler une base de données PMK.
Comprendre le concept de base de données de clés maîtres pré-calculées
Dans cette étape, nous allons couvrir la théorie derrière les bases de données PMK avant de commencer à utiliser airolib-ng. Il n'y a pas de commandes à exécuter dans cette étape.
La sécurité des réseaux WPA/WPA2 repose sur une poignée de main en quatre étapes qui utilise une clé maître par paire (PMK - Pairwise Master Key) pour chiffrer le trafic. Cette PMK est dérivée du mot de passe (phrase de passe) du réseau et de son nom (ESSID). La formule est la suivante :
PMK = PBKDF2(phrase de passe, SSID, 4096 itérations, sortie 256 bits)
Lorsque vous essayez de craquer une poignée de main WPA/WPA2 capturée à l'aide d'un outil comme aircrack-ng et d'une liste de mots, l'outil effectue ce calcul pour chaque mot de passe de votre liste. Les 4096 itérations rendent ce processus coûteux en calcul et lent.
C'est là qu'intervient airolib-ng. Il vous permet d'effectuer ce travail intensif à l'avance. Vous pouvez prendre une liste d'ESSID courants et une grande liste de mots de passe, et pré-calculer toutes les PMK résultantes. Ces PMK sont ensuite stockées dans une base de données SQLite efficace.
Lorsqu'il est temps de craquer une poignée de main, aircrack-ng peut utiliser cette base de données. Au lieu de calculer la PMK pour chaque mot de passe, il la calcule une fois à partir de l'ESSID de la poignée de main capturée et du mot de passe de la liste de mots, puis recherche le résultat dans votre base de données pré-calculée. Cette recherche est des milliers de fois plus rapide que le calcul complet, réduisant considérablement le temps de craquage.
Dans les étapes suivantes, vous créerez une telle base de données, la remplirez avec un ESSID et des mots de passe, et vérifierez son intégrité.
Créer une nouvelle base de données SQLite avec airolib-ng --new
Dans cette étape, vous allez créer une nouvelle base de données SQLite vide qui stockera nos PMK. Tout notre travail sera effectué dans le répertoire ~/project.
Nous utilisons la commande airolib-ng suivie du nom de base de données souhaité et de l'indicateur --new. Cet indicateur indique à airolib-ng d'initialiser un nouveau fichier de base de données.
Créons une base de données nommée pmk_db. Exécutez la commande suivante dans votre terminal :
airolib-ng pmk_db --new
L'outil créera le fichier pmk_db dans votre répertoire actuel (~/project) et y configurera les tables nécessaires. Vous devriez voir une sortie confirmant la création et l'initialisation de la base de données.
Sortie attendue :
Database 'pmk_db' created.
Wrote 1 ESSIDs and 0 PMKs.
Vous pouvez vérifier que le fichier a été créé en utilisant la commande ls :
ls -l pmk_db
Sortie attendue :
-rw-r--r-- 1 labex labex 8192 May 20 10:30 pmk_db
Importer un seul ESSID dans la base de données avec --import essid
Dans cette étape, vous allez ajouter un nom de réseau (ESSID) à votre base de données nouvellement créée. La base de données doit savoir pour quels ESSID vous souhaitez pré-calculer les PMK.
Nous utiliserons l'option --import essid. Cette option peut prendre un seul ESSID comme argument depuis la ligne de commande ou une liste d'ESSID à partir d'un fichier. Pour ce laboratoire, nous importerons un seul ESSID nommé MyHomeWiFi.
Exécutez la commande suivante pour importer l'ESSID dans votre base de données pmk_db :
airolib-ng pmk_db --import essid MyHomeWiFi
Vous verrez une sortie indiquant que la base de données est en cours de lecture et qu'un ESSID a été écrit.
Sortie attendue :
Reading file...
Wrote 1 ESSIDs and 0 PMKs.
Done.
Maintenant, votre base de données connaît le réseau MyHomeWiFi et est prête à stocker les PMK qui lui sont associées.
Importer une liste de mots pour calculer les PMK pour cet ESSID
Dans cette étape, vous allez importer une liste de mots de passe (une wordlist) et demander à airolib-ng de calculer les PMK pour l'ESSID que nous avons importé à l'étape précédente.
Le script de configuration de ce laboratoire a déjà créé un petit fichier de liste de mots pour vous, nommé wordlist.txt, dans le répertoire ~/project. Nous utiliserons l'option --import pwd pour lire ce fichier. Pour chaque mot de passe dans wordlist.txt, airolib-ng calculera le PMK pour l'ESSID MyHomeWiFi et stockera le résultat dans la base de données.
Exécutez la commande suivante :
airolib-ng pmk_db --import pwd wordlist.txt
L'outil lira les mots de passe du fichier et calculera les PMK. Notre wordlist.txt contient 4 mots de passe, et nous avons 1 ESSID dans la base de données, il calculera donc et stockera 4 PMK.
Sortie attendue :
Reading file...
Wrote 0 ESSIDs and 4 PMKs.
Done.
Votre base de données contient maintenant les clés pré-calculées pour le réseau MyHomeWiFi pour chaque mot de passe de wordlist.txt.
Exécuter une opération par lots pour vérifier l'intégrité de la base de données
Dans cette étape, vous apprendrez comment vérifier le contenu de votre base de données et calculer les paires de PMK manquantes. C'est une étape de maintenance cruciale, en particulier pour les grandes bases de données.
L'option --batch effectue une opération complète. Elle trouve toutes les combinaisons par paires d'ESSID et de mots de passe dans la base de données et calcule le PMK pour toute paire qui n'en possède pas encore. Elle sert également de moyen de vérifier l'intégrité des PMK existants en les recalculant et en les comparant.
Exécutez la commande par lots sur votre base de données pmk_db :
airolib-ng pmk_db --batch
Étant donné que nous venons de calculer toutes les paires possibles à l'étape précédente (1 ESSID x 4 mots de passe), la commande constatera qu'aucun nouveau PMK ne doit être calculé. Elle se contentera de vérifier ceux qui existent déjà.
Sortie attendue :
All PMKs have been computed for all ESSIDs.
Nothing to do.
Si vous ajoutiez un nouvel ESSID ou une nouvelle liste de mots, l'exécution de la commande --batch serait le moyen le plus efficace de mettre à jour la base de données avec toutes les nouvelles combinaisons de PMK.
Résumé
Félicitations ! Vous avez créé et géré avec succès une base de données de clés maîtres pré-calculées (PMK) à l'aide de airolib-ng.
Dans ce laboratoire, vous avez appris à :
- Comprendre le concept et l'avantage d'une base de données PMK pour accélérer le cracking WPA/WPA2.
- Créer une nouvelle base de données vide à l'aide de
airolib-ng --new. - Importer un nom de réseau dans la base de données à l'aide de
airolib-ng --import essid. - Importer une liste de mots et calculer les PMK correspondants à l'aide de
airolib-ng --import pwd. - Exécuter une opération par lots pour vérifier et mettre à jour la base de données à l'aide de
airolib-ng --batch.
Avec ces connaissances, vous pouvez maintenant construire des bases de données PMK plus grandes et plus complètes pour accélérer considérablement vos évaluations de sécurité WPA/WPA2. La base de données créée pmk_db pourrait être utilisée avec aircrack-ng comme ceci : aircrack-ng -r pmk_db your_capture_file.cap.
