Comment Wireshark peut faciliter l’analyse d’incidents Wi-Fi (Partie 3 : Analyse)

Une fois les trames capturées puis mises en forme, nous pouvons passer à l’analyse. Cette étape peut s’avérer très fastidieuse, surtout lorsque l’on ne sait pas encore ce que l’on cherche. Pour cela Wireshark met à notre disposition plusieurs outils qui vont permettre de mieux cibler les recherches, cependant il est essentiel de disposer d’un minimum de connaissances des échanges WLAN, du format des paquets, des différents paramètres et pour cela je vous renvoie vers la formation CWAP qui est très complète sur le sujet.

3.1 Décrypter une trame

Pour faciliter les analyses applicatives, il peut être intéressant de décrypter les trames et voir ainsi le contenu des échanges. Pour cela, il faut aller dans le menu “Edit” > “Preferences” > “Protocols” > “IEEE 802.11” et s’assurer que la case “Enable decryption » est bien cochée. Ensuite pour ajouter des clés, il faut aller cliquer sur le bouton “Edit …” en face de “Decryption keys”.

Dans la fenêtre qui s’ouvre vous pourrez ajouter des clés, suivant le type d’encryption utilisé vous avez plusieurs possibilités :

  • Si vous utilisez du WEP : Il faut sélectionner le type de clé wep puis rentrer la clé (10 valeurs numériques ou 26 caractères alphanumérique)
  • Si vous utilisez du WPA/WPA2 PSK : Vous pouvez utiliser le type de clé “wpa-pwd” ou “wpa-psk”
  • Pour le wpa-pwd il faut renseigner la clé puis le nom du ssid selon le formatage suivant : clé:ssid
  • Pour le wpa-psk il faut renseigner la pré-shared key au format 64byte héxadécimale
  • Si vous utilisez du WPA/WPA2 Enterprise : Vous pouvez sélectionner wpa-psk et renseigner la clé PMK que vous pouvez récupérer sur le client ou sur le serveur Radius

3.2 Les filtres de visualisation

Les filtres de visualisations sont un des éléments très importants dans l’analyse avec Wireshark. Ils permettent de n’afficher que les paquets correspondant au filtre indiqué. L’avantage par rapport aux filtres de captures, c’est qu’ils permettent de pouvoir malgré tout conserver l’intégralité des paquets pour une utilisation future.

Pour retrouver un filtre d’affichage, il est possible d’aller dans le détail d’un paquet, de sélectionner le champ qui nous intéresse, en cliquant simplement dessus le nom du champ apparait dans la barre inférieure. En faisant un clic droit dessus, puis “Apply as filter” il est possible de sélectionner directement le champ avec la valeur du paquet pour pouvoir retrouver tous les autres paquets qui correspondent à ce critère (choix “Selected”) ou au contraire pour exclure tous les paquets correspondant à ce critère (choix “Not Selected”).

Vous avez également la possibilité d’écrire vous-même votre filtre en vous aidant par exemple des références de Wireshark ici :

https://www.wireshark.org/docs/dfref/w/wlan.html

ou bien en utilisant cette compilation qui comprend énormément de filtres très utiles au quotidien :

https://semfionetworks.com/blog/wireshark-most-common-80211-filters/

Les macros

Lorsque l’on utilise plusieurs filtres les un à la suite des autres, ils deviennent rapidement assez difficiles à lire et pour faciliter cela on peut utiliser des macros. Les macros vont permettre de créer des filtres pré-définis dans lequel nous n’auront plus qu’à ajouter des paramètres. Pour créer une macro, il faut aller dans la barre de menu, choisir le menu “Analyze” puis “Display Filter Macros”.

Voici un exemple pour une macro qui se nomme “low_rssi” :

wlan_radio.signal_dbm <= $1 && wlan_radio.channel == $2 && wlan.ssid==$3

Pour l’utiliser, je vais simplement l’appeler dans la barre des filtres d’affichages en remplaçant $1 par la valeur souhaitée, $2 par la valeur souhaitée, et $3 par la valeur souhaitée. Ce qui donne par exemple :

${low_rssi:-77;36;SSID1}

Il est préférable de réaliser ses propres macros afin de faciliter leurs utilisations et être sûr que cela correspond à vos besoins et votre façon de rédiger les filtres, sinon vous allez passer plus de temps à retrouver l’ordre des paramètres et le type de valeur attendue qu’à les rédiger.

Les boutons

Lors des analyses, nous remarquons que nous utilisons très régulièrement les mêmes filtres d’affichages, afin d’éviter de devoir les réécrire à chaque fois et y avoir accès plus rapidement, nous avons la possibilité de créer des boutons qui vont directement appliquer le filtre choisi. Pour créer un bouton, il faut aller dans le menu “Edit”, puis “Preferences”, puis “Filter Buttons”, voici un exemple de bouton :

3.3 Les graphiques

Dans certains cas, la visualisation des paquets n’est pas suffisante pour analyser les paquets et il peut être intéressant d’utiliser des graphiques pour mettre en évidence certaines informations. Le nombre de fonctionnalités disponible avec les graphiques est très important, je vais ici vous faire une rapide présentation ainsi que quelques cas d’usages, mais je vous invite à creuser cette fonctionnalité qui est très utile pour analyser les différents échanges.

Graphique I/O

Les graphiques I/O sont une vision en deux dimensions dans lequel nous pourrons choisir les informations en abscisses et en ordonnées. Pour y accéder il faut aller dans le menu Statistics puis “I/O Graphs”

Par défaut, deux graphiques sont déjà présents :

Voici un descriptif de chaque colonne et des différentes possibilités qu’elles offrent :

  • Enabled : Permet d’afficher ou non une ligne, si elle est coché la ligne s’affichera
  • Graph Name : C’est le nom du graphique
  • Display Filter : Filtre d’affichage qui permet de choisir les paquets que nous souhaitons utiliser pour le graphique
  • Color : C’est la couleur utilisé pour le graphique
  • Style : C’est la façon dont le graphique est affiché, il y a 3 grandes catégories :
  • Line : Il s’agit d’une courbe qui relie tous les points en un seul trait (exemple ci-dessus)
  • Impulse / Bar et Stacked Bar : Chaque point est indiqué à l’aide d’une barre partant de l’axe des abscisses jusqu’à la valeur.
  • Dot/Square/Diamond/Cross/Circle/Plus : Chaque valeur est indiquée par un point (suivant la forme choisie)
  • Y Axis : C’est l’unité choisie pour représenter l’axe des ordonnées (en tenant compte de l’intervalle indiqué en dessous
  • Packets : Nombre de paquets correspondant au filtre d’affichage dans l’intervalle
  • Bytes / Bits : Nombre d’octets ou de bits transmis dans les paquets au cours de l’intervalle
  • SUM (Y Field) : Somme des valeurs contenue dans le champ “Y Field” (indiqué dans la section suivante)
  • MAX (Y Field) / MIN (Y Field) : Valeur maximale/minimale du champ “Y Field”
  • AVG (Y Field) : Valeur moyenne du champ “Y Field”
  • LOAD (Y Field) : Somme des champs “Y Field” divisé par l’intervalle
  • COUNT FRAME (Y Field) : Nombre de paquets contenant le champ “Y Field”
  • COUNT FIELD ( Y Field) : Nombre d’occurence du champ “Y Field”
  • Y Field : Nom d’un champ permettant un affichage de valeur particulière dans la partie Y Axis
  • SMA Period : Permet d’afficher une moyenne des valeurs pendant un intervalle

Voici quelques exemples de graphiques :

Le graphique ici nous indique ici la valeur maximale et moyenne du data rate sur l’ensemble des paquets capturés.
Le graphique nous indique ici le nombre total de paquets transmis (courbe) et le nombre de paquets retransmis (barres)
Ce graphique nous montre le taux d’utilisation du canal.

Comment Wireshark peut faciliter l’analyse d’incidents Wi-Fi (Partie 2 : Personnalisation)

La personnalisation va permettre d’avoir ses propres repères et raccourci dans l’interface pour faciliter l’analyse des paquets par la suite. L’interface principale de Wireshark se découpe en 4 parties :

  • La partie 1 comprends les différents menus, les boutons ainsi que la barre des filtres d’affichage
  • La partie 2 contient la liste des paquets capturés, nous verrons ultérieurement comment personnaliser les colonnes
  • La partie 3 contient le détail du paquet sélectionné dans la partie 2.
  • La 4ᵉ partie contient la vue Hexadécimale et version texte du paquet. Cette partie contient également la barre d’état tout en bas de l’interface, on y retrouve des informations comme le nom du profil utilisé actuellement, le nombre de paquets total de la capture et le nombre de paquets affichés, et d’autres informations sur le fichier de capture.

1 Les profils

Dans Wireshark, le profil permet de personnaliser de nombreux paramètres et cela permet de pouvoir adapter rapidement la configuration au type de capture que l’on souhaite faire ( WLAN, Ethernet, Applicative, …). Le profil permet de personnaliser :

  • Les préférences
  • Les filtres de captures
  • Les filtres d’affichages
  • Les règles de couleurs
  • Les protocoles désactivés
  • Les macros
  • Certains paramètres d’affichage

Par défaut, les profils sont présents dans le répertoire :

C:\Users\<username>\AppData\Roaming\Wireshark\profiles\<nom du profil>

Le nom du répertoire correspond ensuite au nom du profil. Vous pouvez donc importer des profils en les ajoutant à ce répertoire.

Pour accéder à l’interface de gestion des profils, il faut faire un clic droit en bas à droite sur : “Profile : <Nom du profil actif>”, puis sélectionner “Manage profiles”.

Vous pouvez ici créer un nouveau profil en cliquant sur le ( + ) , en supprimer un en cliquant sur le ( – ) ou en copier un ().

2 Les colonnes

Dans l’interface de visualisation des paquets, il est possible de sélectionner les informations que l’on souhaite afficher dans les colonnes et la façon dont elles sont affichées. Cela est très pratique pour avoir rapidement les informations sous les yeux et faciliter la lecture.

Pour choisir les colonnes que l’on souhaite afficher, il y a deux possibilités :

  • La première via le menu Edit > Preferences :

Vous pouvez ajouter des colonnes avec le ( + ), en enlever avec le ( – ), vous pouvez également modifier la manière dont les informations sont affichées en cliquant sur le champ Type, par exemple, on peut modifier le mode d’affichage de l’heure. Pour des colonnes personnalisées, il faut ensuite renseigner le champ field avec le champ que vous voulez voir apparaitre.

  • La seconde méthode consiste à sélectionner dans le détail d’un paquet le champ que vous souhaitez voir apparaitre en colonne en faisant clic droit puis “Apply as column”

Vous pouvez pareillement supprimer des colonnes en faisant un clic droit dessus puis “Remove this column”.

Une fois que vous avez sélectionné toutes vos colonnes, vous pouvez utiliser l’option “Auto-Size Columns” pour ajuster automatiquement la largeur de chaque colonne.

Voici quelques exemples de colonnes et les champs associés :

NomChamp
Numéro de trameframe.number
Receiver Adresswlan.ra
Transmitter Adresswlan.ta
Destination Adress​wlan.da
Source Adresswlan.sa
SSIDwlan.ssid
PHYwlan_radio.phy
Data rateswlan_radio.data_rate
Channelwlan_radio.channel

Vous pouvez retrouver l’intégralité des champs disponible ici :

https://www.wireshark.org/docs/dfref/w/wlan_radio.html

et https://www.wireshark.org/docs/dfref/w/wlan.html

3 La colorisation

La colorisation permet d’identifier rapidement les paquets dans la liste suivant certains critères définis à l’avance, cela peut être par type de trame, si la trame a été retransmise ou pas, par canal, par puissance de signal, … Il est possible de modifier le fond ainsi que la couleur d’écriture. Il existe deux méthodes pour créer de filtres de coloration :

  • La première consiste à ouvrir le menu View > Colorizing rules puis de créer, d’éditer les règles de colorisations comme vous le souhaitez, vous pouvez ensuite cocher ou décocher une règle pour l’activer ou la désactiver. Si un paquet correspond à plusieurs filtres, c’est le premier dans la liste qui est pris en compte, l’ordre est donc important et peut être modifier avec un glisser/ déposer.
  • La seconde méthode consiste à sélectionner dans le détail du paquet le champ que l’on souhaite appliquer comme filtre, à faire un clic droit dessus et lui appliquer une règle de colorisation. Cela l’appliquera ensuite à tous les paquets correspondant au même filtre sur le paquet sélectionné. Là encore, l’ordre d’application des règles est important, car c’est le premier qui correspond qui est appliqué.

2.4 Le nommage des équipements

Afin de faciliter la lecture des paquets, il est également possible de remplacer l’adresse MAC d’un équipement, cela permet de le retrouver ensuite de façon plus lisible. Pour cela il suffit de modifier le fichier “ether” situé dans le répertoire : C:\Users\<Nom d’utilisateur>\AppData\Roaming\Wireshark\Profiles\<Nom du profil>

Dans ce fichier, il faut mettre dans un premier temps l’adresse MAC (au format XX:XX:XX:XX:XX:XX) suivi du nom de l’équipement, séparé par un espace. Voici un exemple de fichier :

02:12:C7:E3:FD:38 XcoverPro
EA:83:E5:38:09:84 Xcover5
E6:CA:41:00:4B:DF Zebra
00:DC:B2:2B:02:10 AP1
00:DC:B2:2B:27:50 AP2
00:DC:B2:2B:3F:70 AP3

Une fois le fichier enregistré, il faut relancer Wireshark et voici le résultat :

Comment Wireshark peut faciliter l’analyse d’incidents Wi-Fi (Partie 1 : Capture de paquets sous Windows)

L’analyse des trames à l’aide de Wireshark ou d’un autre analyseur de trames est indispensable dans la résolution d’incidents réseau. Cela permet d’obtenir l’ensemble des informations échangées et ainsi comprendre précisément ce qu’il se passe. Mai cela devient vite un vrai casse-tête si nous ne sommes pas bien organisés et que nous ne recherchons pas les bons éléments. À travers ce livre blanc, nous allons essayer de vous montrer quelques astuces pour faciliter la résolution d’incidents Wi-Fi à l’aide de Wireshark sous Windows.

Pour cela, nous allons commencer par voir différents moyens de capture qui existe, nous allons ensuite étudier l’interface de Wireshark et voir comment sa personnalisation nous permet de visualiser plus lisiblement les informations que l’on souhaite et dans un troisième temps, nous verrons comment les outils intégrés à Wireshark nous permettent d’analyser plus en détails les trames capturées et nous permettent d’identifier des dysfonctionnements.

1 Capture avec une carte réseau

Pré-requis

  • Carte wifi en mode monitor (pour voir la liste des cartes wifi compatibles : https://secwiki.org/w/Npcap/WiFi_adapters )
  • Npcap installé avec la fonctionnalité “ Support raw 802.11 traffic ”
  • Wireshark en version supérieure à 3.0

La capture de trame 802.11 à l’aide de la carte wifi intégré a toujours été problématique avec Windows. En effet, il n’est que très rarement possible d’activer le mode Monitor qui permet de capturer la couche radio. Par défaut, c’est le mode Managed qui est activé et lui permet de récupérer les paquets à partir de la couche 3. La librairie Npcap permet de résoudre ce problème à condition que la carte wifi soit compatible (cf Pré-requis).

Vous pouvez également connaitre les modes supportés par votre carte réseau avec la commande suivante (Wi-Fi est le nom de la carte réseau) :

C:\Windows\System32\Npcap>WlanHelper.exe "Wi-Fi" modes

Attention : Avant de lancer la procédure, il est important de s’assurer que Winpcap n’est pas installé sur le poste.

La première étape consiste à activer le mode Monitor sur la carte réseau :

C:\Windows\System32\Npcap>WlanHelper.exe "Wi-Fi" mode monitor

Pour connaitre le mode utilisé actuellement par la carte réseau :

C:\Windows\System32\Npcap>WlanHelper.exe "Wi-Fi" mode

Il faut ensuite sélectionner le canal que l’on souhaite écouter (par exemple pour le canal 1) :

C:\Windows\System32\Npcap>WlanHelper.exe "Wi-Fi" channel 1

2 Capture avec un “module externe”

Nous n’avons pas toujours la possibilité de nous déplacer pour pouvoir réaliser les captures que nous souhaitons, ou bien nous souhaitons utiliser un équipement externe pour réaliser la capture. Je vous présente ici trois possibilités qui existent, il y en a d’autres, par exemple la possibilité d’utiliser une borne en mode “écoute” (attention, car l’activation du mode écoute désactive généralement la borne).

Wlan pi

Source de l’image : https://www.badgerwifi.co.uk/store/p/wlanpi

Pour capturer des trames avec le Wlan Pi, nous allons utiliser le script WLANPiShark2 : https://github.com/WLAN-Pi/WLANPiShark2 . Il va nous permettre depuis un ordinateur Windows de pouvoir récupérer les paquets capturés.

Voici un schéma explicatif fourni par l’auteur :

L’utilisation est ensuite très simple, car le script WLANPiShark2 est déjà intégré dans la distribution du Wlan Pi. Il suffit donc de modifier le script WLANPiShark.bat avec les informations que vous souhaitez et ensuite de l’exécuter avec les différents paramètres pour que cela fonctionne.

Vous pouvez retrouver tous les détails sur l’utilisation du script sur le github du projet : https://github.com/wifinigel/WLANPiShark

Ekahau Sidekick

Le module Sidekick d’Ekahau permet également de réaliser des captures de paquets, pour cela il suffit de le connecter à l’ordinateur, de lancer le logiciel Ekahau Capture (un compte Ekahau Connect est nécessaire) puis de sélectionner les canaux qui nous intéressent. Dans les options, nous avons la possibilité de choisir l’emplacement ou le fichier sera enregistré ainsi que le “dwell time” (temps d’écoute par canal). Une fois tout cela sélectionner, nous pouvons lancer la capture.

IMAGE EKAHAU CAPTURE

Via un autre ordinateur

Windows permet grâce à la fonctionnalité “Remote Packet Capture Protocol” de pouvoir recevoir dans wireshark des paquets capturés par un autre ordinateur. Pour cela, il faut aller sur la machine cliente dans la gestion des services et activer le service : Remote Packet Capture Protocol v.0 (experimental). Vous pouvez par ailleurs configurer le service en modifiant le port de destination ou en rajoutant une authentification.

Ensuite, sur la machine serveur, vous allez dans les options de captures, puis dans “Manage Interfaces” pour pouvoir ajouter des “remotes interfaces”. Vous pourrez ensuite ajouter l’adresse IP de la machine cliente et le port (par défaut 2002).

Ensuite, vous verrez les interfaces apparaître dans la liste des interfaces disponibles sous la forme suivante :

rpcap://<Adresse IP client>:2002/<ID de l’interface>

3 Lancement de la capture

Lors des analyses concernant des incidents Wi-fi il est généralement déconseillé d’utiliser les filtres de captures, cela pourrait masquer différents échanges qui ont lieu entre les différents équipements. Il est recommandé de capturer l’ensemble du trafic et ensuite d’appliquer des filtres de visualisation. Si le trafic est trop important, il est possible de le découper en plusieurs morceaux en fonction de la taille, de la durée ou du nombre de paquets.

En revanche, si le volume de données reste trop important ou bien que vous savez précisément ce que vous cherchez, il peut être intéressant de mettre en place des filtres de capture pour faciliter l’analyse.

Voici quelques exemples de filtres qui peuvent être utilisé :

wlan addr1 00:01:02:03:04:05 : Capture de paquet où l’adresse MAC 1 est 00:01:02:03:04:05 (addr2 pour l’adresse MAC 2, …)

wlan type mgt : Pour ne capturer que les trames de types management

no wlan type data : Pour ne pas capturer les trames de données

wlan type mgt subtype beacon : Pour ne capturer que les beacons

wlan type ctl and (subtype rts or subtype cts) : Pour ne capturer que les trames Clear-To-Send et Request-To-Send

Pour retrouver l’ensemble des filtres :

https://www.wireshark.org/docs/man-pages/pcap-filter.html