Cyber défense : monitorez vos réseaux wifi gratuitement

Cyber défense : monitorez vos réseaux wifi gratuitement

En matière de défense de systèmes d’information, on n’est jamais trop prudent, il faut surveiller. Plus on détecte tard qu’on fait l’objet d’une attaque, plus les dégâts peuvent être importants. Comme toute interface avec le reste du monde, les points d’accès wifi qu’on met en place pour la famille ou pour nos employés sont des vulnérabilités potentielles qui peuvent permettre à une personne malveillante de rentrer dans le système d’information. Il faut donc surveiller ces points d’accès wifi que l’on offre pour s’assurer que seuls les utilisateurs légitimes s’y connectent. Pour cela il existe plein d’outils de type IDS (Intrusion Detection System) qui permettent de monitorer les réseaux. Rares sont ceux qui sont gratuits.

Je partage ici en ligne un logiciel que j’ai programmé avec mes petits doigts musclés, qui est entièrement gratuit, et qui permet de monitorer un ou plusieurs réseaux wifi simultanément, pour ainsi détecter les tentatives d’intrusion.

C’est bien sûr un outil sans prétention, mais il est capable de bien des choses. Avant tout une petite démo du soft en action :

Utilisation

Au lancement du logiciel, on a le choix entre 3 modes de fonctionnement : “SOC”, “Standard” ou “Stand alone”. Dans la démo ci-dessus, j’ai choisi le mode “Stand alone”, à savoir que le logiciel lancé comme cela se suffit à lui-même, il ne communique avec aucun SOC.

Comme vous pouvez le deviner, le mode SOC est le mode dans lequel le logiciel est utilisé sur un écran situé dans un SOC. Concrètement cela signifie que le logiciel n’est pas forcément à portée des réseaux wifi monitorés, il reporte juste en local les affichages d’un logiciel lancé lui en mode “Standard” dans l’environnement de captation des réseaux wifi à surveiller. Donc en résumé, soit on lance le logiciel en une seule version, “Stand alone”, et l’on surveille ce qu’il affiche (dans ce cas il doit être à portée des réseaux surveillés), soit on lance le logiciel en deux versions, l’une en local en mode “Standard” à portée des réseaux surveillés, communicant avec une deuxième en mode “SOC” située dans un local de télésurveillance.

Évidemment, la communication entre les machines “Standard” et “SOC” est sécurisée, sur la base de la phrase de passe qu’on doit rentrer dans ces deux cas. L’idée est évidemment que la surveillance wifi qu’on met en place ne devienne pas elle-même une vulnérabilité dans le système d’information. PS: la phrase de passe peut être changée tous les jours ou même plus souvent, l’important étant que ce soit la même phrase de passe rentrée sur les deux machines.

Une fois le choix du mode “Stand alone” fait, je sélectionne la carte réseau wifi à capturer dans la combo “Interface wifi” qui auto-détecte les cartes wifi présentes. La surveillance du wifi démarre dès que la carte réseau à utiliser est sélectionnée. Contrairement à beaucoup de logiciels de capture réseau, le mien n’utilise pas la librairie pcap, mais capture directement en Raw Socket, ce qui me semble plus élégant. Vous pouvez allez zieuter dans le code source pour voir comment je fais ça.

Si l’on coche la case “Montrer le trafic”, on voit dans la partie haute passer les paquets lus (ce qui a peu d’intérêt).

l’interface graphique principale est coupée en 3 zones distinctes : la zone du milieu montre les points d’accès wifi détectés, la zone de droite montre les clients connectés à ces points d’accès wifi, et la zone de gauche montre les événements de sécurité se produisant dans le périmètre surveillé.

Le mode monitor

Mon logiciel bascule la carte wifi en mode monitor pour pouvoir fonctionner, ce qui signifie qu’il ne peut fonctionner que sur des PC dont la carte wifi supporte le mode monitor.

Le mode monitor est différent du mode promiscuous. Dans le mode promiscuous on est connecté à un point d’accès wifi et l’on passe dans un mode où l’on capture tous les paquets de ceux qui sont connectés au même point d’accès. Les avantages du mode promiscuous sont qu’on peut analyser en profondeur les paquets interceptés (notamment au niveau des couches IP et TCP/UDP), l’inconvénient c’est que dans ce mode on ne voit pas les tentatives de connexion d’un hacker qui attaquerait le point d’accès à la force brute par exemple, on ne voit que les machines qui ont réussi à se connecter au point d’accès.

Dans le mode monitor, on n’est pas connecté à un point d’accès en particulier. L’inconvénient est donc bien sûr qu’on ne peut pas faire d’analyse des paquets au niveau IP ou TCP/UDP puisque les paquets sont chiffrés. Par contre, on voit dans ce mode tout ce qui se passe dans les airs d’un point de vue paquets 802.11, tous points d’accès confondus. On voit tout de suite par exemple que quelqu’un tente de se connecter de manière répétée à un point d’accès wifi donné, et qu’il est donc certainement en train d’essayer plein de mots de passe différents.

Problème : si le mode promiscuous est relativement bien implémenté dans les cartes wifi des laptops, c’est un peu la loterie en ce qui concerne le mode monitor. Par loterie j’entends que, selon l’implémentation, on ne voit pas forcément tous les points d’accès wifi, ou la capture des paquets manque des paquets. Mon logiciel ne peut pas faire de miracles de ce point de vue : il bascule la carte wifi en mode monitor, et il verra les points d’accès wifi et les paquets que la carte wifi verra, pas plus.

En termes de cyber, ce gros bémol a des impacts considérables, puisque, comme on est pratiquement certain qu’on va manquer des paquets à cause de la piètre implémentation du mode monitor dans les cartes wifi, il est très difficile de programmer une machine à états fiable. Il n’y a que deux moyens de résoudre le problème en fait : soit on fait un soft qui implémente des machines à états et l’on part du principe que l’utilisateur investira dans une carte wifi haut de gamme connue pour implémenter le mode monitor de manière fiable, soit on intègre le fait que le soft tournera de toute façon sur des cartes wifi standard dans lesquelles l’implémentation du mode monitor sera très inégale et l’on renonce aux machines à états. C’est cette deuxième voie que j’ai choisie.

La cyber surveillance avec ce logiciel

Bien qu’il n’y ait pas de machines à états pour les raisons exposées ci-dessus, on peut tout de même détecter beaucoup de choses avec ce logiciel.

Les points d’accès ayant le mode WPS activé : lorsqu’un point d’accès est détecté, le logiciel vérifie si le mode WPS est activé ou non. Si c’est le cas, cet événement de sécurité apparait en rouge dans la fenêtre de gauche. Le mode WPS, qui, il faut le savoir est activé par défaut sur quantité de livebox, est à proscrire car on peut craquer l’entrée dans le réseau wifi en quelques secondes avec des logiciels comme wifite. Une désactivation de ce mode WPS dans votre point d’accès wifi s’impose, et le point d’accès apparaitra en vert une fois qu’il sera sécurisé de ce point de vue.

Les points d’accès doublons : un hacker qui cherche à pirater le réseau wifi de votre entreprise peut créer un faux point d’accès wifi (sans mot de passe) ayant le même nom que celui de votre entreprise. Vos clients wifi légitimes vont alors se connecter sur son point d’accès croyant se connecter au votre. De fait, le pirate se retrouve alors dans la position de “man in the middle”. Cette étape est une obligation dans le cas de l’attaque Krack qui est la seule attaque efficace connue sur le WPA2 du wifi. Dès qu’un point d’accès ayant le même nom qu’un autre point d’accès déjà détecté apparait, il est mis en rouge dans le logiciel.

La connexion de clients non autorisés : la fenêtre de droite montre les clients connectés aux points d’accès wifi. Par défaut, ils n’ont pas de couleur particulière. Si vous commencez à renseigner une liste d’adresses MAC autorisées dans le menu “Paramètres”, alors la connexion de tout client dont l’adresse MAC ne figure pas dans la liste autorisée apparaitra en rouge. D’une manière générale, vous avez intérêt à paramétrer votre point d’accès wifi pour qu’il n’accepte que les connexions d’adresses MAC bien précises (filtrage MAC). Si votre point n’a pas cette possibilité de paramétrage là, vous pouvez toujours déclarer les adresses MAC autorisées dans Dienekes wifi monitor, il n’empêchera pas la connexion d’un intrus qui connait le mot de passe wifi, mais il affiche tout de même cet intrus en rouge.

Les tentatives de connexion wifi ratées (mauvais mot de passe) : lorsqu’un client légitime se connecte à votre point d’accès wifi, son authentification va passer par une poignée de mains en 4 temps (4 way handshake). 4 messages numérotés vont être échangés. Lorsqu’un client illégitime va tenter de se connecter avec un mauvais mot de passe au point d’accès wifi, le message N° 3 ne sera jamais émis (et à fortiori le N°4 non plus). Dans ce cas de figure, le message N°2 émis par le client ne sera pas accepté par le point d’accès qui soit émettra un nouveau message N°1 appelant une nouvelle réponse via un autre message N°2, soit jetera le client par émission d’un message Deauthentication (ce qu’il finira par faire tout de même au bout de quelques secondes si le mot de passe continue à ne pas être le bon). En résumé, une connexion réussie légitime c’est une succession de messages Handshake 1/4, Handshake 2/4, Handshake 3/4, Handshake 4/4, alors qu’une connexion ratée parce que le mot de passe n’est pas bon c’est une succession de messages Handshake 1/4, Handshake 2/4, Handshake 1/4, Handshake 2/4, …, Deauthentication. Le logiciel est donc incapable de savoir si la connexion est légitime/réussie ou tentativement frauduleuse tant qu’il ne voit pas passer les messages Handshake 3/4 ou Handshake 4/4. C’est pourquoi les messages Handshake 1/4 et Handshake 2/4 apparaissent en orange (vigilance dans la surveillance, tout dépend de ce qui suit), alors que es messages handshake 3/4 et Handshake 4/4 apparaissent en vert.

Les deauthentications : un message deauthentication est émis par le point d’accès wifi à un client ou à tous les clients connectés, pour leur signifier qu’il le ou les déconnecte. Ces messages apparaissent toujours en rouge car s’il ne sont normalement pas émis lorsque tout va bien, leur présence est souvent synonyme de vigilance car suspecte. En effet, on va retrouver ce type de messages à la suite d’une tentative de connexion avec un mauvais mot de passe par exemple. Mais il y a plus vicieux : des logiciels comme wifite savent envoyer ces messages depuis le PC d’un hacker en se faisant passer pour des messages émis par le point d’accès, dans le but de forcer les clients à se reconnecter et donc à rejouer la poignée de main en 4 temps. Les différents paquets Handshake x/4 sont alors capturés par le pirate qui va les attaquer par dictionnaire sur son PC pour tenter de trouver le mot de passe du point d’accès wifi. Bref, la présence de ces paquets deauthentification apparaissent en rouge car il faut regarder avec vigilance ce qui se passe (en fait s’il y en a un de temps en temps, il n’y a pas à s’inquiéter, mais si l’on commence à les voir passer en rafale, ou après des handshakes qui ne vont pas plus loin que 2, il faut commencer à considérer que le point d’accès est attaqué).

Tous les événements de sécurité détectés sont gardés dans le fichier de log qu’on mentionne dans la première fenêtre, vue au lancement du logiciel. Ces logs sont au format JSON pour être facilement intégrables dans un SIEM.

A savoir : avec ce logiciel, vous voyez votre point d’accès wifi mais aussi celui de tous vos voisins. Pareil pour les événements de sécurité. Pour ne pas voir les événements de sécurité de tous les points d’accès mais seulement du votre, sélectionnez le dans la fenêtre “Points d’accès” au milieu de l’écran. Vous ne verrez plus que vos événements de sécurité à vous, jusqu’à ce que vous dé-sélectionniez votre point d’accès.

Installation et compilation

Le logiciel est écrit en C++ et utilise la librairie graphique wxwidgets. Pour pouvoir le compiler il faudra donc faire au préalable (sous Ubuntu 18.04) :

sudo apt-get install make gcc g++ libwxbase3.0-dev libwxgtk3.0-dev

Ensuite la compilation se fait avec un simple make qui produit l’exécutable.

Le code source est disponible ici. A la compilation c’est par défaut l’interface graphique en français qui est utilisée. Si vous avez besoin d’avoir une version anglaise du logiciel, il suffit de faire pointer le lien lang.h vers ui_lang_en.h au lieu de ui_lang_fr.h