Scroll Indicator
Détection d'ananas WiFi facilitée par Amec0e
La détection de l'ananas WiFi en toute simplicité
PineScan & MultiSSID en action avec le FEBERIS PRO pour votre Flipper Zero
Introduction :
Bonjour à tous, Amec0e à l'appareil et nous sommes de retour avec un nouvel article qui pourrait être un peu plus court que les précédents, mais aujourd'hui je suis heureux de parler du FEBERIS PRO de Sapsan tout en dévoilant deux nouvelles fonctionnalités à la fois pour le Firmware FEBERIS PRO (koko fork) et le projet ESP32 Marauder de justcallmekoko.
En plus d'une démonstration rapide des nouvelles fonctionnalités, sur lesquelles j'ai travaillé pour cet article, il y a aussi un code de réduction à la fin que vous pouvez utiliser pour vos commandes de FEBERIS Pro :)
Qu'est-ce que FEBERIS Pro ?
Le FEBERIS Pro créé par Sapsan et officiellement distribué par LAB401 est un ajout fantastique pour le Flipper Zero. Cette petite chose contient 2 modules radio CC1101 couvrant les fréquences 433MHz et 868MHz, un module radio NRF24 pour les souris et claviers vulnérables, un ESP32 avec BLE et WiFi, avec un module GPS intégré pour des choses telles que la conduite avec le Flipper Zero.
Il est livré avec 4 antennes qui ont toutes un gain de 3dBi, 2x 2.4GHz, 1x 433MHz et 1x 868MHz ce qui donne une belle forme d'onde horizontale. Les modules SubGHz C1101 ont une gamme de fréquence supportée de 300-348 MHz, 387-464 MHz et 779-928 MHz.
Nous ne reviendrons pas ici sur l'utilisation de base des opérations, mais vous pouvez trouver plus d'informations sur l'utilisation de base ici.
Il est également possible de l'acheter auprès de LAB401 ici.
Quelles sont ces nouvelles fonctionnalités ?
Les deux nouvelles fonctionnalités que je vais démontrer sont "pinescan" et "multissid" pour détecter le WiFi Pineapple. Tous les tests ont été effectués en utilisant mon WiFi Pineapple MK7.
Attention, cette fonctionnalité ne remplace pas un WIDS comme Kismet par exemple, et n'est pas à l'épreuve des erreurs, mais sert de PoC pour montrer qu'une détection plus simple peut être faite sur le Flipper Zero et les ESP32 Boards comme FEBERIS Pro. Le Pineapple est également bon dans ce qu'il fait.
Caractéristiques de PineScan :
- Détecte les points d'accès Pineapple via une liste de fournisseurs OUI codée en dur (SUSP_OUI).
- Détecte le pool d'AP Spoofed de Pineapple via des paramètres et des capacités marqués (TAG+SUSP_CAP).
- Extrait le canal correct de la balise (ceci afin d'éviter d'afficher le canal incorrect lors de l'utilisation d'une antenne plus adaptée comme celle du FEBERIS Pro).
- Facile à ajouter des OUI dans un PR sur Github, peut contenir jusqu'à 20 MAC par fournisseur.
- Limite l'affichage pour éviter le Spamming lorsque vous avez un WiFi Pineapple qui diffuse 50 SSIDs (Oui, j'ai fait un test de stress !).
Caractéristiques de MultiSSID :
- Détecte l'AP si un MAC unique diffuse 3 SSID ou plus (y compris le SSID caché).
- Comme Pinescan, il extrait le canal correct de la balise (pour éviter d'afficher le canal incorrect lors de l'utilisation du FEBERIS Pro).
- Comme pour Pinescan, cette fonction limite l'affichage pour éviter le spamming lorsque vous avez un WiFi Pineapple qui diffuse un grand nombre de SSID.
Pour résumer les points forts de chaque scan :
MultiSSID - Bon pour les cas particuliers, plus enclin aux faux positifs. Pinescan - Bon pour la détection de WiFi Pineapple Spoofed Pool APs.
DÉMONSTRATION VIDÉO DES FONCTIONNALITÉS
NOTE : Le firmware utilisé était Unleashed 081E, la version du firmware Marauder utilisée était 1.4.6. Il y a eu depuis une mise à jour que j'ai probablement déjà compilée et mise en ligne pour que vous puissiez la télécharger ci-dessous.
Les méthodes de détection
Il y a donc 3 détections principales parmi les deux nouvelles options que nous avons démontrées dans la vidéo ci-dessus. Il s'agit de
- SUSP_OUI
- Multi_SSID
- TAG+SUSP_CAP
Chacune d'entre elles a été construite et testée en utilisant un WiFi Pineapple MK7 avec l'OpenAP en utilisant l'onglet Impersonation/Spoofed AP Pool dans le WebUI.
SUSP_OUI - C'est la première vérification qui est faite et qui extrait simplement les 6 premiers octets (00:00:00) de l'adresse MAC qui pointe généralement vers un vendeur/fabricant spécifique. Pour certains OUI spécifiques, nous vérifions également si le bit de confidentialité est réglé sur 0, ce qui indiquerait que le point d'accès n'utilise pas de cryptage, s'il est réglé sur 1, il s'agit d'un point d'accès protégé. Il s'agit d'une méthode de vérification simple mais très efficace.
Voici actuellement la liste des OUI qu'il vérifie, leur condition de détection de sécurité ainsi que le nom du fournisseur.
Fournisseur : Alfa Inc. Condition : SUSPICIOUS_WHEN_OPEN OUI : 00:C0:CA
(WiFi Pineapple MK7) Vendeur : Orient Power Home Network Ltd Condition : SUSPICIOUS_ALWAYS OUI : 00:13:37
(WiFi Pineapple MK7) Vendeur : Orient Power Home Network Ltd Condition : suspicious_ways oui : 00:13:37 IEEE Registration Authority Condition : SUSPICIOUS_WHEN_OPEN OUI : 0C:EF:AF
(WiFi Pineapple Management OUIs Locally Administered) Fournisseur : None Condition : SUSPICIOUS_WHEN_PROTECTED OUI : 02:C0:CA, 02:13:37
(WiFi Pineapple Nano) Vendeur : Shenzhen Century Xinyang Technology Co Ltd Condition : SUSPICIOUS_WHEN_OPEN OUI : 1C:BF:CE
Vendeur : MediaTek MediaTek Condition : SUSPICIOUS_ALWAYS OUI: 00:0A:00, 00:0C:43, 00:0C:E7, 00:17:A5
Vendeur : Panda Wireless Inc : Panda Wireless Inc Condition : SUSPICIOUS_ALWAYS OUI : 9C:EF:D5, 9C:E5:D5
Vendeur : Panda Wireless Inc : None Condition : SUSPICIOUS_ALWAYS OUI : DE:AD:BE
Ceci peut également être ajouté dans le code source que je publierai avec l'article.
Ensuite, nous avons :
Multi_SSID - Il conserve une liste de tous les points d'accès vus jusqu'à 100, la liste est ensuite effacée pour faire de la place à d'autres APs. Il prend le SSID complet et produit un hash et il le fait pour chaque adresse MAC unique vue, si un seul MAC a plus de 3 hashs de SSID (y compris le réseau caché) alors il est signalé comme un AP annonçant plusieurs SSID à partir d'un seul MAC.
L'autre détection est :
TAG+SUSP_CAP - Cette détection utilise une combinaison d'extraction des capacités du point d'accès et des paramètres balisés du point d'accès à partir de la trame de la balise. Si le point d'accès a une capacité de 0x0001 et a exactement 2 paramètres balisés, cela déclenche la détection TAG+SUSP_CAP.
La détection TAG+SUSP_CAP a pris un peu plus de temps, car si le Multi_SSID fonctionne très bien, l'inconvénient est que si l'utilisateur clique simplement sur "Randomize Source MAC", alors le Multi_SSID ci-dessus ne fonctionnera pas. Dans ce cas, le Multi_SSID ci-dessus ne détectera plus l'ananas, et je suis donc retourné examiner les trames beacon que l'ananas WiFi utilise pour diffuser confortablement un grand nombre de points d'accès.
Il est intéressant de noter que les options de sniffer "pinescan" et "multissid" utilisent chacune deux structures afin de disposer d'un pool de suivi général des AP et d'un pool de suivi des AP confirmés. Cela permet au scan de n'afficher qu'une seule entrée d'adresse MAC et d'effacer la liste des AP une fois qu'elle est pleine afin d'éviter qu'elle ne s'allonge trop au-delà des limites fixées.
Le pool général de points d'accès est réglé sur 100 points d'accès, après quoi il efface la liste de suivi et vous permet de poursuivre le balayage dans la même session (vous verrez un message dans le fichier journal lorsque cela se produira et qu'il sera effacé). La liste confirmée a également un maximum de 100 PA.
Trouver TAG+SUSP_CAP
Tout d'abord, j'ai réussi à remarquer une occurrence commune que peu de points d'accès avaient en réalité, à savoir le drapeau de capacités réglé sur 0x0001.

Dans l'image ci-dessus, il y avait 7 900 paquets, seuls 5 étaient affichés et seulement de 3 points d'accès différents.
Cela indique déjà clairement que peu de points d'accès utilisent couramment ce drapeau de capacité, mais qu'il n'est pas égal à 0. Cela signifie qu'il ne peut pas être utilisé comme une méthode fiable pour détecter plusieurs points d'accès ayant des adresses MAC différentes, comme le fait le WiFi Pineapple.
Sur 38 000 paquets provenant d'un trajet d'une heure, tous les paquets combinés, il y avait un total de 115 (pas des APs mais des paquets) qui avaient la même capacité 0x0001. J'ai donc rassemblé d'autres données et j'ai passé au crible environ 19 AP différents, ce qui représentait bien plus de 100 000 paquets provenant de différentes parties du monde (grâce à des amis qui ont rassemblé des données de balises de différents pays), parmi lesquels 20 AP utilisaient la même capacité de 0x0001. Cependant, ce n'était toujours pas suffisant, alors je suis retourné à un paquet d'ananas.
Après avoir regardé la trame de la balise pendant 20 bonnes minutes et un rafraîchissement de café (bien nécessaire), j'ai remarqué quelque chose d'assez significatif, jetez un coup d'oeil aux paramètres balisés...

Il n'y a que deux paramètres balisés, SSID et Channel. Il s'agit d'un paquet de base absolu pour lancer un grand nombre de points d'accès sans ralentir le Pineapple avec ses ressources limitées. Ceci n'est pas courant pour les points d'accès disponibles dans le commerce, 100% des points d'accès qui correspondaient au drapeau de capacité 0x0001 avaient PLUS de deux paramètres marqués dans tous les cas.
Cela ne veut pas dire que vous ne pouvez pas créer un réseau extrêmement basique comme celui-ci, vous pouvez en fait faire la même chose avec Marauder. Il utilise un paquet de base avec une capacité 0x0401 (qui ne serait donc pas détectée par notre script de détection), mais il n'envoie qu'un seul paramètre balisé, ce qui déclencherait la détection si nous n'utilisions que les paramètres balisés (en cherchant s'il n'y a que deux paramètres balisés). Cependant, ce n'est pas parce que vous pouvez créer un point d'accès avec un esp32 avec le strict minimum d'informations qu'il est malveillant. Il peut s'agir simplement de le rendre aussi efficace et léger que possible tout en fournissant à l'utilisateur les fonctionnalités dont il a besoin.
Si vous êtes arrivés jusqu'ici, vous commencez à comprendre ce que j'essayais vraiment de faire, c'est-à-dire économiser de la mémoire, réduire les faux positifs et cibler un appareil spécifique comme le WiFi Pineapple, et c'est pourquoi nous incluons le drapeau de capacité suspecte que vous ne pouvez pas changer facilement sur le MK7.
Dans tous les cas, les faux positifs que vous pourriez rencontrer proviendront probablement de SUSP_OUI et de MULTI_SSID. Si vous voyez TAG+SUSP_CAP dans PineScan, c'est une forte indication d'un WiFi Pineapple utilisant le Spoofed AP Pool. Bien que cela puisse être un faux positif car comme mentionné, n'importe qui peut créer un point d'accès comme celui-ci. Bien qu'il soit très rare d'utiliser seulement deux paramètres marqués et une capacité 0x0001.
Certaines détections comme MULTI_SSID et SUSP_OUI pourraient encore détecter des cas limites en dehors du WiFi Pineapple. Ces types de détections combinées, et bien d'autres, peuvent être réalisées facilement en utilisant quelque chose de plus puissant que le Flipper Zero et un ESP32 et habituellement, lorsqu'on utilise un WIDS, c'est sur quelque chose de plus puissant pour réaliser ce type d'analyse en temps réel très rapidement. Cependant, ce PoC montre qu'il y a d'autres façons de détecter certains types d'attaques en utilisant de petites différences entre le WiFi Pineapple et un point d'accès sans fil acheté par le consommateur.
NOTE : Vous pouvez même vérifier d'autres pcaps que vous avez dans wireshark vous-même en utilisant
wlan.fc.type_subtype == 0x0008 && wlan.fixed.capabilities == 0x0001
Puis en organisant le paquet selon sa longueur la plus faible en premier et en vérifiant les paramètres étiquetés comme nous le faisons ci-dessus.
Ok, mais qu'est-ce que ça ne peut pas faire ?
Eh bien, je suis heureux que vous ayez posé la question ! Le WiFi Pineapple est bon dans ce qu'il peut faire et nous avons quelques limitations avec ces méthodes de détection. Certaines de ces limitations sont les suivantes :
EvilWPA Ne peut pas détecter l'EvilWPA - L'EvilWPA est difficile à détecter automatiquement car il peut imiter le vrai point d'accès jusqu'à l'adresse MAC exacte et le mot de passe (si vous le connaissez), même si vous utilisez une liste de points d'accès gérés qui vous permet de spécifier ce que vous devriez voir autour de vous VS ce que vous voyez autour de vous, ce n'est toujours pas assez efficace en soi.
En tant qu'utilisateur, nous pouvons visuellement faire la différence si nous regardons quelque chose comme Kismet, par exemple mon réseau est entièrement sécurisé en WPA3 et le WiFi Pineapple MK7 ne peut utiliser que le WPA2 ou moins. Pour moi, il s'agit d'un signal d'alarme pour tout ce qui n'est pas WPA3 pour mon réseau.
L'utilisation d'une liste de points d'accès gérés avec le Flipper Zero augmentera le temps de traitement en ayant constamment besoin de lire la liste ou de la comparer avec une liste qui est déchargée en mémoire, cependant plus la liste est grande, plus elle sera lente et plus vous utiliserez de mémoire sur l'ESP32. Vous devrez également être immobile pour que cela fonctionne.
Cela ne veut pas dire que ce n'est pas possible, et il faudrait que ce soit la seule méthode de détection pour que ce soit le plus efficace et le moins gourmand en mémoire possible. Bien qu'il s'agisse d'une bonne méthode, ce n'est pas celle que j'ai choisie, car il ne serait pas utile de répliquer un MAC autorisé. Pour localiser cela dans la nature, il faut généralement faire une chasse au renard pour localiser physiquement le dispositif de diffusion en fonction de la force du signal.
OpenAP(No Spoofed AP Pool) Impossible de détecter OpenAP - sans l'utilisation d'un OUI offensant, ce point d'accès en lui-même ne peut pas être détecté comme un Pineapple avec la façon dont nous le détectons. En effet, il fonctionne et ressemble à un point d'accès ouvert légitime et dispose de tous les paramètres et capacités marqués que tout point d'accès consommateur ouvert ou protégé normal utilise.
Intervalles de balise Impossible de détecter par intervalles de balise à partir d'une trame de balise - Ceci est dû au fait que l'INTERVALLE DE BALISE sur le WiFi Pineapple est réglé sur BAS, NORMAL ou HAUT et dans tous les cas il rapportera toujours dans la trame de balise l'intervalle de 102.4ms. La seule façon d'y parvenir est que le Flipper lui-même suive le temps entre chaque balise qu'il voit au lieu de lire les intervalles de balise à partir du paquet lui-même.
Divergences de puissance du signal Il ne peut pas détecter les divergences de puissance du signal telles que l'observation régulière d'un RSSI de -50, puis de -30, puis d'un retour à la plage de -50 et d'une fluctuation constante autour de cette puissance. Vous le remarquerez facilement si vous surveillez les ondes et que vous êtes complètement statique et que rien autour de vous n'interfère avec l'intensité du signal.
Cela entraînerait également de nombreux faux positifs si vous vous déplacez pendant la détection, car vous verriez régulièrement des augmentations et des diminutions de la force du signal en vous déplaçant (ce qui est bien sûr le cas du Flipper et du FEBERIS Pro, qui sont justement des plates-formes mobiles).
Instructions de flashage
Flashage de l'ESP32S2 ou de la carte de développement à l'aide de l'application ESP Flasher :
Pour flasher une ESP32S2 en utilisant ESP flasher sur Momentum ou Unleashed, vous aurez besoin du Bootloader suivant et de la table des partitions. Vous aurez également besoin des bins de firmware qui se trouvent sous les instructions listées ici.
-
Tout d'abord, nous devons créer un nouveau répertoire dans SD Card > apps_data > esp_flasher > S2bins, puis nous pouvons placer les fichiers bootloader.bin et partitions.bin dans ce nouveau répertoire sur le Flipper Zero en utilisant qFlipper une fois que c'est fait, puis débrancher le Flipper du PC.
-
Ensuite, il faut brancher la ESP32S2 ou la Developers Board sur le Flipper Zero, puis une fois qu'elle est branchée, redémarrer le Flipper Zero.
-
Ensuite, naviguez jusqu'à l'application ESP Flasher.
Pour Momentum, c'est : Apps > GPIO > ESP > ESP Flasher
Pour Unleashed, c'est : Apps > GPIO > ESP > ESP Flasher : Apps > GPIO > ESP Flasher
-
Ensuite, faites défiler jusqu'au bas de l'ESP Flasher et vous verrez "Enter Bootloader", appuyez sur cette option et appuyez ensuite une fois sur le bouton "back".
-
Faites défiler jusqu'à "Manual Flash" et appuyez au centre.
-
Sélectionnez "Bootlader (0x1000)" et sélectionnez notre Bootloader dans le répertoire S2Bins.
-
Sélectionnez ensuite "Part Table (0x8000)", puis allez dans le répertoire S2Bins et sélectionnez "Partitions".
-
Sélectionnez ensuite "FirmwareA (0x10000)" et sélectionnez le firmware personnalisé.
-
Descendez jusqu'en bas et sélectionnez "Flash - fast" et attendez que l'écriture soit terminée.
-
Redémarrez le Flipper après l'avoir flashé et après avoir quitté l'application ESP Flasher.
Flashage sur le FEBERIS Pro à l'aide de l'application ESP Flasher :
Les étapes sont les mêmes sauf qu'il ne faut pas sélectionner les fichiers du bootloader ou la table de partition (étapes 1, 6 et 7).
-
Ensuite, il faut brancher la ESP32S2 ou la Developers Board sur le Flipper Zero, puis une fois qu'elle est branchée, redémarrer le Flipper Zero.
-
Naviguez jusqu'à l'application ESP Flasher.
Sur Momentum, c'est : Apps > GPIO > ESP > ESP Flasher
Sur Unleashed, c'est : Apps > GPIO > ESP > ESP Flasher : Apps > GPIO > ESP Flasher
-
Ensuite, faites défiler jusqu'en bas de l'ESP Flasher et vous verrez " Enter Bootloader " (Entrer dans le Bootloader), appuyez sur ce bouton et appuyez ensuite une fois sur le bouton retour.
-
Faites défiler jusqu'à "Manual Flash", appuyez au centre.
-
Sélectionnez "FirmwareA (0x10000)" puis sélectionnez le firmware personnalisé.
-
Faites défiler jusqu'en bas et sélectionnez "Flash - fast" et attendez que l'écriture soit terminée.
-
Redémarrez le Flipper une fois qu'il a été flashé et que vous avez quitté l'application ESP Flasher, et vous avez terminé.
NOTE : Il est important d'attendre quelques secondes et de redémarrer le Flipper Zero après avoir branché l'ESP32.
Firmware, FAP et code source
Firmware :
Pinescan et MultiSSID sont maintenant fusionnés dans la version 1.6.0 du Firmware officiel de l'ESP32Marauder. Cela signifie que vous pouvez maintenant télécharger le firmware marauder directement depuis justcallmekoko et l'installer et le flasher en utilisant les instructions ici ou comme vous le feriez normalement.
FAP :
Le FAP est mis à jour à la fois dans le momentum et dans le unleashed latest dev build. Vous pouvez donc simplement télécharger et installer un dev build de l'un ou l'autre firmware (en supposant que vous ayez également mis à jour marauder en 1.6.0 ou plus) et vous aurez les nouvelles options à votre disposition. Il n'est pas nécessaire de télécharger le firmware ou les FAPs liés à cet article.
Code source :
Ceci a depuis été fusionné avec le firmware officiel de l'ESP32Marauder. Vous pouvez consulter la demande de PR [ici] qui contient le code source.
Résumé :
Aujourd'hui nous avons regardé les deux nouvelles options de sniffer ainsi que quelques petites différences subtiles que le WiFi Pineapple utilise lorsqu'il est comparé à un point d'accès consommateur légitime. Nous avons également abordé les méthodes de détection et ce qu'elles recherchent, ainsi que les instructions de flashage des firmwares et des faps.
En fin de compte, les nouvelles options "pinescan" et "multissid" dans le sous-menu sniffer peuvent être un bon moyen de détecter un WiFi Pineapple uniquement lorsqu'il utilise son Spoofed AP Pool. En effet, lorsqu'il est exécuté sans utiliser le Spoofed AP Pool, il ressemble et fonctionne comme un réseau ouvert légitime.
Bien qu'il soit courant d'usurper les noms des réseaux 2.4GHz et 5GHz d'une cible (XYZ_2G et XYZ_5G) pour lui faire croire qu'elle se connecte à son réseau 5GHz alors qu'en fait elle se connecte à un réseau ouvert 2.4GHz.
Le couplage avec le FEBERIS Pro a été fantastique parce que l'antenne sans fil 2.4GHz à gain 3dBi m'a donné beaucoup plus de portée que ce que j'avais auparavant avec une carte Flipper Dev Board.
Et je n'ai même pas réussi à essayer les 3 autres modules radio intégrés. C'est ce qui rend cet outil incroyablement polyvalent.
Je voudrais dire un grand merci à tous ceux qui ont contribué aux tests et à la collecte de données sur les balises dans tous les domaines, du résidentiel au professionnel. J'espère que vous avez apprécié l'article, la vidéo et les nouvelles fonctionnalités autant que j'ai aimé l'écrire, l'enregistrer et le coder.
Si vous avez envie d'en acheter un pour vous ou un ami, vous pouvez utiliser mon code de réduction : AMEC0E sur LAB401 pour une réduction de 5%.
Avis de non-responsabilité
Maintenance et amélioration du code :
Comme pour toute nouvelle fonctionnalité, il peut y avoir des problèmes qui n'ont pas été rencontrés lors des tests ou qui peuvent être dus à un oubli de ma part. Par conséquent, le firmware, les FAP et le code source sont fournis "TELS QUELS" sans aucune garantie. Ni moi (amec0e) ni LAB401 ne seront tenus responsables des problèmes ou dommages résultant de l'utilisation de ces firmwares ou FAPs. De plus, nous (amec0e et LAB401) ne fournirons pas de support, de maintenance ou d'améliorations futures pour les firmwares ou les FAPs (Flipper Application Packages).
Utilisation du firmware : Ni moi (amec0e) ni LAB401 ne seront tenus responsables de toute mauvaise utilisation ou conséquence involontaire résultant de l'utilisation du firmware ou des FAPs fournis. Ceux-ci sont distribués "TELS QUELS" et sont utilisés entièrement à VOS PROPRES RISQUES.
Responsabilité juridique : Vous êtes seul responsable du respect de toutes les lois et réglementations locales applicables. Nous ne pourrons être tenus responsables des conséquences juridiques découlant de votre manquement à cette obligation. Ces firmwares et FAP sont fournis uniquement à des fins éducatives et de recherche.
Ressources
Fiche technique C1101 - https://www.ti.com/lit/ds/symlink/cc1101.pdf
Documentation Feberis Pro - https://sapsan-docs.com/brands/sapsan/feberis-pro/docs/
Firmware Feberis Pro - https://github.com/bpmcircuits/ESP32Marauder
Mise à jour du micrologiciel Feberis Pro - https://www.youtube.com/watch?v=Gl7nSpI6l3w
Laisser un commentaire