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 :