Chapitre 1413 minDébutant
Lire une capture Wireshark couche par couche
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- capturer du trafic avec Wireshark, dans un cadre autorisé ;
- écrire des filtres de capture et des filtres d'affichage ;
- lire une trame couche par couche ;
- reconnaître les échanges ARP, DNS, DHCP et TCP du cours.
5 exercices corrigés
Wireshark est un analyseur de trafic réseau gratuit qui capture les trames passant par une interface et les affiche décodées couche par couche (Ethernet, IP, TCP ou UDP, puis le protocole applicatif). Ce chapitre explique comment capturer légalement, la différence entre filtres de capture et filtres d'affichage, comment lire une trame champ par champ, et comment reconnaître dans une capture les échanges vus dans ce cours : ARP, DHCP, DNS, poignée de main TCP, HTTPS.
Ce que Wireshark montre, et dans quel cadre
Wireshark met sous tes yeux tout ce que ce cours décrit : l'encapsulation, les adresses MAC qui changent, les requêtes ARP, la poignée de main TCP. C'est l'outil qui transforme la théorie en observation, et un outil de dépannage quotidien pour un administrateur. Il est libre, disponible sous Windows, macOS et Linux.
Installer et capturer
- Windows : l'installeur de wireshark.org propose d'installer Npcap, le pilote de capture. Accepte.
- Linux :
sudo apt install wireshark, réponds « oui » à la question sur les utilisateurs non privilégiés, puis ajoute-toi au groupe :sudo usermod -aG wireshark $USER(et reconnecte-toi). Ne lance pas l'interface graphique enroot. - Sur un serveur sans interface graphique, capture avec tcpdump et ouvre le fichier dans Wireshark sur ton poste :
sudo tcpdump -i enp0s3 -nn -w /tmp/capture.pcapng port 53 or arp
Où capturer ? Une carte réseau ne voit que le trafic qui lui est destiné, plus les broadcasts et le multicast : un switch n'envoie pas à ton poste les trames des autres. Pour observer le trafic d'une autre machine, on configure sur le switch administrable un port miroir (SPAN), qui recopie le trafic d'un port vers celui de l'analyseur. En Wi-Fi, capturer le trafic des autres demande une carte en mode moniteur et, de toute façon, les données sont chiffrées.
L'écran de Wireshark
Après avoir choisi l'interface (celle qui a du trafic, souvent « Ethernet » ou enp0s3) et lancé la capture, trois volets s'affichent :
- La liste des trames : une ligne par trame, avec son numéro, l'heure relative, les adresses source et destination, le protocole le plus haut reconnu, la longueur et un résumé (colonne Info). Les couleurs aident : en noir et rouge, les problèmes (retransmissions, RST).
- Le détail de la trame sélectionnée, en arbre : une ligne par couche, que tu déplies : la couche la plus basse (la trame) en haut, l'application en bas. C'est l'encapsulation, vue de l'extérieur vers l'intérieur.
- Les octets bruts, en hexadécimal et en ASCII. Cliquer sur un champ du détail surligne ses octets.
Filtres de capture et filtres d'affichage
Wireshark a deux langages de filtre, qu'on confond souvent.
| Filtre de capture | Filtre d'affichage | |
|---|---|---|
| Quand | Avant la capture : ce qui n'est pas retenu est perdu | Après : il masque, sans rien supprimer |
| Syntaxe | Celle de tcpdump (BPF) | Celle de Wireshark, avec les noms de champs |
| Exemple : une machine | host 192.168.10.70 | ip.addr == 192.168.10.70 |
| Exemple : un port | port 53 | udp.port == 53 ou dns |
| Usage | Capture longue, serveur chargé | Tous les jours, pour analyser |
Les filtres d'affichage à connaître :
| Filtre | Ce qu'il montre |
|---|---|
arp | Requêtes et réponses ARP |
dhcp | Échanges DHCP (le DORA) |
dns | Requêtes et réponses DNS |
icmp ou icmpv6 | ping, erreurs ICMP, et en IPv6 tout NDP |
ip.addr == 192.168.10.70 | Tout ce qui vient de cette adresse ou y va |
ip.src == 192.168.10.70 | Seulement ce qui en part |
eth.addr == 3c:52:82:4a:10:7e | Tout ce qui concerne cette adresse MAC |
tcp.port == 443 | Le trafic TCP sur le port 443, dans les deux sens |
tcp.flags.syn == 1 && tcp.flags.ack == 0 | Les demandes de connexion TCP (premier SYN) |
tcp.flags.reset == 1 | Les connexions refusées ou coupées |
tcp.analysis.retransmission | Les segments retransmis : signe de pertes |
http.request | Les requêtes HTTP en clair |
tls.handshake.type == 1 | Les débuts de connexion TLS (Client Hello) |
dns.qry.name contains "sorbier" | Les questions DNS qui contiennent ce mot |
| `!(arp |
Lire une trame couche par couche
Le poste 192.168.10.70 ouvre une connexion vers l'application de gestion (192.168.10.179, port 443). Voici le détail de la première trame, celle du SYN :
Frame 12: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface \Device\NPF_{…}
Ethernet II, Src: 3c:52:82:4a:10:7e, Dst: 00:1a:2b:3c:4d:5e
Destination: 00:1a:2b:3c:4d:5e
Source: 3c:52:82:4a:10:7e
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.10.70, Dst: 192.168.10.179
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Total Length: 52
Flags: 0x2, Don't fragment
Time to Live: 128
Protocol: TCP (6)
Source Address: 192.168.10.70
Destination Address: 192.168.10.179
Transmission Control Protocol, Src Port: 51610, Dst Port: 443, Seq: 0, Len: 0
Source Port: 51610
Destination Port: 443
Sequence Number: 0 (relative sequence number)
Flags: 0x002 (SYN)
Window: 64240
Lis-la de haut en bas, c'est-à-dire de la couche 1 à la couche 4 :
- Frame : ce que la carte a vu, 66 octets (sans préambule ni FCS).
- Ethernet II (couche 2) : l'adresse MAC de destination n'est pas celle du serveur mais celle de la passerelle (
00:1a:2b:3c:4d:5e, l'interface VLAN 10 du switch de cœur), puisque le serveur est dans un autre réseau (chapitre 9). Le champ Type0x0800annonce de l'IPv4. - IPv4 (couche 3) : les adresses de bout en bout, un TTL de 128 (le poste est sous Windows), le protocole 6, c'est-à-dire TCP. La longueur totale de 52 octets comprend 20 octets d'en-tête IP et 32 octets d'en-tête TCP (20 octets fixes et 12 d'options, dont la taille maximale de segment, le MSS).
- TCP (couche 4) : un port source éphémère, le port de destination 443, le seul drapeau SYN, et aucune donnée (
Len: 0). Wireshark affiche des numéros de séquence relatifs, qui commencent à 0, pour faciliter la lecture ; le vrai numéro initial est aléatoire.
Reconnaître les échanges du cours
ARP. Filtre arp. Une requête en broadcast (Who has 192.168.10.126? Tell 192.168.10.70), une réponse en unicast (192.168.10.126 is at …). Une suite de requêtes sans réponse signifie que la machine cherchée est éteinte, absente du réseau ou dans un autre VLAN.
DHCP. Filtre dhcp. Quatre lignes : DHCP Discover, Offer, Request, ACK, avec l'adresse source 0.0.0.0 pour le Discover. Dans le détail de l'Offer, les options : Router, Domain Name Server, IP Address Lease Time. Pour en provoquer un : ipconfig /release puis ipconfig /renew pendant la capture.
DNS. Filtre dns. Une requête Standard query A intranet.sorbier.example, puis la réponse Standard query response, avec les enregistrements (ici un CNAME puis un A). Souvent, une requête AAAA part en même temps : le système demande les deux adresses.
La poignée de main TCP. Filtre tcp.port == 443. Trois lignes [SYN], [SYN, ACK], [ACK], puis les données. Un [RST, ACK] en réponse au SYN : port fermé. Des SYN répétés sans réponse, marqués TCP Retransmission : port filtré par un pare-feu, ou serveur injoignable.
HTTPS. Après la poignée de main TCP, le Client Hello de TLS. Le contenu est chiffré, mais le nom du site demandé reste souvent visible en clair dans l'extension SNI (Server Name Indication) : un pare-feu peut filtrer par nom de site sans déchiffrer. Avec ECH (Encrypted Client Hello), que les navigateurs récents utilisent quand le site le permet, ce nom est chiffré à son tour et seul un nom générique de l'hébergeur reste visible.
HTTP en clair. Filtre http.request, puis clic droit, « Suivre », « Flux TCP » : la requête et la réponse s'affichent en texte, y compris un mot de passe envoyé par un formulaire. C'est la démonstration la plus parlante de l'intérêt de HTTPS.
Les menus qui font gagner du temps
- Statistiques → Hiérarchie des protocoles : la répartition du trafic par protocole. Utile pour repérer un flux inattendu.
- Statistiques → Conversations : qui parle à qui, combien. Trie par octets pour trouver la machine qui sature un lien.
- Analyser → Informations expertes : retransmissions, paquets hors d'ordre, fenêtres pleines, regroupés par gravité.
- Analyser → Suivre → Flux TCP ou UDP : reconstitue un échange complet.
Exercices
Exercice 1 sur 5 Écrire des filtres d'affichage Réussi À revoir
Écris le filtre d'affichage Wireshark qui montre :
- tout le trafic du serveur
192.168.10.178; - les requêtes et réponses DNS ;
- les connexions TCP refusées ;
- le trafic SMB (port 445) du poste
192.168.10.70; - tout sauf l'ARP, le DNS et le trafic SSH de ta propre session (port 22).
Voir la réponseMasquer la réponse de l'exercice 1
ip.addr == 192.168.10.178dnstcp.flags.reset == 1ip.addr == 192.168.10.70 && tcp.port == 445!(arp || dns || tcp.port == 22)
Tu avais trouvé ?
Exercice 2 sur 5 Capture ou affichage ? Réussi À revoir
- Tu dois capturer pendant une journée, sur un serveur, uniquement les requêtes DNS. Quel type de filtre utilises-tu, et lequel ?
- Un camarade tape
host 192.168.10.70dans la barre de filtre d'affichage. Que se passe-t-il ?
Voir la réponseMasquer la réponse de l'exercice 2
- Un filtre de capture, pour ne pas remplir le disque avec le reste :
port 53(par exemplesudo tcpdump -i enp0s3 -w dns.pcapng port 53). - La barre devient rouge :
hostest la syntaxe des filtres de capture. Le filtre d'affichage équivalent estip.addr == 192.168.10.70.
Tu avais trouvé ?
Exercice 3 sur 5 Lire le détail d'une trame Réussi À revoir
On t'affiche ce détail :
Ethernet II, Src: 00:1a:2b:3c:4d:5e, Dst: 3c:52:82:4a:10:7e
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 198.51.100.80, Dst: 192.168.10.70
Time to Live: 52
Protocol: TCP (6)
Transmission Control Protocol, Src Port: 443, Dst Port: 51544, Seq: 0, Ack: 1, Len: 0
Flags: 0x012 (SYN, ACK)
- Quelle machine a envoyé cette trame sur le réseau local de Sorbier ? Quelle machine a créé le paquet ?
- Que se passe-t-il au niveau TCP ?
- Le serveur a probablement envoyé ce paquet avec un TTL de 64. Combien de routeurs a-t-il traversés ?
- Pourquoi l'adresse de destination est-elle
192.168.10.70et pas203.0.113.17?
Voir la réponseMasquer la réponse de l'exercice 3
- La trame vient de
00:1a:2b:3c:4d:5e, le switch de cœur (la passerelle du VLAN 10). Le paquet a été créé par le serveur web198.51.100.80, sur Internet. - C'est le SYN-ACK : le serveur accepte la connexion HTTPS demandée par le poste. Le poste va répondre par un ACK.
- 64 − 52 = 12 routeurs, y compris le pare-feu et le switch de cœur de Sorbier.
- Parce que la capture est faite sur le poste, après la traduction : le pare-feu a remplacé l'adresse publique
203.0.113.17par l'adresse privée du poste en appliquant sa table PAT.
Tu avais trouvé ?
Exercice 4 sur 5 Diagnostiquer avec une capture Réussi À revoir
Le poste 192.168.10.70 n'arrive pas à imprimer sur 192.168.10.118. Avec le filtre arp, la capture montre, toutes les secondes :
Who has 192.168.10.118? Tell 192.168.10.70
et aucune réponse.
- Que conclus-tu ?
- Quelles vérifications fais-tu ?
Voir la réponseMasquer la réponse de l'exercice 4
- Le poste considère que l'imprimante est dans son réseau (sinon il chercherait la passerelle) et demande son adresse MAC, mais personne ne répond : l'imprimante n'est pas joignable au niveau 2. Inutile de chercher du côté du pilote d'impression ou du port 9100.
- Vérifier que l'imprimante est allumée et connectée (voyant réseau, câble, prise), qu'elle a bien l'adresse
192.168.10.118(page de configuration imprimée depuis son panneau), et que son port de switch est dans le VLAN 10. Une imprimante branchée dans le mauvais VLAN est invisible, même sur le même switch.
Tu avais trouvé ?
Exercice 5 sur 5 Retrouver le DORA Réussi À revoir
Pendant une capture filtrée sur dhcp, tu lances ipconfig /renew sur un poste qui a déjà une adresse valide. Tu ne vois que deux messages, DHCP Request et DHCP ACK. Pourquoi pas quatre ?
Voir la réponseMasquer la réponse de l'exercice 5
Le poste a déjà un bail valide : il ne cherche pas de serveur (pas de Discover) et n'attend pas d'offre. Il demande directement le renouvellement de son adresse au serveur qui la lui a donnée (Request), qui confirme (ACK). Les quatre messages n'apparaissent que pour une première attribution, ou après un ipconfig /release, ou quand le bail a expiré.
Tu avais trouvé ?