Wireshark – Comment décoder un protocole ?
Sommaire
I. Présentation
Aujourd’hui, nous allons découvrir une nouvelle fonctionnalité de Wireshark qui permet de décoder un protocole. Cette fonctionnalité permet d’afficher les échanges applicatifs quand un port non standard est utilisé.
Par exemple, pour un serveur Web les ports standard sont 80 et 443, donc si vous utilisez le port 5000 Wireshark ne va pas vous afficher de flux HTTP : à la place du protocole HTTP, vous trouverez "data" dans les détails du paquet.
Avant de continuer, voici la liste des précédents articles de cette série sur Wireshark :
- Tutoriel - Installation pas-à-pas de Wireshark
- Tutoriel - Découverte de l'interface Wireshark
- Tutoriel - Astuces pour personnaliser l'interface de Wireshark !
- Tutoriel - Wireshark et les filtres de capture
- Tutoriel - Wireshark et les filtres d'affichage
- Tutoriel - Wireshark et la résolution de noms
- Tutoriel - Wireshark et les commentaires
- Tutoriel - Wireshark : activer la géolocalisation d’adresses IP
- Tutoriel - Wireshark - Comment déchiffrer les flux TLS comme le HTTPS ?
- Téléchargement - Wireshark
II. Comment découvrir le flux applicatif ?
A. Quelle méthode utiliser ?
Pour découvrir le flux applicatif derrière un port non standard, il n’y a qu’un seul moyen dans Wireshark, c’est de regarder dans la vue « Packets Octets ». Pour se faire, il faut sélectionner un paquet dans la liste des paquets de votre fichier de capture.
B. Limite de cette méthode
Cette méthode est pratique quand les flux ne sont pas chiffrés, si on souhaite utiliser cette méthode avec des flux chiffrés il faudra d’abord déchiffrer les flux que ce soit via le certificat ou en live en enregistrant les clés de sessions TLS (comme nous l'avons vu précédemment).
Une autre limite à cette méthode est sur les applications éditeurs propriétaires non reconnus par Wireshark, car ceux-ci n’ont pas été ajoutés à la liste des protocoles connus par Wireshark.
III. Utilisation de la fonctionnalité Decode As
A. Trouver les paquets avec des données
Pour trouver des paquets avec des données applicatives, vous pouvez regarder la taille des paquets envoyés sur le réseau.
Dans le panneau « Packet List », vous devez regarder la colonne « Length » à la recherche de paquets supérieurs à 64 octets.
Dans l’image ci-dessus, vous voyez des paquets à 257 octets (en-têtes protocolaires + données). Dans la colonne "Info", vous pouvez voir la taille des données transmises sur le réseau, ici 199 octets. Donc nous allons examiner les paquets avec des données applicatives.
B. Découverte du protocole utilisé
Pour examiner le paquet, nous allons regarder le détail du paquet. Dans cette partie, on va s'intéresser au port TCP utilisé.
Le port TCP qui m’intéresse dans ce cas présent est le port de destination, ici « 1512 ». Vous pouvez remarquer qu'en dessous de TCP, nous avons « DATA » au lieu de l’application comme TLS, http, smtp… Car Wireshark ne reconnaît pas le protocole.
Note : Wireshark s’appuie sur les numéros de port TCP/UDP pour reconnaître l’application.
Maintenant nous allons regarder le panneau « Packet Octets ».
Dans l’image ci-dessus, on arrive à voir des données applicatives :
<188>568: Feb 24 16:03:46.718 CET: %SEC_LOGIN-4-LOGIN_FAILED: Login failed [user: test] [Source: 10.10.10.10] [localport: 22] [Reason: Login Authentication Failed] at 16:03:46 CET Thu Feb 24 2022
Ce type de données ressemble à un message de log envoyé vers un syslog.
C. Décoder le protocole
Maintenant que nous avons identifié le protocole utilisé, nous allons le décoder pour avoir un affichage plus lisible et correspondant à l’applicatif.
Sur la liste des paquets, effectuez un clic droit sur un paquet pour sélectionner « Décoder comme… »
Une nouvelle fenêtre s’ouvre, pour configurer le protocole :
Ici, il faut sélectionner le port TCP que nous souhaitons déclarer comme port TCP applicatif dans la « colonne valeur ». Pour cela, cliquez sur « le numéro de port TCP ». Ici on choisit : 1512.
Ensuite, il reste à modifier une colonne : la colonne « Actual » qui va nous permettre de choisir le protocole à décoder. Il suffit de cliquer sur « (none) » pour afficher la liste des protocoles.
Sélectionnez « Syslog » puis cliquez sur « OK » une fois votre configuration terminée.
N.B : Vous pouvez taper les premières lettres du protocole pour arriver sur celui dont vous avez besoin.
D. Vérification
Une fois que vous avez cliqué sur « OK », Wireshark recharge automatiquement votre capture réseau.
Maintenant à la place de TCP, vous allez voir le protocole SYSLOG et dans la colonne info , vous allez voir les messages applicatifs.
Par ailleurs, dans le détail du paquet, vous devez voir apparaître « Syslog » au lieu de DATA :
IV. Modifier les ports d’un protocole
Il est possible de modifier les ports d’un protocole dans Wireshark en passant par « Editer » afin d’ajouter des ports en dur dans la configuration de Wireshark.
Vous devez cliquer sur « Editer » ensuite « Préférences… ».
Une nouvelle fenêtre s’ouvre, cliquez sur la flèche à côté de "Protocols" pour dérouler la liste des protocoles de Wireshark.
Cliquez sur « Syslog » dans cette liste.
Vous pouvez ajouter une liste de ports en utilisant une virgule pour la séparation.
Une fois terminée, vous devez cliquer sur OK pour recharger la trace réseau.
N.B : le fond vert valide la syntaxe, un fond rouge vous avertit d’une erreur.
V. Conclusion
Cet article sur Wireshark et la fonctionnalité "décoder un protocole" peut-être une aide précise lors d'une analyse liée à un incident de cybersécurité si les ports par défaut sont modifiés, ou bien si les équipes en charge des applications utilisent des ports exotiques.
Le prochain article sera sur le logiciel TraceWrangler qui permet d’anonymiser un fichier de capture.
Sympa comme tuto, en complément un tuto sur la manière de créer les LUA pour avoir des protocoles « maison » serait top!