Phishing Wi-Fi
Dates des modifications : | Intervenants : | Modifications apportées : |
---|---|---|
- | Matthieu BILLAUX @_euzebius |
Nhammmber One mentor ! |
Dimanche 19 Juin 2022 | Mudsor MASOOD mudpak |
Mise à jour vers blog (1.0.1) |
Samedi 4 décembre 2021 | C4rr3D45 | Relecture et validation (0.0.5) |
Samedi 4 Décembre 2021 | mudpak | Finalisation du document (0.0.4) |
Vendredi 3 Décembre 2021 | mudpak | Ajout de WifiPhisher et de WifiPumpkin3 (v0.0.3) |
Mardi 2 Décembre 2021 | mudpak | Ajout de Fluxion (v0.0.2) |
Dimanche 28 Novembre 2021 | mudpak | Création du document (v0.0.1) |
Samedi 13 Novembre 2021 | C4rr3D45 | Initiateur du projet (v0.0.0) |
0. Avant-propos
Ce document a pour but de guider l’utilisateur dans :
- L’installation.
- Configuration.
- Mise en place de démonstrations.
De solutions de phishing Wifi.
Avertissement Légal :
Les auteurs de ce document ne sont pas responsables des utilisations abusives qui pourraient en être faites.
Ce document a été créé pour démontrer à quel point il est facile d’obtenir des identifiants d’un réseau sans fil en utilisant des méthodes d’ingénierie sociale.
1. Prérequis
Il faut
- Avoir les autorisations légales pour effectuer les opérations sur les réseaux wifi.
- Avoir accès à internet sur le poste utilisé (selon le type d’attaque).
- Avoir un point d’accès ou à défaut un téléphone avec connexion réseau pour servir de point d’accès.
- Avoir les droits « root » sur le poste.
- Avoir deux cartes réseau Wifi :
- Une qui supporte l’injection de paquets, qui va permettre de visualiser les réseaux disponibles et lancer les attaques,
- Une qui servira à créer et diffuser le point d’accès malveillant.
Remarque :
Chaque outil a été exécuté sous des systèmes différents pour des raisons d’incompatibilité, c’est pourquoi dans chaque cas sera précisé l’environnement d’exécution de l’outil.
2. Point d’accès
Avant de pouvoir commencer les attaques, nous allons mettre en place un point d’accès qui sera ciblé lors des démonstrations.
2.1 Configuration
Nous avons mis en place un point d’accès avec la configuration suivante :
- SSID : Potato
- Mot de passe : azerty123@
2.2 Mise en place
Nous n’avons pas besoin d’un matériel ou configuration spécifique c’est pourquoi le point d’accès sera configuré sur un téléphone portable.
Ci-dessous l’exemple sous un smartphone Xiaomi.
Aller dans les paramètres, cliquer sur
- Point d’accès Wi-Fi mobile
Cliquer sur
- Configurer le point d’accès
Nous allons modifier les paramètres suivants :
- Réseau SSID : Par le nom qui sera diffusé dans notre cas « Potato »
- Mot de passe : Par le mot de passe qui sera utilisé pour se connecter au point d’accès, dans notre cas « azerty123@ »
Les autres paramètres restent inchangés pour nos besoins.
Lorsque les modifications sont terminées appuyer sur le symbole de validation situé dans le coin supérieur droit de l’écran pour valider les changements.
3. Fluxion
L’outil sera exécuté sur la distribution Kali Linux sous Raspberry PI4.
Vous pouvez rejoindre le serveur discord officiel de la solution via l’adresse suivante :
1 |
|
3.1 Récupération du dépôt
Pour récupérer le script depuis le dépôt GitHub, saisir la commande suivante :
1 |
|
Cette commande va copier le dépôt sur le poste et créer un dossier nommé « fluxion » :
3.2 Vérification du répertoire
Nous pouvons vérifier si le répertoire a bien été créé avec la commande suivante :
1 |
|
Nous obtenons les détails relatifs à ce répertoire :
Pour la suite nous allons avoir besoin de nous déplacer dans le répertoire pour faire les actions, saisir la commande suivante :
1 |
|
Vous pouvez également saisir la commande « pwd » pour connaitre le chemin complet :
3.3 Contenu du répertoire
Vous pouvez visualiser le contenu du répertoire via la commande :
1 |
|
Vous pouvez d’ores et déjà identifier le script « fluxion.sh » que nous allons exécuter par la suite.
3.4 Première exécution
Saisir la commande suivante :
1 |
|
Fluxion devrait nous informer sur les prérequis manquants pour son fonctionnement.
Il nous informe également qu’il est possible d’installer ces prérequis en spécifiant le paramètre « -i » lors de l’exécution de celui-ci.
Tant qu’il manquera une dépendance, vous aurez un message « missing dépendencies : try to install ….. ». Vous aurez donc certainement à recommencer plusieurs fois jusqu’à obtenir toutes les dépendances en fonction de votre distribution.
3.4.1 Installation des prérequis
Saisir la commande suivante :
1 |
|
Les éléments manquants devraient commencer à s’installer, cela peut prendre un certain temps :
3.5 Select your language
Il faut choisir la langue qui sera utilisée par Fluxion :
Dans notre cas nous allons choisir le Français :
3.6 Phase 1 : Sélectionnez une attaque wireless pour le point d’accès
Il est important de noter qu’il faut dans un premier temps capturer le Handshake et ensuite créer le portail captif.
Définition Wikipédia :
Le handshaking est un processus automatisé de négociation qui établit les paramètres d'une communication entre deux entités avant que la communication commence.
3.6.1 Handshake Snooper
Choisir le paramètre « 2 » :
3.6.2 Select a wireless interface for target searching
Il faut spécifier l’interface qui sera utilisée pour scanner les réseaux wifi, dans le cas présent nous disposons de deux cartes :
Choisir la carte que vous avez choisi pour cette opération (ici celle du wlan1) -> « 2 » :
3.6.3 Sélectionnez un canal
Vous pouvez scanner les réseaux sans fil via les paramètres suivants :
Puisque notre point d’accès précédemment mis en place est configuré sur du 2,4Ghz nous allons choisir la première option :
3.6.4 Scanner Fluxion
Une fenêtre apparait avec les réseaux wifi qui ont été détectés, dès que le réseau cible apparait, effectuer la combinaison des touches « ctrl + c » pour arrêter le scan :
3.6.5 Wifi List
La liste obtenue des réseaux apparait, vous pouvez choisir le réseau à cibler, les « 0 » ne sont pas à préciser avant le nombre :
Remarques :
On peut noter également que certaines lignes sont colorées en vert. Il s’agit des points d’accès wifi ayant au moins 1 équipement connecté dessus. Ce sont donc les cibles de choix.
L’autre particularité de cette liste, c’est de repérer les points d’accès ayant un fort signal proche de votre antenne. Plus le signal est fort, plus vous aurez une attaque efficace.
Dans notre cas le réseau cible est le numéro « 36 » :
3.6.6 Select a wireless interface for target tracking
Sélectionner l’interface souhaitée :
Si vous n’êtes pas sûr de votre choix, choisir le paramètre « 3 » :
Vous pouvez désormais voir les informations du point d’accès cible :
3.7 Phase 2 : Sélectionnez une méthode de récupération de Handshake
Vous avez différents choix pour récupérer le Handshake :
Dans notre cas j’ai choisi l’option « 2 » :
3.7.1 Select an interface for monitoring & jamming
Définition Jamming :
Le « jamming » est un acte volontaire qui consiste à utiliser un brouilleur pour brouiller un signal afin de le rendre inexploitable.
Sélectionner l’interface (carte) qui permet de faire de l’injection de paquets :
Plus le signal de votre antenne sera fort, plus votre « jamming » sera efficace.
Dans notre cas c’est la carte « 1 » :
3.7.2 Sélectionnez une méthode de vérification du hash
Vous pouvez vérifier le hash via différentes méthodes :
Puisque la seconde méthode est recommandée, nous allons la choisir :
3.7.3 How often should the verifier check for a handshake ?
Vous pouvez choisir différents intervalles de vérification du handshake :
On peut être amener à choisir une fréquence moins élevée afin de leurrer le point d’accès cible qui détectera moins facilement une attaque potentielle.
Puisque le premier paramètre est recommandé, nous allons l’utiliser :
3.7.4 How should verification occur ?
Vous pouvez choisir la fréquence de vérification du Handshake :
Puisque la seconde méthode est recommandée, nous allons l’utiliser :
Un certain nombre de fenêtres sont ouvertes par l’outil comme ci-dessous.
3.7.5 Handshake Captor
Cette fenêtre va permettre de suivre la capture du Handshake :
A Noter :
La partie haute correspond au point d’accès cible et la partie basse aux « n » équipement(s) connectés dessus.
3.7.6 Handshake Snooper Arbiter Log
Comme nous l’avons indiqué précédemment, voici la fenêtre qui va vérifier le Handshake à intervalle régulière :
3.7.7 Deauthentication all clients
Cette fenêtre permet de visualiser les paquets de « deauthentication » qui sont envoyés à point d’accès et ainsi déconnecter les appareils.
Ces derniers vous ensuite chercher à se reconnecter et nous pourrons capturer le handshake de cet échange de vérification à ce moment :
3.7.8 Handshake Snooper Arbiter Log
Dès lors que le handshake a été capturé (Success s’affiche en vert) nous pouvons fermer les fenêtres et retourner à la fenêtre principale de Fluxion :
3.7.9 Handshake Snooper
Puisque vous avons le handshake, nous pouvons tenter de cracker le hash du mot de passe du wifi cible avec son outil préféré (ex. hashcat) ou continuer avec une autre attaque :
Choisir le premier paramètre :
3.8 Phase 3 : Portail captif
3.8.1 Sélectionnez une attaque wireless pour le point d’accès
Nous pouvons choisir l’attaque souhaitée. Vous pouvez constater que contrairement au lancement initial de Fluxion, nous avons désormais un point d’accès déjà sélectionné dans le coin droit de la fenêtre :
Puisque nous disposons déjà du handshake, cette fois nous allons créer un portail captif, pour faire cela choisir le premier paramètre :
3.8.2 Fluxion is targetting the access point above
Il faut confirmer le point d’accès cible :
3.8.3 Select a wireless interface for target tracking
Sélectionner une interface :
Si vous n’êtes pas certain de votre choix, sélectionne la troisième option :
3.8.4 Select an interface for jamming
Sélectionner l’interface qui est capable de faire de l’injection de paquets :
Rappel :
Il faut prendre l’antenne la plus puissante.
Dans notre cas c’est la première interface :
3.8.5 Select an interface for the access point
Sélectionner l’interface qui va créer le point d’accès malveillant :
Dans notre cas ça sera l’interface « 3 » :
3.8.6 Select a method of deauthentication
Cette étape va permettre à Fluxion de forcer la déconnection des appareils (clients) du point d’accès sur lequel ils étaient connectés.
Sélectionner la méthode qui sera utilisée pour « déauthentifier » les clients depuis le point d’accès initial :
Dans notre cas nous utiliserons la première méthode :
3.8.7 Select an access point service
Vous pouvez choisir le service qui sera utilisé pour créer le point d’accès malveillant :
Puisque le premier paramètre est recommandé, nous allons utiliser cette option :
3.8.8 Méthode de vérification du mot de passe
Différentes méthodes sont proposées pour vérifier le mot de passe qui sera capturé (comparaison du hash contenu dans le Handshake et celui capturé lors de la nouvelle attaque) :
Dans notre cas nous allons utiliser la première méthode car la seconde n’est pas recommandée :
3.8.9 Un hash pour le point d’accès ciblé a été trouvé
Puisque vous avons capturé le handshake précédemment nous pouvons l’utiliser pour vérifier le mot de passe :
Sélectionner le premier paramètre :
3.8.10 Sélectionnez une méthode de vérification du hash
Plusieurs méthodes permettent de vérifier le hash :
Nous allons utiliser la seconde méthode :
3.8.11 Sélectionnez le certificat SSL source pour le portail captif
On peut utiliser un certificat SSL ou pas :
Il est recommandé de créer un certificat SSL, c’est pourquoi nous allons utiliser la première méthode :
3.8.12 Select an internet connectivity type for the rogue network
Il est possible soit de donner accès à internet une fois que la cible est connectée au faux point d’accès :
Dans notre cas le but est simplement de récupérer le mot de passe et laisser la cible se connecter à nouveau sur le point d’accès initial, c’est pourquoi nous allons choisir la première méthode :
3.8.13 Sélectionnez une interface de portail captif pour le réseau malveillant
Il faut choisir un template qui sera affiché lorsque la cible sera connectée au point d’accès malveillant :
Voici un extrait des templates disponibles par défaut :
Voic un tableau recensant les templates en Français : |Nom du template : |Numéro du template :| |:-:|:-:| |Generic |08 | |Bbox |32 | |Djaweb |38 | |Freebox |41 | |Livebox |52 | |Proximux |59 | |SFR |61 |
Pour choisir le template souhaité, saisir le numéro de celui-ci comme ci-dessous :
Un certain nombre de fenêtres sont ouvertes pour la suite des événements.
3.8.14 Fluxion AP – DHCP Service
Cette fenêtre permet de suivre le service DHCP, en charge de la distribution de la configuration réseau aux appareils :
3.8.15 Fluxion AP – Service
Cette fenêtre permet de connaitre le statut du point d’accès malveillant :
3.8.16 Fluxion AP – Authenticator
Cette fenêtre permet de voir si des clients sont connectés au point d’accès, dans le cas présent nous avons un client connecté :
3.8.17 Fluxion AP – DNS Service
Cette fenêtre permet de suivre l’état du service DNS :
3.8.18 Fluxion – Web Service
Cette fenêtre permet de suivre l’état du service web, les requêtes faites par le client connecté au point d’accès :
3.8.19 Fluxion AP – Jammer Service
Cette fenêtre permet de voir les requêtes de « deauthentification » qui sont envoyées au point d’accès initialement cloné, ainsi on s’assure que les clients vont se connecter à notre point d’accès en pensant que l’autre ne fonctionne pas :
3.8.20 Fluxion AP – Authenticator
Dès lors que le mot de passe a été saisie par l’utilisateur, et s’il est valide alors il sera stocké dans un fichier et Fluxion vous en informera comme ci-dessous :
Le chemin ici : /home/kali/fluxion/attacks/Captive Portal/netlog/LeNomDuFichier.log
3.8.21 Saisie mot de passe par le client
Du côté du client connecté, puisque nous avons choisir un template « générique », nous obtenons la page ci-dessous qui nous invite à saisir le mot de passe du réseau :
3.9 Phase 4 : Obtention du mot de passe
3.9.1 Captive Portal
Puisque les attaques sont terminées et que nous avons obtenu le mot de passe nous pouvons quitter l’outil :
3.9.2 Consultation du mot de passe
Nous pouvons consulter le mot de passe précédemment obtenu dans le fichier spécifié par l’outil :
4. WifiPhisher
L’outil sera exécuté sur la distribution Kali Linux sous Raspberry PI4.
4.1 Récupération du dépôt
Saisir la commande suivante :
1 |
|
Cette commande va copier le dépôt sur le poste et créer un dossier nommé « wifiphisher » :
4.2 Vérification du répertoire
Nous pouvons vérifier si le répertoire a bien été créé avec la commande suivante :
1 |
|
Nous obtenons les détails relatifs à ce répertoire :
Pour la suite nous allons avoir besoin de nous déplacer dans le répertoire pour faire les actions, saisir la commande suivante :
1 |
|
Vous pouvez également saisir la commande « pwd » pour connaitre le chemin complet :
4.3 Contenu du répertoire
Vous pouvez visualiser le contenu du répertoire via la commande :
1 |
|
Vous pouvez d’ores et déjà identifier le script « setup.py » que nous allons exécuter par la suite.
4.4 Installation de WifiPhisher
Comme indiqué dans la documentation si nous utilisons la commande ci-dessous, elle ne fonctionne pas car il faut utiliser python3 :
Saisir la commande suivante pour lancer l’installation de l’outil :
1 |
|
Une erreur apparait nous informant des prérequis manquants :
4.5 Installation des dépendances
Pour installer les prérequis, saisir la commande suivante :
1 |
|
Lorsque les prérequis précédents sont installés nous pouvons exécuter à nouveau la commande pour installer l’outil via la commande suivante :
1 |
|
Lorsque les dépendances manquantes et l’outil seront installés vous devriez obtenir un résultat similaire à ci-dessous :
4.6 Exécution
Si on tente de lancer l’outil sans droits élevés comme ci-dessous un message d’erreur apparait :
WifiPhisher nous informe qu’il faut exécuter la commande en tant que root :
Pour l’exécuter l’outil, saisir la commande suivante :
1 |
|
4.6.1 Scan des réseaux
Dès le lancement de l’outil, un scan des réseaux commence, pour choisir le réseau à cibler, il faut le sélectionner et appuyer sur la touche « Entrée » :
4.6.2 Available Phishing Scenarios
Différents scénarios sont possibles :
- 1 – Firmware Upgrade Page : une page de mise à jour du firmware s’affiche
- 2 – 0Auth Login Page : une page proposant l’authentification 0Auth s’affiche
- 3 – Browser Plugin Update : une page de mise à jour d’un plugin s’affiche
- 4 – Network Manager Connect : une page avec une erreur réseau s’affiche
Dans notre cas nous allons utiliser la première méthode :
- 1 – Firmware Upgrade Page
4.6.3 Informations
Les informations sur le réseau cible s’affichent :
L’attaque se lance de la même manière qu’avec Fluxion, une « déauthentication » est faite des clients depuis le point d’accès initial les forçant à se connecter au point d’accès malveillant.
Dans notre cas on peut voir le réseau « légitime » et le réseau « malveillant » :
4.6.4 Connected Victims
Dès qu’un client se connecte à notre point d’accès, nous en sommes informés :
4.6.5 HTTP requests
Sur l’appareil connecté, la personne est invitée à fournir les informations sur le navigateur :
4.6.6 Saisie du mot de passe par le client
Puisque nous avons choisi un template « générique » pour le portail captif, le client sera invité à saisir le mot de passe sur une page à similaire à celle-ci-dessous :
4.6.7 Obtention du mot de passe
Dès que les informations ont été renseignées dans le formulaire, nous pouvons voir ce qui a été saisi comme ci-dessous.
Nous venons de récupérer le mot de passe comme on peut le voir dans la requête « POST » envoyée par le client :
4.6.8 Fermeture de l’outil
Puisque l’attaque est terminée nous pouvons fermer l’outil et voir un récapitulatif de ce qui a été effectué ainsi que le mot de passe précédemment récupéré :
5. WifiPumpkin3
L’outil sera exécuté sur la distribution Raspbian sous Raspberry PI4.
Vous pouvez rejoindre le serveur Discord officiel de l’outil via l’adresse suivante :
1 |
|
Contrairement aux cas précédents, ici nous allons partir du principe que
- Vous avez déjà le mot de passe du réseau cible
- Vous effectuez déjà une attaque pour deauth les clients d’un réseau légitime.
Le but ici est d’écouter le trafic afin de voir les requêtes faites par les clients, et ainsi potentiellement récupérer des identifiants saisis dans les formulaires lors de la navigation internet.
Ainsi dans la suite nous allons couvrir deux cas :
- Cas 1 – noproxy : pour récupérer le mot de passe et ne pas donner accès à internet au client
- Cas 2 – CaptiveFlsak : pour récupérer le mot de passe et donner accès à internet au client
5.1 Installation des dépendances
Dans la documentation il est recommandé d’utiliser la commande suivante pour installer les dépendances mais elle n’a pas fonctionné de notre côté :
1 |
|
C’est pourquoi je vous recommande à la place d’exécuter la commande ci-dessous :
1 |
|
5.2 Récupération du dépôt
Saisir la commande suivante :
1 |
|
Cette commande va copier le dépôt sur le poste et créer un dossier nommé « wifipumpkin3 » :
5.3 Vérification du répertoire
Nous pouvons vérifier si le répertoire a bien été créé avec la commande suivante :
1 |
|
Nous obtenons les détails relatifs à ce répertoire :
Pour la suite nous allons avoir besoin de nous déplacer dans le répertoire pour faire les actions, saisir la commande suivante :
1 |
|
Vous pouvez également saisir la commande « pwd » pour connaitre le chemin complet :
5.4 Contenu du répertoire
Vous pouvez visualiser le contenu du répertoire via la commande :
1 |
|
5.5 Installation de l’outil
Saisir la commande suivante :
1 |
|
Lorsque l’installation de l’outil avec ses dépendances manquantes sera terminée vous obtiendrez un résultat similaire à ci-dessous :
5.6 Lancement de l’outil
Saisir la commande suivante :
1 |
|
5.6.1 Page d’accueil
Une fenêtre à semblable à celle-ci-dessous apparait :
5.6.2 Configuration du point d’accès
Saisir la commande suivante pour connaitre l’état actuel de la configuration du point d’accès :
- ap
Nous pouvons constater que :
- Le SSID du réseau sera « Wifi Pumpkin 3 ».
- Le channel de diffusion sera le numéro « 11 ».
- Qu’il n’y a pas d’interface attribué pour l’instant à ce point d’accès « None ».
- Que le point d’accès n’est pas en cours d’exécution via le champ « Status ».
- Que le champ « Security » est à « false » ce qui signifie qu’il n’y aura pas de demande de mot de passe pour se connecter au point d’accès.
5.7 Cas 1 : noproxy
Rappel :
Pour ne pas donner accès à internet au client
5.7.1 Configuration générale
Nous allons modifier les paramètres pour les adapter à notre situation, saisir les commandes suivantes :
- set interface wlan0 : L’interface qui sera utilisée pour créer et diffuser le point d’accès
- set ssid Potato : le nom du point d’accès
- set proxy noproxy
- Ignore pydns_server
- ap : Pour afficher la configuration du point d’accès (cf figure ci-dessous)
5.7.2 Configuration du mot de passe
Saisir les commandes suivantes :
1 2 3 4 |
|
Par défaut un mot de passe est déjà prédéfini mais nous pouvons en définir un personnalisé :
Pour définir un mot de passe personnalisé saisir les commandes suivantes :
1 2 3 4 |
|
On peut voir que les changements ont bien été pris en compte :
5.7.3 Démarrage du point d’accès
Pour démarrer le point d’accès, saisir la commande suivante :
1 |
|
5.7.4 pydhcp_server
5.7.4.1 BOOTREQUEST
Nous pouvons voir la requête qui est faite par le client :
5.7.4.2 BOOTREPLY
Voici la requête de réponse envoyée par le serveur DHCP au client, dans le cas présent une configuration réseau est donnée au client par le serveur :
5.7.4.3 BOOTREQUEST
Nous pouvons voir que le client a réussi à se connecter avec succès au point d’accès après avoir obtenu la configuration réseau par le serveur DHCP :
A partir de ce stade nous pouvons voir les requêtes émises par le client :
5.7.5 Connexion du client
Le client est invité à s’authentifier au portail avec les informations suivantes :
5.7.6 Obtention du mot de passe
Dès lors que les informations saisies dans le formulaire sont envoyées elles sont aussitôt affichées dans Wifipumpkin3 :
5.8 Cas 2 : CaptiveFlask
Rappel :
Pour donner accès à internet au client
Dans le cas présent nous allons garder la même configuration que le cas précédent excepté le paramètre « set proxy noproxy » qui sera remplacé par « set proxy captiveflask », pour faire cela saisir la commande suivante :
1 |
|
Le portail captif va démarrer et afficher la configuration :
Comme dans le cas précédent non seulement nous allons pouvoir récupérer le mot de passe de connexion mais aussi et surtout de sniffer le traffic des clients connectés :
6. Conclusion
A travers ces différentes démonstrations vous avez pu constater comment il est facile d’usurper des réseaux sans fils et qu’en profitant de l’erreur humaine on peut conduire des attaques qui ne requièrent pas forcément une expertise technique avec des conséquences réel et graves.
Pour aller plus loin dans le Phishing il est tout à fait possible d’utiliser d’autres templates fournis par les outils voire même de créer afin de les adapter selon votre contexte.
Dans une prochaine version de ce document mon ami C4rr3D45 vous parlera en détails de chacun des outils vus précédemment et comment aller plus loin dans l’exploitation des diverses fonctionnalités avancées.
7. Ressources
Vous trouverez ci-dessous les ressources qui ont été utilisées tout au long du document.
7.1 Drivers ALFA
7.2 Fluxion
7.3 WifiPhisher
- https://wifiphisher.org/
- https://github.com/wifiphisher/wifiphisher
- https://github.com/wifiphisher/wifiphisher/issues/580
7.4 WifiPumpkin3
- https://wifipumpkin3.github.io/docs/getting-started
- https://wifipumpkin3.github.io/docs/getting-started#installation
- https://github.com/P0cL4bs/wifipumpkin3