**Objectif :** Wireshark est l'analyseur de protocoles réseau le plus utilisé au monde. Il permet de capturer le trafic réseau en temps réel ou d'analyser des fichiers de capture (`.pcap`, `.pcapng`), de décortiquer les protocoles couche par couche, et d'appliquer des filtres puissants pour isoler et comprendre les communications. **Source :** [https://www.wireshark.org/](https://www.wireshark.org/) --- ### 🚀 **Démarrage et Capture** #### Lancer Wireshark * Généralement lancé depuis le menu de votre OS ou via la commande `wireshark` (peut nécessiter `sudo` sous Linux pour accéder aux interfaces réseau). #### Sélectionner une Interface et Démarrer la Capture * Au démarrage, Wireshark liste les interfaces réseau disponibles. * Double-cliquez sur l'interface souhaitée (ex: `eth0`, `Wi-Fi`) pour démarrer la capture immédiatement. * Alternativement, sélectionnez l'interface et cliquez sur l'icône en forme d'aileron de requin bleu (ou `Capture -> Start`). #### Options de Capture (Avant de démarrer) * Accès via `Capture -> Options...` (ou l'icône d'engrenage à côté des interfaces). * **Filtres de Capture (BPF Syntax):** Permettent de ne capturer *que* le trafic correspondant au filtre. Utile pour limiter la taille des captures sur des réseaux très chargés. * `host 192.168.1.10` : Trafic vers ou depuis cette IP. * `net 192.168.1.0/24` : Trafic vers ou depuis ce sous-réseau. * `port 80` : Trafic sur le port 80 (source ou destination). * `tcp port 443` : Trafic TCP sur le port 443. * `udp port 53` : Trafic UDP sur le port 53. * `src host 10.0.0.5` : Trafic *provenant* de cette IP. * `dst port 22` : Trafic *destiné* au port 22. * `icmp` : Trafic ICMP uniquement. * Combinaisons : `host 192.168.1.10 and port 80`, `not port 22`, `port 80 or port 443`. * **Fichiers de sortie :** Configurer la sauvegarde automatique dans un ou plusieurs fichiers, avec des limites de taille ou de temps. #### Arrêter la Capture * Cliquez sur l'icône carrée rouge d'arrêt (ou `Capture -> Stop`). --- ### 🎨 **Interface Principale** Wireshark présente généralement 3 panneaux principaux : 1. **Liste des Paquets (Packet List) :** Chaque ligne représente un paquet capturé (Numéro, Temps, Source IP, Destination IP, Protocole, Infos). Les couleurs indiquent souvent le type de trafic (configurable). 2. **Détails du Paquet (Packet Details) :** Arborescence montrant les différentes couches (Frame, Ethernet, IP, TCP/UDP, Application) du paquet sélectionné dans la liste. Permet d'inspecter les en-têtes et les données de chaque couche. 3. **Octets du Paquet (Packet Bytes) :** Représentation hexadécimale et ASCII du contenu brut du paquet sélectionné. --- ### 🔍 **Filtres d'Affichage (Display Filters)** * **Objectif :** Masquer les paquets non pertinents *après* la capture pour se concentrer sur des communications spécifiques. La syntaxe est différente des filtres de capture. * **Zone de Saisie :** Barre verte/rouge en haut de la fenêtre principale. #### Syntaxe de Base * `protocole` : Affiche uniquement les paquets de ce protocole (ex: `tcp`, `udp`, `http`, `dns`, `smb`, `arp`, `icmp`). * `champ [opérateur] valeur` : Filtre basé sur la valeur d'un champ spécifique d'un protocole. #### Opérateurs Courants * `==` ou `eq` : Égal à * `!=` ou `ne` : Différent de * `>` ou `gt` : Supérieur à * `<` ou `lt` : Inférieur à * `>=` ou `ge` : Supérieur ou égal à * `<=` ou `le` : Inférieur ou égal à * `contains` : Le champ (ou le paquet entier `frame`) contient la chaîne de caractères ou la séquence d'octets. * `matches` ou `~` : Le champ correspond à une expression régulière (PCRE). #### Opérateurs Logiques * `&&` ou `and` : ET logique * `||` ou `or` : OU logique * `!` ou `not` : NON logique * Parenthèses `()` pour grouper les expressions. #### Exemples de Filtres d'Affichage Utiles * **Par IP :** * `ip.addr == 192.168.1.10` (Source ou Destination) * `ip.src == 10.0.0.5` (Source uniquement) * `ip.dst == 8.8.8.8` (Destination uniquement) * `not ip.addr == 192.168.1.1` (Exclure une IP) * **Par Port :** * `tcp.port == 443` (Port TCP source ou destination) * `udp.port == 53` (Port UDP source ou destination) * `tcp.dstport == 80` (Port TCP destination uniquement) * **Par Protocole Applicatif :** * `http` (Tout le trafic HTTP) * `http.request.method == "POST"` (Requêtes HTTP POST) * `http.response.code == 404` (Réponses HTTP 404 Not Found) * `dns` (Tout le trafic DNS) * `dns.qry.name == "www.google.com"` (Requêtes DNS pour ce nom) * `smb2` (Trafic SMB version 2/3) * `tls` (Trafic TLS/SSL, souvent sur port 443) * `dhcp` (Trafic DHCP) * **Par Flags TCP :** * `tcp.flags.syn == 1 and tcp.flags.ack == 0` (Paquets SYN purs - début de connexion) * `tcp.flags.reset == 1` (Paquets RST - connexion réinitialisée) * `tcp.flags.fin == 1` (Paquets FIN - fin de connexion) * **Par Contenu :** * `frame contains "password"` (Recherche la chaîne "password" n'importe où dans le paquet) * `http contains "USER-AGENT: curl"` (Recherche dans les paquets HTTP) * `tcp.payload contains 4d:5a` (Recherche la séquence d'octets `MZ` dans le payload TCP) * **Combinaisons :** * `ip.addr == 192.168.1.50 && tcp.port == 80` (Trafic HTTP vers/depuis 192.168.1.50) * `http || dns` (Affiche le trafic HTTP ou DNS) * `ip.addr == 10.0.0.10 and not port 53` (Trafic vers/depuis 10.0.0.10, sauf DNS) > [!Astuce] > Wireshark propose l'auto-complétion pour les filtres. Commencez à taper un protocole (ex: `ip.`) pour voir les champs disponibles. La barre de filtre devient verte si la syntaxe est valide, rouge sinon. Cliquez sur "Expression..." pour un constructeur de filtres graphique. --- ### 🔬 **Analyse du Trafic** #### Suivre une Conversation (Stream) * **Objectif :** Reconstituer et visualiser l'échange de données complet entre deux points pour un protocole spécifique. * **Comment faire :** Clic droit sur un paquet de la conversation -> `Follow` -> `TCP Stream` (ou `UDP Stream`, `HTTP Stream`, `TLS Stream`, etc.). * **Usage :** Très utile pour lire des requêtes/réponses HTTP, voir des échanges de données applicatives, ou comprendre le déroulement d'une connexion TCP. #### Statistiques * Accès via le menu `Statistics`. * **Conversations :** Liste les échanges entre paires d'adresses (Ethernet, IPv4, IPv6, TCP, UDP). Utile pour voir qui communique le plus avec qui. * **Endpoints :** Similaire à Conversations, mais liste toutes les adresses uniques et leurs statistiques de trafic. * **Protocol Hierarchy :** Montre la répartition du trafic par protocole. Utile pour avoir une vue d'ensemble rapide de ce qui transite sur le réseau. * **IO Graphs :** Permet de visualiser le débit du trafic (total ou filtré) au fil du temps. Utile pour repérer des pics d'activité ou des transferts de données importants. * **Resolved Addresses :** Affiche les correspondances entre adresses IP/MAC et les noms résolus (DNS, NetBIOS). #### Exportation d'Objets * **Objectif :** Extraire des fichiers transférés via certains protocoles. * **Comment faire :** `File -> Export Objects -> HTTP...` (ou `SMB`, `DICOM`, etc.). * **Usage :** Permet de récupérer des images, des exécutables, des documents, etc., téléchargés via HTTP ou transférés via SMB. #### Analyse Experte * **Objectif :** Laisser Wireshark identifier des problèmes potentiels ou des anomalies dans la capture. * **Comment faire :** `Analyze -> Expert Information`. * **Usage :** Peut signaler des retransmissions TCP excessives, des erreurs, des paquets malformés, etc. (Notes, Chats, Warnings, Errors). #### Navigation et Recherche * `Ctrl + F` (ou `Edit -> Find Packet...`) : Rechercher un paquet basé sur un filtre d'affichage, une chaîne hexadécimale ou une chaîne de caractères. * `Ctrl + G` (ou `Go -> Go to Packet...`) : Aller directement à un numéro de paquet spécifique. * `Ctrl + Flèche Droite` / `Ctrl + Flèche Gauche` : Naviguer vers le paquet suivant/précédent dans l'historique de sélection. * `Clic droit -> Apply as Filter` / `Prepare a Filter` : Créer rapidement des filtres basés sur les champs du paquet sélectionné. --- ### ✨ **Astuces Utiles** * **Coloration :** Personnalisez les règles de coloration (`View -> Coloring Rules...`) pour mettre en évidence le trafic qui vous intéresse le plus (ex: paquets RST en rouge vif, trafic DNS en jaune). * **Profils :** Créez différents profils (`Edit -> Configuration Profiles...`) pour sauvegarder des ensembles de configurations (colonnes affichées, règles de coloration, filtres préférés) adaptés à différents types d'analyses. * **Colonnes :** Personnalisez les colonnes affichées dans la liste des paquets (`Edit -> Preferences -> Appearance -> Columns`) pour afficher directement des informations pertinentes (ex: `http.host`, `dns.qry.name`). * **Résolution de Noms :** Activez/désactivez la résolution de noms (`View -> Name Resolution`) pour voir les noms DNS/NetBIOS au lieu des adresses IP (peut ralentir l'affichage). * **Commentaires :** Ajoutez des commentaires aux paquets (`Clic droit -> Packet Comment...`) pour annoter vos découvertes pendant l'analyse.