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.

802.11 retries : Explication des causes les plus communes et les corrections

Les retransmissions de trames ont lieu lorsque des trames doivent être renvoyées par un client ou par un point d’accès en raison d’une erreur. Le suivi du taux de retransmission va permettre de détecter d’éventuels soucis de configuration ou d’interférences, mais il n’est pas possible d’indiquer un seuil de bon fonctionnement. Suivant les services utilisés, le taux maximum permettant d’assurer un bon fonctionnement sera différent, des applications temps réels ou de la VoIP nécessiteront un taux de retransmission beaucoup plus bas (<10%) que du transfert de fichier ou de la navigation web par exemple. Dans la suite de cet article, nous allons expliquer ce qu’un taux de retransmission élevé implique et pourquoi cela peut devenir problématique, puis dans un second temps, nous allons voir les causes de retransmissions les plus fréquentes.

Lorsqu’une trame de type unicast n’est pas acquittés par le client celle-ci est retransmise par l’émetteur. Cela peut provenir de deux facteurs, soit la trame n’a jamais été reçu, soit le CRC n’est pas valide, ce qui peut indiquer une corruption de la trame et dans ce cas le récepteur ne transmet pas de trame d’acquittement. Cela peut être dans le sens client vers le point d’accès ou inversement. Suite à un échec de transmission, cela va avoir deux impacts sur la retransmission :

  • La vitesse de transmission (ou MCS) utilisé par la station va baisser afin de supporter plus facilement un SNR faible
  • La fenêtre de contention va doubler à chaque tentative dans le but de détecter plus facilement une éventuelle collision

Ces actions nécessitent du temps, et pas seulement le temps de retransmissions du paquet, mais en plus le paquet sera envoyé plus lentement avec un délai plus important.

Voici ici 3 des raisons de retransmissions parmi les plus fréquentes :

Interférences

Cause :

  • Interférences non 802.11
  • Co Channel Interference

Identification :

  • Analyse spectrale
  • Audit wifi

Résolution :

  • Identification des sources d’interférences
  • Utilisation du 5GHz ou du 6GHz (moins d’interférences et plus de canaux disponibles)

Signal faible

Cause :

  • Signal faible (zone non couverte)
  • Problème de roaming / Sticky client
  • Mauvaise configuration des puissances d’émissions

Identification :

  • Audit wifi
  • Analyse des échanges de paquets
  • Audit de la configuration et des logs de connexions

Résolution :

  • Activation de plus faibles vitesses de transmissions
  • Ré-ajustement de la configuration des bornes et des équipements
  • Activation des fonctionnalités 802.11k et 802.11r pour faciliter le roaming des clients

Collisions

Cause :

  • Hidden nodes
  • Nombre d’équipements trop important sur une borne

Identification :

  • Analyse du Airtime

Résolution :

  • Refaire une étude d’implantation des bornes et de la capacité

Le taux de retransmission est plus important dans un réseau sans fil que dans un réseau filaire en raison du moyen de transmission. L’air est un lieu de transmission partagée entre les clients, mais également avec d’autres équipements utilisant d’autres modes de communications ou se servant des mêmes fréquences à d’autres fins. Cette cohabitation rend la configuration de nos équipements particulièrement difficiles et nécessite à la fois une bonne connaissance et compréhension de l’environnement RF mais également un suivi régulier de cet indicateur en complément d’audit régulier pour anticiper d’éventuels incidents ou perturbations.