Wireshark et les filtres de capture
Sommaire
I. Présentation
Dans ce quatrième article de la série sur Wireshark, nous allons aborder l’une des fonctionnalités phares de notre outil de capture préféré : les filtres de capture.
Pour rappel, voici les précédents articles :
- Tutoriel - Installation pas-à-pas de Wireshark
- Tutoriel - Découverte de l'interface Wireshark
- Tutoriel - Astuces pour personnaliser l'interface de Wireshark !
II. Les filtres de capture Wireshark
Les filtres de capture permettent comme le nom l’indique de filtrer les flux de capture en entrée afin de voir seulement le trafic qui nous intéressent, pour ensuite l’analyser plus facilement, car la capture sera épurée.
Wireshark s’appuie sur la librairie libpcap pour réaliser les filtres de capture comme tcpdump. Donc, si vous êtes habitués à faire des filtres avec tcpdump, vous ne serez pas perdus. 😊
A. Où faire un filtre de capture ?
Après avoir démarré Wireshark, vous pouvez ajouter un filtre directement depuis la page d’accueil en sélectionnant votre interface de capture.
Vous pouvez aussi ajouter un filtre de capture en allant dans le menu « Capture » et ensuite « Options… ».
Une nouvelle boîte de dialogue apparaît et vous pouvez ajouter votre filtre, sans omettre de sélectionner votre interface de capture.
B. Notre premier filtre de capture
Maintenant que nous savons où déclarer notre filtre de capture au sein de l’interface de Wireshark, il est temps de faire notre premier filtre.
Pour commencer, nous allons utiliser un filtre se basant sur une adresse IP afin de récupérer dans la capture uniquement les paquets correspondants à une adresse IP spécifique. Pour cet exemple, je vais passer par le menu « Capture » pour faire mon filtre.
Donc, pour faire un filtre sur une adresse IP il suffit d’utiliser le filtre « host » et d’ajouter l’adresse IP que nous souhaitons voir apparaître dans notre capture. Pour l’adresse IP « 192.168.1.4 », on obtient le filtre suivant :
host 192.168.1.4
Note : si votre filtre est bon, il apparaîtra sur un fond vert (comme ci-dessus) tandis qu’en cas d’erreur un fond rouge va apparaître avec un message. Par exemple :
Dès que vous avez mis votre filtre en place, vous pouvez lancer votre capture, et vous allez voir dans l’angle en haut à gauche de Wireshark que votre filtre sera affiché.
Vous pouvez constater que, dans votre capture, vous voyez seulement les flux en provenance ou bien en réception de cette adresse IP. Autrement dit, les paquets où cette adresse IP est la source ou la destination.
C. Gestion des filtres de capture
Nous venons de voir comment créer notre premier filtre de capture Wireshark, donc, désormais nous allons voir la gestion des filtres de captures.
Premièrement, voyons comment sauvegarder un filtre.
Si vous ne l’avez pas remarqué devant votre filtre de capture il y a un petit signet, suivant la couleur il vous indique si le filtre est enregistré ou non.
Signet vert | Filtre non sauvegardé |
Signet jaune | Filtre sauvegardé |
Si vous cliquez sur le signet de la gestion des filtres, vous remarquez que des filtres de capture sont déjà préenregistrés sur Wireshark, comme pour le protocole HTTP.
Pour sauvegarder notre filtre d’affichage, il suffit de cliquer sur le signet puis "Sauvegarder ce filtre".
Une nouvelle ligne apparaît pour donner un nom à notre filtre, afin de l’identifier facilement.
Il suffit de double cliquer sur « nouveau filtre de capture » pour changer le nom et valider en cliquant sur « OK ». Pour ma part, je nomme ce nouveau filtre "host nas".
De ce fait, le signet passe en couleur jaune pour indiquer que la sauvegarde du filtre est effective, et celui-ci se retrouve dans la liste des filtres proposés.
À l’inverse, on peut supprimer un filtre de capture en quelques clics. Pour supprimer un filtre de capture, il suffit de cliquer sur le signet et supprimer ce filtre, immédiatement la couleur du signet repasse au vert.
Suite à la suppression du filtre, voici l'état du signet :
Deuxièmement, on peut dupliquer un filtre de capture, ce qui sera pratique lorsque vous avez plusieurs filtres similaires à mémoriser.
Note : j’ai réenregistré mon filtre précédemment créé pour cet exemple afin de pouvoir le dupliquer.
Pour dupliquer un filtre, il faut cliquer sur le signet comme précédemment, et ensuite "Gérer les filtres de capture".
Vous voyez de nouveau la même fenêtre que pour sauvegarder votre filtre. Pour le dupliquer, il suffit de cliquer sur l’icône suivant qui est intuitive :
Dès que vous avez cliqué sur l’icône, c’est une copie conforme du filtre existant qui sera créée. Il suffit de renommer le filtre puis cliquer sur « OK » (même principe que pour la sauvegarde) pour valider. Désormais, j'ai deux fois le filtre "host nas".
Note : depuis la fenêtre de gestion des filtres de capture, vous pouvez sauvegarder/supprimer ou ajouter directement des filtres.
D. Où sont sauvegardés nos filtres et sous quel format ?
Pour savoir où sont sauvegardés nos filtres Wireshark, il faut retourner dans la fenêtre « Gestion des filtres de capture », puis en bas à droite, vous avez la localisation du fichier :
Par défaut, il se trouve dans le profil de l’utilisateur au sein du répertoire suivant :
C:\Users\votre_user\AppData\Roaming\Wireshark
Le fichier se nomme « cfilters » comme vous pouvez le voir sur ma machine :
En fait, le fichier "cfilters" est un simple fichier texte, donc vous pouvez aussi passer par ici pour gérer vos filtres de capture. On voit bien la correspondance entre le contenu de ce fichier et l'interface de Wireshark.
E. Les opérateurs des filtres
Après avoir fait notre premier filtre de capture, il est possible d’ajouter des opérateurs de plusieurs filtres pour affiner notre analyse sur un protocole, par exemple. Autrement dit, cela va permettre de créer des conditions basées sur des opérateurs tels que "ET" ou "OU".
Voici la liste des opérateurs disponibles :
Description | Valeurs | Exemples |
Ne pas inclure dans la capture | not | not port 53 |
! | !port 53 | |
Concaténer des filtres de capture (et) | and | port 53 and icmp |
&& | port 53 && icmp | |
Capturer des filtres au choix (ou) | or | port 53 or port 80 |
|| | port 53 || port 80 |
Voici un exemple sur Wireshark où l'on filtre sur les ports "53" et "80" :
III. Exemples de filtres de capture Wireshark
Avant de passer à la conclusion, et pour vous aider à imaginer vos propres filtres, je souhaitais vous donner quelques exemples de filtre que vous pouvez utiliser avec Wireshark :
Filtres de captures | Exemples |
Sur une adresse MAC | ether host 00:00:5e:00:53:00 |
Sur un réseau | net 192.168.1.0/24 |
Sur le protocole QUIC | udp port 443 |
Exclure le trafic de type broadcast | not broadcast |
Le protocole ICMP | icmp |
Le protocole OSPF | ip proto ospf |
Sur un numéro de VLAN | vlan 10 |
Sur le trafic HTTPS | tcp port 443 |
En complément et si vous souhaitez avoir d’autres exemples de filtres de capture, ou en apprendre davantage, visitez le Wiki officiel de Wireshark ou le manuel des filtres : pour chaque protocole, le wiki de Wireshark met à disposition les filtres de captures associés.
IV. Conclusion et retour d’expérience
Pour information, je dois passer 90% de mon temps de travail dans l’analyse de traces réseau pour des problèmes de performances applicatives. Du coup, quand je dois mettre en place des captures réseau, je ne filtre jamais mes captures comme nous venons de le faire, car on peut avoir un problème de performance d’une application qui subit les conséquences d’une réponse d’un serveur DNS lent, ou bien cette lenteur peut être dû à une application qui tourne en parallèle qui impact l’application principale. Donc, si je filtre sur l’application directement, je pourrais louper le flux qui génère une problématique. Il est recommandé, dans le cadre d’un troubleshooting, de regarder les flux d’infrastructures dans leur ensemble.😊
Dans ce nouvel article sur Wireshark, nous venons de voir la gestion des filtres de capture donc vous pouvez maintenant concevoir et sauvegarder vos propres filtres. Gardez mon conseil en tête afin d'utiliser les filtres de capture seulement quand vous êtes sur à 100% de ce que vous souhaitez analyser. Enfin, et je n'en ai pas parlé avant, sachez qu'avec les filtres de capture, vous pouvez filtrer sur une valeur d’un protocole (par exemple, les paquets "echo" avec le protocole ICMP).
Le prochain article de la série sera sur les filtres d’affichage de Wireshark, et nous verrons que les filtres d’affichage n’ont pas la même syntaxe que les filtres de capture.