─ Un système de phishing sans fil entièrement automatique intégré à l'IoT par Şefik Efe Altınoluk ─
N'essayez pas ce logiciel sur des utilisateurs/systèmes pour lesquels vous n'avez aucune autorisation légale. L'utilisation du Wi-Phi
pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Je n'assume aucune responsabilité et ne suis pas responsable de toute mauvaise utilisation ou dommage causé par ce logiciel, la documentation et tout ce qui se trouve dans ce référentiel.
(VOIR #4) Parce que Wi-Phi
peut être utilisé de manière malveillante, je ne partage pas la plupart des parties du code source. Contactez-moi depuis LinkedIn pour tout cas professionnel/académique/éducatif dans lequel vous avez besoin de l'intégralité du code fonctionnel.
Ce projet est sous licence Gnu General Public License version 3.0.
Voir LICENCE pour plus de détails.
Wi-Phi
est un system
phishing
automatique entièrement intégré aux cartes IoT
(Internet des objets) sans fil.
Il peut être considéré comme un Wifi Pineapple
avancé et riche en fonctionnalités.
Wi-Phi
est capable d'hameçonner les utilisateurs qui exécutent au moins l'un des logiciels suivants :
Les principaux composants du Wi-Phi
sont :
MicroPython
. J'utilise Deneyap Kart
basé sur ESP32
.esp32-20220117-v1.18.bin
Procurez-vous un appareil IoT ESP32.
Connectez l'ESP32 à votre ordinateur et obtenez le port série sur lequel l'ESP32 est connecté.
COMx
/dev/ttyUSBx
, soit /dev/tty/USBx
Exécutez ensuite les commandes suivantes pour GNU/Linux.
[efe@lhost ~] $ git clone https://github.com/f4T1H21/Wi-Phi.git && cd Wi-Phi
[efe@lhost Wi-Phi] $ pip3 install -r requirements.txt
[efe@lhost Wi-Phi] $ sudo ./setup.sh < serial_port >
Maintenant, le logiciel devrait fonctionner, vérifiez si vous voyez un réseau Wi-Fi nommé Google Free Wi-Fi
.
Chaque fois que vous branchez l'ESP32 à une alimentation électrique, le projet s'exécute automatiquement après la phase de démarrage.
Rien d'autre ne compte.
Tous les logiciels sont implémentés sur MicroPython et fonctionnent sur ESP32.
ESP32 devient un point d'accès sans fil (point d'accès) ; et exécute trois (3) sockets indépendants (sur OSI Layer 4) :
53/UDP
pour le serveur DNS
80/TCP
pour serveur HTTP
2121/TCP
pour le serveur Credential Store
Toutes les liaisons sont effectuées sur l'adresse IP de la passerelle (AP), qui est 210.210.210.1
La raison pour laquelle j'ai choisi une telle classe IP est que, pour une raison quelconque, les appareils Samsung ne considèrent pas les adresses IP courtes comme des portails captifs. Ce qui était un problème pour moi.
L'idée principale est de servir un site Web de phishing statique sur un serveur HTTP et d'en faire un captive portal
pour les appareils (stations) de n'importe quel fournisseur connectés via Wi-Fi.
Static site
servi par un serveur HTTPDNS
, HTTP
et CS
TCP
et UDP
pour les protocoles de haut niveauGateway
LAN
Wireless AP
, Wi-Fi
Vous trouverez ci-dessous le scénario bien conçu dans lequel Wi-Phi
fonctionne.
C’est aussi une étude de cas que je me suis assignée. Alors plongeons-nous dans le dossier...
La plupart des fournisseurs d'appareils envoient des requêtes HTTP à certains points de terminaison de leurs serveurs de détection de portail captif spécifiques au fournisseur et attendent des réponses HTTP particulières pour comprendre si le réseau Wi-Fi dispose d'un portail captif ou non.
Le tableau ci-dessous indique la réponse à apporter aux différents fournisseurs d'appareils, afin de faire supposer à l'appareil qu'un portail captif existe dans le réseau Wi-Fi.
Remarque : Mozilla est une exception aux « vendeurs d'appareils ». Firefox (en tant que navigateur) est capable de prendre cette décision lui-même en fonction de son propre serveur de détection de portail captif.
Les réponses avec le code d'état 302 Found
doivent également avoir un en-tête Location:
afin de rediriger correctement le navigateur (client).
Fournisseur d'appareil | Points de terminaison | Code d'état | Corps de réponse |
---|---|---|---|
Microsoft (Windows) | www.msftconnecttest.com/ncsi.txt | 200 OK | Microsoft NCSI |
Microsoft (Windows) | www.msftconnecttest.com/connecttest.txt | 200 OK | Microsoft Connect Test |
Microsoft (Windows) | www.msftconnecttest.com/redirect | 302 Found | |
Google (Android) | connectivitycheck.gstatic.com/gen_204 | 302 Found | |
Google (Android) | connectivitycheck.gstatic.com/generate_204 | 302 Found | |
Google (Android) | clients3.google.com/generate_204 | 302 Found | |
Xiaomi | connect.rom.miui.com/gen_204 | 302 Found | |
Xiaomi | connect.rom.miui.com/generate_204 | 302 Found | |
Apple (IOS/MacOS) | captive.apple.com/hotspot-detect.html | 302 Found | |
Mozilla (Firefox) | detectportal.firefox.com/canonical.html | 302 Found | |
Mozilla (Firefox) | detectportal.firefox.com/success.txt | 302 Found |
Pour pouvoir répondre aux requêtes http envoyées aux points de terminaison ci-dessus, ces requêtes doivent être envoyées au serveur HTTP d'ESP32. Pour y parvenir, ESP32 doit répondre à des recherches de domaine particulières sur sa propre adresse IP.
google.com
devrait devenir 210.210.210.1
Il doit donc y avoir un serveur de système de noms de domaine fonctionnant sur ESP32. De ce point de vue, le scénario ressemble à des attaques de détournement de DNS.
Je pense que Google est l’entreprise technologique la plus populaire et la plus fiable au monde. J'ai donc préparé une page de phishing statique, qui ressemble presque à l'ancienne page de connexion de Gmail. Et également nommé réseau Wi-Fi comme Google Free Wi-Fi
.
Alors que la scène continue, après avoir redirigé le navigateur (client) vers la page de connexion statique, l'utilisateur doit saisir ses informations d'identification et appuyer sur le bouton suivant. Et les informations d'identification sont stockées dans un fichier local. Ensuite, l'utilisateur obtient une adresse IP interdite jusqu'au prochain redémarrage d'ESP32. Sinon, la base de données locale peut être gâchée par des informations d'identification factices ou erronées. Après tout cela, le client est redirigé vers le répertoire /
du site statique.
Chaque fois qu'un client IP interdit tente d'accéder à une ressource sur le serveur HTTP, le même fichier html hacklendin.html
est servi quels que soient la méthode, l'en-tête, le corps, etc. de la requête HTTP.
De l'autre côté, le magasin d'informations d'identification local peut être consulté à distance en se connectant à 2121/tcp
et en s'authentifiant avec le mot de passe codé en dur lorsque vous êtes connecté au Wi-Fi.
Wi-Phi
est un système riche en fonctionnalités. Les journaux détaillés créés par les services Wi-Fi
, HTTP
et DNS
peuvent être consultés en temps réel. Ces journaux ne sont pas stockés localement pour économiser de l'espace.
Pour pouvoir voir les journaux détaillés,
boot.py
dans un fichier local nommé main.py
.boot.py
du périphérique ESP32.main.py
sur ESP32. Vous pouvez utiliser l'outil ampy
pour les opérations sur les fichiers et exécuter des logiciels sur ESP32.
Jetons un coup d'œil à un cas dans lequel nous avons plusieurs appareils indépendants de différents fournisseurs connectés en même temps à notre Google Free Wi-Fi
.
Lorsque les appareils IOS rencontrent un portail captif, ils lancent automatiquement la page du portail captif, sans demander à l'utilisateur « Bien !
Les appareils Samsung affichent uniquement une notification. Ici, l'utilisateur doit donc cliquer soit sur Sign in to the network
, soit sur la notification en haut de l'écran.
Les appareils Xiaomi affichent également une notification. Ils ouvrent aussi parfois automatiquement la page du portail captif, sans demander à nouveau à l'utilisateur !
Dans Firefox, une invite apparaît en haut de la fenêtre de l'application. Après avoir cliqué sur Open network login page
, la page du portail captif s'ouvre dans un nouvel onglet.
Et l'autre gars qui ne laisse même pas les utilisateurs décider (comme IOS). Ouvre toujours automatiquement la page du portail captif.
Comme je l'ai expliqué auparavant,
Toute la période d'apprentissage, la mise en œuvre de ce que j'ai appris dans la vraie vie, la correction des bugs et la rédaction de cette documentation ont été très amusantes pour moi ! J'espère que vous utiliserez ces connaissances pour l'éthique ! Contactez-moi pour des questions supplémentaires et des cas professionnels/académiques/éducatifs.
Gazouillement
LinkedIn
HackerOne
Pirater la boîte
─ Écrit par Şefik Efe Altınoluk ─