Giter VIP home page Giter VIP logo

heigvd-swi-labo2-mac-2's Introduction

Livrables

Échéance

Introduction

Travail à réaliser

Sécurité des réseaux sans fil

Laboratoire 802.11 MAC 2

A faire en équipes de deux personnes

Introduction

L’une des informations de plus intéressantes et utiles que l’on peut obtenir à partir d’un client sans fils de manière entièrement passive (et en clair) se trouve dans la trame Probe Request :

Probe Request et Probe Response

Dans ce type de trame, utilisée par les clients pour la recherche active de réseaux, on peut retrouver :

  • L’adresse physique (MAC) du client (sauf pour dispositifs iOS 8 ou plus récents et des versions plus récentes d'Android).
    • Utilisant l’adresse physique, on peut faire une hypothèse sur le constructeur du dispositif sans fils utilisé par la cible.
    • Elle peut aussi être utilisée pour identifier la présence de ce même dispositif à des différents endroits géographiques où l’on fait des captures, même si le client ne se connecte pas à un réseau sans fils.
  • Des noms de réseaux (SSID) recherchés par le client.
    • Un Probe Request peut être utilisé pour « tracer » les pas d’un client. Si une trame Probe Request annonce le nom du réseau d’un hôtel en particulier, par exemple, ceci est une bonne indication que le client s’est déjà connecté au dit réseau.
    • Un Probe Request peut être utilisé pour proposer un réseau « evil twin » à la cible.

Il peut être utile, pour des raisons entièrement légitimes et justifiables, de détecter si certains utilisateurs se trouvent dans les parages. Pensez, par exemple, au cas d'un incendie dans un bâtiment. On pourrait dresser une liste des dispositifs et la contraster avec les personnes qui ont déjà quitté le lieu.

A des fins plus discutables du point de vue éthique, la détection de client s'utilise également pour la recherche de marketing. Aux Etats Unis, par exemple, on "sniff" dans les couloirs de centres commerciaux pour détecter quelles vitrines attirent plus de visiteurs, et quelle marque de téléphone ils utilisent. Ce service, interconnecté en réseau, peut aussi déterminer si un client visite plusieurs centres commerciaux un même jour ou sur un certain intervalle de temps.

Travail à réaliser

1. Probe Request Evil Twin Attack

Nous allons nous intéresser dans cet exercice à la création d'un evil twin pour viser une cible que l'on découvre dynamiquement utilisant des probes.

Développer un script en Python/Scapy capable de detecter une STA cherchant un SSID particulier - proposer un evil twin si le SSID est trouvé (i.e. McDonalds, Starbucks, etc.).

Pour la détection du SSID, vous devez utiliser Scapy. Pour proposer un evil twin, vous pouvez récupérer votre code du labo 1 ou vous servir d'un outil existant.

Question : comment ça se fait que ces trames puissent être lues par tout le monde ? Ne serait-il pas plus judicieux de les chiffrer ?

Ces trames interviennent dans la phase de détection des réseaux environnants. Il est donc impossible de dissimuler le contenu de ces dernières, étant donné que ce stade, aucun secret n'existe entre un client (STA) et les APs.

Question : pourquoi les dispositifs iOS et Android récents ne peuvent-ils plus être tracés avec cette méthode ?

Car ces appareils disposent de système ayant pour fonction de changer régulièrement leur adresse MAC. Ce procédé s'appelle MAC address randomization, et limite donc de théoriquement la possibilité de suivre une même adresse dans le temps et l'espace.

Cette méthode n'est cependant pas toujours efficace ou suffisante (source).

2. Détection de clients et réseaux

a) Développer un script en Python/Scapy capable de lister toutes les STA qui cherchent activement un SSID donné

b) Développer un script en Python/Scapy capable de générer une liste d'AP visibles dans la salle et de STA détectés et déterminer quelle STA est associée à quel AP. Par exemple :

STAs                                       APs

B8:17:C2:EB:8F:8F             08:EC:F5:28:1A:EF

9C:F3:87:34:3C:CB             00:6B:F1:50:48:3A

00:0E:35:C8:B8:66             08:EC:F5:28:1A:EF

3. Hidden SSID reveal

Développer un script en Python/Scapy capable de reveler le SSID correspondant à un réseau configuré comme étant "invisible".

Question : expliquer en quelques mots la solution que vous avez trouvée pour ce problème ?

Afin de résoudre ce problème, nous avons filtré deux types de paquets : les Beacons et les Probe Response.

En effet, un AP ayant décidé de masquer son SSID produira des Beacons avec un SSID vide ou même aucun champ SSID. Cette première information permet donc de détecter et stocker les BSSID correspondant à des réseaux masqués.

Enfin, les trames de type Probe Response (générées par les APs) contiennent le SSID, et ce même pour les réseaux masqués. Il nous suffit donc de chercher les associations entre les BSSIDs trouvés à la première étape et ceux de cette dernière afin de révéler de tels réseaux.

Livrables

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

  • Script evil twin abondamment commenté/documenté

  • Scripts détection STA et AP abondamment commenté/documenté

  • Script SSID reveal abondamment commenté/documenté

  • Captures d'écran du fonctionnement de chaque script

  • Réponses aux éventuelles questions posées dans la donnée. Vous répondez aux questions dans votre README.md ou dans un pdf séparé

  • Envoyer le hash du commit et votre username GitHub par email au professeur et à l'assistant

Échéance

Le 16 mars 2020 à 23h59

heigvd-swi-labo2-mac-2's People

Contributors

pete842 avatar jzaehrin 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.