Aller au contenu

Wireshark

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/


🚀 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).

  • 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.