
Un script Python pour obscurcir les réseaux sans fil
Un script python pour obscurcir les réseaux sans fil
''' Avertissement : je ne suis pas programmeur de métier, et je ne me considérerais pas comme tel.
La liste commune des SSID a été extraite de https://wigle.net/gps/gps/Stat La liste des OUI vendeurs a été parsée depuis http://standards.ieee.org/develop/regauth/oui/oui.txt pour les vendeurs bien connus (netgear, cisco, linksys, d-link, atheros, ralink, apple)
Cette idée a été créée en s’appuyant sur FakeAP de Black Alchemy http://www.blackalchemy.to/project/fakeap/ et sur airraid de Pettinger http://www.pettingers.org/code/airraid.html Une partie de la logique pour extraire les informations nécessaires des paquets a été reprise de Leandro Meiners ([email protected]) du script Power-Saving DoS de Core Security Technology
Les principales différences entre ces implémentations résident dans les exigences matérielles et la manière dont le point d’accès factice est généré.
FakeAP génère des points d’accès factices en créant un point d’accès via iw et ifconfig avec une carte sans fil à base de PRISM. Le problème est que les drivers PRISM sont pour la plupart obsolètes dans la plupart des distributions modernes. Même avec un driver fonctionnel et une carte PRISM, je n’ai pas réussi à faire fonctionner FakeAP sans modification.
AirRaid est presque identique à FakeAP dans son fonctionnement. Cependant, il est adapté aux cartes Atheros et utilise les drivers et utilitaires madwifi pour créer des points d’accès factices. Le projet Madwifi semble s’essouffler au profit des drivers ath5/9k. Sans modification, AirRaid ne fonctionnait plus avec ma carte atheros.
Un autre problème avec ces implémentations était la vitesse. À chaque création d’un point d’accès factice, le périphérique sans fil devait être désactivé/réactivé et reconfiguré.
Cette implémentation diffère sur plusieurs points. Elle n’est pas totalement spécifique au matériel comme FakeAP ou AirRaid. Au lieu de créer un point d’accès factice en modifiant les paramètres de l’adaptateur sans fil et en réinitialisant/reconfigurant le périphérique, elle exploite les cartes sans fil qui supportent l’injection de paquets.
Cela apporte plusieurs avantages. Elle prend en charge beaucoup plus d’adaptateurs ainsi que de nombreux drivers modernes qui supportent l’injection de paquets et le mode moniteur (rtl8187, ath5k, ath9k, la plupart des ralink, etc…). En bref, tout périphérique dont les drivers permettent à l’adaptateur de fonctionner en mode moniteur via airmon-ng peut l’utiliser. Comme elle utilise l’injection de paquets plutôt que la création effective d’un point d’accès, elle injecte des paquets qui ressemblent à ceux provenant de véritables points d’accès.
C’est mon premier projet en python, il y aura donc probablement des défauts, des inefficacités, des moyens possibles de détecter quels AP sont factices. Je prévois d’améliorer cela au fil du temps à mesure que les problèmes seront découverts et que des améliorations seront demandées.
Il est possible que l’on ait besoin de moins que ces exigences pour que cela fonctionne, mais je sais que cela fonctionne avec ce qui suit :
Cartes Atheros utilisant ath5k et ath9k Puce Realtek 8187 (ex. Alfa AWUS 036H) La plupart des chipsets Ralink
Ce code a été écrit en python 2.7 avec Scapy 2.2.0. Je n’ai pas une maîtrise solide de Scapy car sa documentation est un peu légère, donc si quelque chose est mal fait, merci de me le signaler. airmon-ng a été utilisé pour créer les interfaces moniteur qui permettent l’injection de paquets.
Je réalise également que ce texte est plus long que le code lui-même.
Pour exécuter :
Nécessite python 2.7, Scapy 2.2.0, une carte sans fil avec des drivers supportant l’injection de paquets
#####ATTENTION : VERSION PRÉCOCE#####
Il n’y a pratiquement pas de journalisation pour le moment car je ne connais pas encore bien Scapy, et lorsqu’il envoie des trames de balise et des réponses de sonde, il affiche "Sent 1 packets" dans le terminal. Lorsque nous envoyons plusieurs paquets par seconde, cela spamme l’écran avec "Sent 1 packets". Je travaille actuellement à trouver un moyen de contourner cela et de fournir une journalisation plus utile.
Assurez-vous d’avoir une carte réseau sans fil en mode moniteur avec des capacités d’injection de paquets. J’utilise la suite aircrack-ng avec airmon-ng pour cela :
airmon-ng start <interface>
Cela devrait vous indiquer la nouvelle interface virtuelle de surveillance créée (quelque chose comme mon 0)
FuzzAP.py prend quatre arguments obligatoires. Le premier argument est l’interface à utiliser, le second est le nombre de points d’accès factices à générer, le troisième est un fichier d’OUI, le quatrième est un fichier contenant des SSID
sudo python fuzzap.py <interface> <nombre d’AP> <fichier OUI> <fichier ssid>
Si vous voulez exécuter depuis le dépôt :
sudo python fuzzap.py <interface> <nombre d’AP> common.txt ssid.txt
Ce à quoi cela ressemble du point de vue d’un client : http://imgur.com/QsoFP1a
CE LOGICIEL EST FOURNI "EN L’ÉTAT", SANS GARANTIE D’AUCUNE SORTE, EXPLICITE OU IMPLICITE, Y COMPRIS MAIS SANS S’Y LIMITER, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D’ADAPTATION À UN USAGE PARTICULIER. EN AUCUN CAS LES AUTEURS NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS S’Y LIMITER, L’ACQUISITION DE BIENS OU DE SERVICES DE SUBSTITUTION ; LA PERTE D’UTILISATION, DE DONNÉES OU DE PROFITS ; OU L’INTERRUPTION D’ACTIVITÉ) QUELLE QU’EN SOIT LA CAUSE ET SUR TOUTE THÉORIE DE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D’UN CONTRAT, D’UNE RESPONSABILITÉ STRICTE OU D’UN DÉLIT (INCLUANT LA NÉGLIGENCE OU AUTRE) DÉCOULANT DE L’UTILISATION DE CE LOGICIEL, MÊME SI LA POSSIBILITÉ DE TELS DOMMAGES A ÉTÉ SIGNALÉE. '''
TODO :
Trafic factice entre les 'AP' et les 'clients' Saut de canal