Introduction à WireShark
1. Présentation de Wireshark
Wireshark est un analyseur de trafic réseau (ou « sniffeur ») libre et open-source, utilisé pour :
- Surveiller, capturer et analyser les paquets (informations) qui circulent sur un réseau.
- Diagnostiquer les problèmes de réseau.
- Apprendre le fonctionnement des protocoles et la structure des données échangées.
- Mener des audits de sécurité.
Il est disponible sur la plupart des systèmes d'exploitation (Windows, macOS, Linux, *BSD...) et prend en charge une large gamme de protocoles (HTTP, HTTPS, DNS, FTP, SMTP, TLS, etc.).
Utilisations courantes
- Diagnostic réseau : Identifier et résoudre les problèmes de latence, de déconnexion, de congestion.
- Sécurité : Détecter des attaques, repérer du trafic malveillant.
- Apprentissage : Comprendre le fonctionnement interne des protocoles (TCP/IP, UDP, DNS, etc.).
2. Installation et configuration
2.1. Sur Windows
- Rendez-vous sur le site officiel de Wireshark : https://www.wireshark.org/.
- Téléchargez l'installateur Windows (64 bits ou 32 bits selon votre système).
- Au cours de l'installation, veillez à cocher la case pour installer Npcap (remplace WinPcap) qui permet la capture des paquets.
- Suivez les étapes d'installation par défaut (les choix par défaut conviennent à la plupart des usages).
2.2. Sur macOS
- Téléchargez le .dmg depuis https://www.wireshark.org/.
- Glissez l'application dans votre dossier « Applications ».
- Lors du premier lancement, macOS pourrait demander l'autorisation de capturer le trafic.
- Vous pouvez également installer ChmodBPF qui configure les autorisations pour l'interface de capture.
2.3. Sur Linux
- Utilisez votre gestionnaire de paquets (ex. : apt-get, dnf, pacman, etc.).
- Sur Ubuntu/Debian, par exemple :
apt update && apt install wireshark
- Durant l'installation, le système peut vous demander si vous souhaitez accorder aux utilisateurs non-root le droit de capturer des paquets. Acceptez si nécessaire.
3. Prise en main de l'interface
Une fois Wireshark installé et lancé, vous verrez l'interface principale qui se compose généralement de trois panneaux (lorsqu'une capture est ouverte) :
- Liste des paquets (Packet List) : affiche chaque paquet capturé, avec diverses informations de base (numéro, heure, source, destination, protocole, longueur, etc.).
- Détails du paquet (Packet Details) : un volet qui présente la structure « arborescente » du paquet (couche Ethernet, IP, TCP, HTTP, etc.).
- Hex/ASCII (Packet Bytes) : la représentation brute (hexadécimale et ASCII) du paquet.
Avant de capturer, la page d'accueil vous propose généralement :
- Les interfaces disponibles : lesquelles sont actives (Ethernet, Wi-Fi, Loopback, etc.).
- Les dernières captures récentes.
- Un champ de filtre de capture (optionnel).
4. Capture des paquets
4.1. Choisir l'interface
Pour commencer une capture, vous devez sélectionner l'interface réseau sur laquelle écouter. Par exemple :
- Votre interface Wi-Fi si vous êtes connecté en sans-fil.
- Votre interface Ethernet si vous êtes branché en filaire.
- L'interface « Loopback » (localhost) si vous voulez observer le trafic interne de la machine.
Dans Wireshark, vous verrez la liste des interfaces avec des indicateurs d'activité (petit graphe montrant le volume de trafic).
4.2. Lancer la capture
- Sélectionnez l'interface souhaitée.
- Cliquez sur le bouton bleu « Shark Fin » (en haut à gauche) pour démarrer la capture (ou double-cliquez sur la source de Capture)
Wireshark va alors commencer à collecter les paquets en temps réel. Vous verrez la liste se remplir.
4.3. Arrêter la capture
- Cliquez sur le bouton rouge « Stop » pour arrêter la capture.
- Vous pouvez alors naviguer dans les paquets capturés.
5. Filtres de capture et filtres d'affichage
5.1. Filtres de capture
Les filtres de capture s'appliquent avant que Wireshark ne capture effectivement les paquets. Cela permet de réduire la quantité de trafic stockée en mémoire ou sur disque.
- Exemple : pour ne capturer que le trafic vers/depuis l'adresse IP 192.168.1.10, utilisez :
- Pour capturer seulement le trafic TCP sur le port 80 (HTTP) :
Vous pouvez définir ce filtre dans le champ « Capture Filter » avant de démarrer l'enregistrement.
5.2. Filtres d'affichage
Les filtres d'affichage, quant à eux, s'appliquent après la capture. Ils permettent de filtrer dynamiquement les paquets déjà capturés pour ne voir que ceux qui vous intéressent.
- Exemple : pour n'afficher que les paquets TCP :
- Pour n'afficher que les paquets dont l'adresse IP source est 192.168.1.10 :
- Pour n'afficher que le trafic HTTP :
Le champ de filtre d'affichage se trouve en haut de la fenêtre principale. Vous pouvez également cliquer sur Expression (à droite du champ) pour accéder à un générateur de filtre.
5.3. Syntaxe de base des filtres d'affichage
Les opérateurs les plus courants :
- == : égal à
- != : différent de
- > ou < : supérieur ou inférieur
- && : ET logique
- || : OU logique
- ! : NON logique
Exemples :
- (ip.src == 192.168.1.10) && (tcp.port == 80) : paquets émis par 192.168.1.10 sur le port TCP 80.
- !(arp or dns) : tout sauf les paquets ARP ou DNS.
6. Analyse du trafic et fonctions avancées
6.1. Navigation dans les paquets
Une fois la capture arrêtée, vous pouvez parcourir la Liste de paquets. En sélectionnant un paquet, le panneau « Détails du paquet » vous montrera la structure du protocole, par couches.
6.2. « Follow Stream » (Suivre un flux)
Fonction essentielle pour reconstituer le fil de la conversation (TCP ou UDP).
- Cliquez droit sur un paquet > Follow > TCP Stream (ou HTTP Stream, SSL Stream, etc., selon le protocole).
- Wireshark reconstituera alors la totalité de la session entre un client et un serveur.
C'est très pratique pour analyser des requêtes HTTP, la négociation TLS, des échanges FTP, etc.
6.3. Déchiffrement TLS/SSL
Si vous possédez les clés privées du serveur (ou si vous utilisez un déchiffreur local en proxy), vous pouvez configurer Wireshark pour déchiffrer certains flux TLS/SSL et voir les données en clair.
- Dans Preferences > Protocols > TLS (ou SSL selon les versions), vous pouvez spécifier les clés privées.
- Cela n'est pas toujours possible en production (questions de sécurité/permissions).
6.4. Statistiques et graphes
Wireshark propose divers outils de statistiques :
- Statistics > Summary : Vue d'ensemble de la capture (durée, nombre total de paquets, taux, etc.).
- Statistics > Protocol Hierarchy : Pour voir la répartition des protocoles dans la capture.
- Statistics > Conversations : Pour voir les échanges par paires IP, TCP, UDP.
- Statistics > IO Graph : Permet de tracer l'évolution du trafic dans le temps.
7. Exemples pratiques
7.1. Analyser une requête HTTP
- Lancez la capture sur votre interface réseau.
- Dans votre navigateur web, rendez-vous sur un site en HTTP (non HTTPS), par exemple un petit site de test.
- Revenez sur Wireshark, arrêtez la capture.
- Dans la barre de filtre d'affichage, tapez :
Sélectionnez l'un des paquets de type GET. Dans le volet « Détails », vous verrez les en-têtes HTTP, l'URL demandée, etc.
7.2. Filtrer le trafic DNS
- Lancez la capture.
- Ouvrez un terminal/console et faites un ping vers un site (ex. ping example.com).
- Arrêtez la capture.
- Dans Wireshark, filtrez :
- Vous verrez les requêtes et réponses DNS (A, AAAA, etc.).
7.3. Dépannage d'un problème de connexion
Supposons qu'une application ne parvient pas à contacter le serveur.
- Lancez la capture sur votre interface.
- Démarrez l'application qui pose problème.
- Une fois que l'erreur se produit, arrêtez la capture.
- Recherchez l'IP du serveur ou le port d'écoute.
- Vérifiez si des paquets SYN (pour TCP) sont envoyés, si des réponses arrivent (SYN/ACK).
Si vous voyez que le SYN est envoyé mais pas de réponse, vous avez peut-être un problème de pare-feu ou le serveur ne répond pas.
8. Bonnes pratiques et sécurité
- Attention à la légalité : Il est illégal de capturer le trafic réseau qui ne vous appartient pas ou pour lequel vous n'avez pas d'autorisation. Assurez-vous de respecter la loi et la politique de votre organisation.
- Limiter la capture : Utilisez des filtres de capture pour éviter de saturer votre ordinateur avec trop de données.
- Analyser hors ligne : Vous pouvez exporter la capture au format .pcap ou .pcapng et l'analyser plus tard ou sur une autre machine.
- Protéger les données sensibles : Les paquets peuvent contenir des informations sensibles (mots de passe, cookies, tokens de session), surtout si les protocoles ne sont pas chiffrés. Soyez prudent avec ces données et supprimez la capture quand vous n'en avez plus besoin.
- Mettre à jour Wireshark : Les protocoles évoluent, Wireshark aussi. Des failles de sécurité peuvent également être corrigées dans de nouvelles versions. WireShark est connu pour avoir véhiculé des virus dans le monde entier pendant des années !! Prudence donc !
9. Ressources supplémentaires
- Documentation officielle : https://www.wireshark.org/docs/
- Wireshark User's Guide : https://www.wireshark.org/docs/wsug_html_chunked/
- Tutoriels vidéo (en anglais) sur YouTube, qui montrent des cas pratiques.
- La liste de diffusion wireshark-users pour discuter de problèmes avancés.
Conclusion
Wireshark est un outil puissant et polyvalent pour l'inspection et l'analyse de données réseau. Il est essentiel pour :
- Comprendre le fonctionnement des protocoles bas niveau.
- Diagnostiquer et résoudre des problèmes de performance ou de connectivité.
- Surveiller et renforcer la sécurité réseau.
En suivant les bonnes pratiques (notamment sur le plan légal et la protection de la vie privée), Wireshark se révèlera être un atout incontournable pour tout administrateur réseau, ingénieur sécurité ou passionné d'informatique.