GithubHelp home page GithubHelp logo

heigvd-swi-labo5-wpa-pmkid's Introduction

Sécurité des réseaux sans fil

Laboratoire WPA - PMKID

A faire en équipes de deux personnes

Développement à faire en Python 3

Étudiants : Stefan Dejanovic, Nathanaël Mizutani

Pour cette partie pratique, vous devez être capable de :

  • A partir d’une capture Wireshark, extraire la valeur de la PMKID utilisant Scapy
  • Ecrire un script Python pour Cracker la passphrase WPA utilisant la PMKID

Pour l'explication de l'attaque, référez vous à la video suivante :

PMKID attack

Travail à réaliser

1. Obtention de la PMKID et des paramètres pour la dérivation de la PMK

Dans cette première partie, vous allez réutiliser le script de dérivation de clés que vous avez rendu pour le labo WPA. Il vous faudra également le fichier de capture PMKID_handshake.pcap contenant une tentative d’authentification WPA pas réussie réalisée par un attaquant.

La PMKID est contenue dans le premier message du 4-way handshake de certains AP. Les AP de l'opérateur Sunrise sont vulnérables. Il s'agit donc d'un AP de Sunrise qui a été utilisé pour faire la capture.

Voici ce que vous devez faire pour cette première partie :

  • Modifier votre script WPA pour qu’il récupère automatiquement, à partir de la capture, la valeur de la PMKID
  • Vous aurez aussi besoin de récupérer les valeurs du ssid, APmac et Clientmac (ceci est normalement déjà fait par votre script)

2. Cracker la Passphrase utilisant l'attaque PMKID

L'attaque PMKID est une attaque par dictionnaire qui calcule systématiquement une PMK à partir de la passphrase. Cette PMK est utilisée comme clé pour SHA-1 calculé sur une concatenation du string "PMK Name" et les adresses MAC de l'AP et la STA. Les premiers 128 bits (6 octets) du résultat de ce calcul doivent correspondre à la valeur de la PMKID obtenue à partir du premier message du 4-way handshake.

Utilisant votre script précédent, le modifier pour réaliser les taches suivantes :

  • Lire une passphrase à partir d’un fichier (wordlist) → La passphrase utilisée dans la capture es admin123
  • Dériver la PMK à partir de la passphrase que vous venez de lire et des autres éléments nécessaires contenus dans la capture (cf exercice 1)
  • Calculer la PMKID (cf vidéo YouTube)
  • Comparer la PMKID calculée avec celle récupérée de la capture :
    • Identiques → La passphrase utilisée est correcte
    • Différents → Essayer avec une nouvelle passphrase

Remarque: On peut voir dans le screenshot ci-dessous que lors du premier test nous n'avons pas la bonne passphrase dans la liste, tandis que dans la 2ème tentative elle y est.

step1and2

3. Attaque hashcat

A manière de comparaison, réaliser l'attaque sur le fichier de capture utilisant la méthode décrite ici.

Remarque: L'attaque a été faite sur une VM Kali.

On commence par convertir le fichier pcap vers un format compatible avec hashcat :

pcap formating

On lance ensuite hashcat sur le fichier pmikidlist.16800:

hashcat attack

Après 12 minutes, hashcat trouve le PMKID (admin123) de la capture wireshark :

PMKID found

Livrables

Un fork du repo original . Puis, un Pull Request contenant vos noms et :

  • Script pmkid_attack.py abondamment commenté/documenté + fichier wordlist
    • Capture d’écran de votre script en action
  • Captures d'écran de votre exercice 3
  • Envoyer le hash du commit et votre username GitHub et les noms des participants par email au professeur et à l'assistant

Échéance

Le 04 mai 2020 à 23h59

heigvd-swi-labo5-wpa-pmkid's People

Contributors

natmiz avatar stefandejanovicheig avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.