Révision Détaillée : Réseaux et Protocoles

USSI7c : Encapsulation, Wireshark, Scapy, et Concepts de Base

Introduction

Ce document est une révision détaillée des concepts clés des réseaux et protocoles, en s'appuyant sur les documents que vous avez partagés. Il couvre les modèles OSI et TCP/IP, l'analyse des trames Ethernet, les protocoles DNS, TCP, UDP, et IP, ainsi que l'utilisation des outils Wireshark et Scapy. Des exercices pratiques sont inclus pour renforcer votre compréhension.

Objectifs :

  • Comprendre les modèles OSI et TCP/IP et leurs différences.
  • Analyser des trames Ethernet et comprendre leur structure.
  • Maîtriser les protocoles DNS, TCP, UDP, et IP.
  • Utiliser Wireshark pour capturer et analyser le trafic réseau.
  • Utiliser Scapy pour forger et envoyer des paquets réseau.
  • Appliquer ces connaissances à des exercices concrets.

Modèles OSI et TCP/IP

Modèle OSI

Le modèle OSI (Open Systems Interconnection) est un modèle conceptuel qui divise les fonctions de communication en sept couches. Chaque couche a un rôle spécifique et communique avec les couches adjacentes via des interfaces standardisées.

Couche Nom Rôle Exemples de Protocoles Unité de Données (PDU)
7 Application Fournit des services réseau aux applications (ex: navigation web, email). HTTP, FTP, SMTP, DNS, SSH Message
6 Présentation Gère la représentation des données (chiffrement, compression, conversion de formats). SSL, TLS, JPEG, MPEG, ASCII, Unicode Données
5 Session Gère les sessions entre applications (établissement, maintien, terminaison). NetBIOS, RPC, PPTP, SIP Données
4 Transport Assure le transfert de données de bout en bout (fiabilité, contrôle de flux). TCP, UDP, SCTP, DCCP Segment (TCP) / Datagramme (UDP)
3 Réseau Gère l'adressage logique et le routage des paquets à travers les réseaux. IP, ICMP, OSPF, BGP, RIP Paquet
2 Liaison de Données Gère la transmission des trames entre nœuds adjacents (détection d'erreurs, accès au médium). Ethernet, PPP, Wi-Fi (802.11), VLAN, MAC Trame
1 Physique Transmet les bits bruts sur le médium physique (câbles, ondes radio, fibre optique). USB, RJ45, Fibre Optique, Wi-Fi (physique), Bluetooth Bit

Diagramme du Modèle OSI

(Représentation visuelle des 7 couches)

Modèle OSI

Source: Wikimedia Commons

Modèle TCP/IP

Le modèle TCP/IP est une simplification du modèle OSI, avec quatre couches principales. Il est utilisé pour les communications sur Internet et est plus orienté vers la pratique que le modèle OSI.

Couche Nom Rôle Protocoles Correspondance OSI
4 Application Regroupe les couches 5, 6 et 7 du modèle OSI. Fournit des services aux applications utilisateur. HTTP, FTP, DNS, SMTP, SSH, Telnet Application, Présentation, Session
3 Transport Assure le transfert de données de bout en bout (fiabilité, contrôle de flux). TCP, UDP, SCTP Transport
2 Internet Gère l'adressage logique et le routage des paquets. IP, ICMP, ARP, OSPF, BGP Réseau
1 Accès Réseau Regroupe les couches 1 et 2 du modèle OSI. Gère la transmission physique et l'accès au médium. Ethernet, Wi-Fi, PPP, MAC, VLAN Physique, Liaison de Données

Diagramme du Modèle TCP/IP

(Représentation visuelle des 4 couches)

Modèle TCP/IP

Source: Wikimedia Commons

Comparaison OSI vs TCP/IP

Critère Modèle OSI Modèle TCP/IP
Nombre de couches 7 couches 4 couches
Approche Théorique, générique, indépendant des protocoles. Pratique, basé sur les protocoles Internet.
Couche Transport Couche 4 (Transport) Couche 3 (Transport)
Couche Application Couches 5, 6, 7 (Session, Présentation, Application) Couche 4 (Application)
Utilisation Modèle de référence pour l'enseignement et la conception. Modèle utilisé pour Internet et les réseaux réels.
Protocoles Ne spécifie pas de protocoles. Basé sur des protocoles spécifiques (TCP, IP, etc.).

Trames Ethernet

Une trame Ethernet est une unité de données au niveau de la couche de liaison de données (couche 2 du modèle OSI). Elle est utilisée pour encapsuler les paquets de données qui sont transmis sur un réseau Ethernet.

Structure d'une Trame Ethernet

Voici la structure détaillée d'une trame Ethernet :

Champ Taille (octets) Description Valeurs Typiques
Préambule 7 Synchronisation des horloges entre l'émetteur et le récepteur. 10101010 (alternance de 1 et 0)
Début de Trame (SFD) 1 Indique le début de la trame (10101011). 10101011
Adresse MAC Destination 6 Adresse MAC du destinataire. Peut être une adresse unicast, multicast ou broadcast. 00:1A:2B:3C:4D:5E
Adresse MAC Source 6 Adresse MAC de l'expéditeur. 00:1A:2B:3C:4D:5F
Type/EtherType 2 Indique le type de protocole de la couche supérieure (ex: 0x0800 pour IPv4, 0x0806 pour ARP). 0x0800 (IPv4), 0x0806 (ARP), 0x86DD (IPv6)
Données (Payload) 46-1500 Charge utile contenant les données des couches supérieures (IP, ARP, etc.). La taille minimale est de 46 octets (sinon, un bourrage est ajouté). Paquet IP, trame ARP, etc.
FCS (Frame Check Sequence) 4 Code de redondance cyclique (CRC) pour détecter les erreurs de transmission. Calculé à partir des champs précédents

Note sur le bourrage (Padding) : Si la taille des données est inférieure à 46 octets, un bourrage est ajouté pour atteindre cette taille minimale. La taille maximale d'une trame Ethernet (sans VLAN) est de 1518 octets (1500 octets de données + 18 octets d'en-tête et FCS).

Exemple de Trame Ethernet

Voici un exemple de trame Ethernet capturée en hexadécimal :

0000 00 08 e3 ff fc 28 30 e1 71 82 10 c5 08 00 45 00 .....(0.q.....E. 0010 00 34 a3 fc 40 00 80 06 00 00 a3 ad e7 a1 0a ad .4..@........... 0020 20 61 c3 5e 02 03 e8 44 72 ed 00 00 00 00 80 02 a.^...Dr...... 0030 fa f0 b6 83 00 00 02 04 05 b4 01 03 03 08 01 ................ 0040 01 04 02 ...

Exercice : Analyse de la Trame

À partir de la trame ci-dessus, répondez aux questions suivantes :

  1. Quelle est l'adresse MAC de destination ?
  2. Quelle est l'adresse MAC de la source ?
  3. Quel est le type de protocole encapsulé dans cette trame (couche 3) ?
  4. Quelle est la longueur totale de la trame (en octets) ?
  5. Quelle est l'adresse IP source (en décimal) ?
  6. Quelle est l'adresse IP destination (en décimal) ?

Corrigé :

  1. Adresse MAC de destination : 00:08:e3:ff:fc:28
  2. Adresse MAC de la source : 30:e1:71:82:10:c5
  3. Type de protocole : 0800 (IPv4)
  4. Longueur totale de la trame : 66 octets (visible dans l'en-tête de la capture Wireshark)
  5. Adresse IP source : a3.ad.e7.a1163.173.231.161
  6. Adresse IP destination : 0a.ad.20.6110.173.32.97

Trames Ethernet et VLAN

Avec les VLAN (Virtual LAN), une trame Ethernet peut inclure un tag VLAN (4 octets supplémentaires) pour identifier le réseau virtuel. La taille maximale d'une trame Ethernet avec VLAN est de 1522 octets.

Structure d'une trame Ethernet avec VLAN (802.1Q) :

Champ Taille (octets) Description
Préambule 7 Synchronisation.
SFD 1 Début de trame.
Adresse MAC Destination 6 Adresse MAC du destinataire.
Adresse MAC Source 6 Adresse MAC de la source.
Tag VLAN (802.1Q) 4 Identifie le VLAN (Tag Protocol Identifier + Priority + VLAN ID).
Type/EtherType 2 Type de protocole (ex: 0x0800 pour IPv4).
Données 46-1500 Charge utile.
FCS 4 Contrôle d'erreur.

Protocoles (DNS, TCP, UDP, IP)

DNS (Domain Name System)

Le DNS est un protocole de la couche application qui permet de traduire les noms de domaine (ex: www.cnam.fr) en adresses IP (ex: 163.173.128.52). Il utilise généralement le protocole UDP sur le port 53, mais peut aussi utiliser TCP pour des réponses longues (ex: transferts de zone).

Fonctionnement du DNS

Le DNS fonctionne selon une hiérarchie de serveurs :

  1. Résolveur DNS : Reçoit la requête du client et la transmet aux serveurs DNS.
  2. Serveur racine : Redirige vers le serveur TLD (.fr, .com, etc.).
  3. Serveur TLD : Redirige vers le serveur faisant autorité pour le domaine.
  4. Serveur faisant autorité : Retourne l'adresse IP associée au nom de domaine.

Exemple de Résolution DNS

(Requête pour www.cnam.fr)

Résolution DNS

Source: CloudNS

Exemple de Requête DNS

Voici un exemple de requête DNS capturée avec Wireshark :

Frame 465: 71 bytes on wire (568 bits), 71 bytes captured (568 bits) Ethernet II, Src: AskeyCom_e5:a5:6b (4c:ed:de:e5:a5:6b), Dst: OrangePo_01:35:04 (8c:f8:13:01:35:04) Internet Protocol Version 4, Src: 192.168.1.18, Dst: 192.168.1.1 User Datagram Protocol, Src Port: 63773, Dst Port: 53 Domain Name System (query) Transaction ID: 0x0004 Flags: 0x0100 Standard query Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries www.cnam.fr: type A, class IN Name: www.cnam.fr [Name Length: 11] [Label Count: 3] Type: A (Host Address) (1) Class: IN (0x0001) 0000 8c f8 13 01 35 04 4c ed de e5 a5 6b 08 00 ..5.L...k... 0010 45 00 00 39 31 30 00 00 80 11 86 20 c0 a8 E..910..... .. 0020 01 12 c0 a8 01 01 f9 1d 00 35 00 25 be c0 ........5.%... 0030 00 00 00 00 00 00 00 00 00 00 00 04 01 00 .............. 0040 00 00 00 00 00 00 03 77 77 77 04 63 6e 61 ........www.cna 0050 6d 02 66 72 00 00 01 00 01 m.fr.....

Réponse DNS

Frame 466: 107 bytes on wire (856 bits), 107 bytes captured (856 bits) Ethernet II, Src: OrangePo_01:35:04 (8c:f8:13:01:35:04), Dst: AskeyCom_e5:a5:6b (4c:ed:de:e5:a5:6b) Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.1.18 User Datagram Protocol, Src Port: 53, Dst Port: 63773 Domain Name System (response) Transaction ID: 0x0004 Flags: 0x8180 Standard query response, No error Questions: 1 Answer RRs: 2 Authority RRs: 0 Additional RRs: 0 Queries www.cnam.fr: type A, class IN Name: www.cnam.fr Answers www.cnam.fr: type CNAME, class IN, cname sarek.cnam.fr Name: www.cnam.fr Type: CNAME (Canonical name for an alias) (5) Class: IN (0x0001) Time to live: 300 Data length: 13 CNAME: sarek.cnam.fr sarek.cnam.fr: type A, class IN, addr 163.173.128.52 Name: sarek.cnam.fr Type: A (Host address) (1) Class: IN (0x0001) Time to live: 300 Data length: 4 Addr: 163.173.128.52

Exercice : Analyse de Requête DNS

À partir des captures ci-dessus :

  1. Quel est le type de requête DNS envoyée ?
  2. Quel est le nom de domaine interrogé ?
  3. Quelle est l'adresse IP retournée pour www.cnam.fr ?
  4. Quel type d'enregistrement DNS est utilisé pour rediriger www.cnam.fr vers sarek.cnam.fr ?

Corrigé :

  1. Type de requête : A (demande d'adresse IPv4).
  2. Nom de domaine : www.cnam.fr.
  3. Adresse IP : 163.173.128.52.
  4. Type d'enregistrement : CNAME (alias).

TCP (Transmission Control Protocol)

TCP est un protocole de la couche transport qui offre une communication fiable, orientée connexion, et avec contrôle de flux. Il est utilisé pour des applications nécessitant une transmission sans erreur (ex: HTTP, FTP, SSH).

Caractéristiques de TCP

Structure de l'En-tête TCP

Champ Taille (bits) Description
Port Source 16 Port de l'expéditeur.
Port Destination 16 Port du destinataire.
Numéro de Séquence 32 Numéro du premier octet de données dans le segment.
Numéro d'Accusé de Réception (ACK) 32 Numéro du prochain octet attendu par le récepteur.
Longueur d'En-tête (Data Offset) 4 Longueur de l'en-tête TCP en mots de 32 bits (4 octets).
Réservé 6 Non utilisé (doit être à 0).
Drapeaux (Flags) 6 Contrôle la connexion (SYN, ACK, FIN, RST, etc.).
Fenêtre (Window) 16 Taille de la fenêtre de réception (nombre d'octets que le récepteur peut accepter).
Somme de Contrôle (Checksum) 16 Vérifie l'intégrité de l'en-tête et des données.
Pointeur Urgent 16 Indique la fin des données urgentes (si le drapeau URG est positionné).
Options Variable Options supplémentaires (ex: taille maximale de segment).
Bourrage (Padding) Variable Assure que l'en-tête a une longueur multiple de 32 bits.

Drapeaux TCP

Drapeau Nom Description
SYN Synchronize Utilisé pour établir une connexion (premier paquet du three-way handshake).
ACK Acknowledge Accusé de réception. Indique que le numéro d'accusé est valide.
FIN Finish Utilisé pour terminer une connexion.
RST Reset Réinitialise la connexion en cas d'erreur.
PSH Push Demande au récepteur de transmettre les données à l'application immédiatement.
URG Urgent Indique que le champ "Pointeur Urgent" est significatif.

Three-Way Handshake

Le three-way handshake est le processus utilisé par TCP pour établir une connexion :

  1. SYN : Le client envoie un segment avec le drapeau SYN positionné et un numéro de séquence initial.
  2. SYN-ACK : Le serveur répond avec un segment SYN-ACK, accusant réception du SYN du client et envoyant son propre SYN.
  3. ACK : Le client accuse réception du SYN du serveur avec un segment ACK.

Schéma du Three-Way Handshake

Three-Way Handshake

Source: Gate Vidyalay

Exemple de Capture TCP avec Wireshark

Voici un exemple de capture d'une connexion TCP (three-way handshake) :

No. Time Source Destination Protocol Length Info 1 0.000000 192.168.1.100 163.173.128.52 TCP 66 50014 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1 2 0.000123 163.173.128.52 192.168.1.100 TCP 66 80 → 50014 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460 WS=4 SACK_PERM=1 3 0.000234 192.168.1.100 163.173.128.52 TCP 54 50014 → 80 [ACK] Seq=1 Ack=1 Win=65536 Len=0 Frame 1: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) Ethernet II, Src: IntelCor_78:2b:cb (00:1a:2b:78:2b:cb), Dst: Cisco_00:1a:2b (00:1a:2b:00:00:00) Internet Protocol Version 4, Src: 192.168.1.100, Dst: 163.173.128.52 Transmission Control Protocol, Src Port: 50014, Dst Port: 80, Seq: 0, Len: 0 Source Port: 50014 Destination Port: 80 Sequence number: 0 Acknowledgment number: 0 Header Length: 40 bytes Flags: 0x02 (SYN) 000. .... = Reserved: Not set ...0 .... = Nonce: Not set .... 0... = Congestion Window Reduced (CWR): Not set .... .0.. = ECN-Echo: Not set .... ..0. = Urgent: Not set .... ...1 = Acknowledgment: Set .... .... 0 = Push: Not set .... .... .0 = Reset: Not set .... .... ..1 = Syn: Set .... .... ... = Fin: Not set Window size: 64240 Checksum: 0x1234 (correct)

Exercice : Analyse de Connexion TCP

À partir de la capture ci-dessus :

  1. Quel est le numéro de port source utilisé par le client ?
  2. Quel est le numéro de port destination ? À quel service correspond-il ?
  3. Quel drapeau est positionné dans le premier paquet ? Que signifie-t-il ?
  4. Quel est le numéro de séquence initial du client ?
  5. Quel est le numéro d'accusé de réception dans le deuxième paquet ? Que signifie-t-il ?

Corrigé :

  1. Port source : 50014.
  2. Port destination : 80 (service HTTP).
  3. Drapeau : SYN (demande d'établissement de connexion).
  4. Numéro de séquence initial : 0.
  5. Numéro d'accusé de réception : 1 (le serveur accuse réception du SYN du client et indique qu'il attend le prochain octet avec le numéro de séquence 1).

UDP (User Datagram Protocol)

UDP est un protocole de la couche transport qui offre une communication non fiable et sans connexion. Il est utilisé pour des applications où la vitesse est plus importante que la fiabilité (ex: streaming vidéo, DNS, VoIP).

Caractéristiques de UDP

Structure de l'En-tête UDP

Champ Taille (bits) Description
Port Source 16 Port de l'expéditeur (optionnel, peut être 0).
Port Destination 16 Port du destinataire.
Longueur 16 Longueur totale du datagramme UDP (en-tête + données).
Somme de Contrôle 16 Vérification de l'intégrité du datagramme (optionnel).

Exemple de Capture UDP avec Wireshark

Voici un exemple de capture d'une requête DNS (qui utilise UDP) :

Frame 465: 71 bytes on wire (568 bits), 71 bytes captured (568 bits) Ethernet II, Src: AskeyCom_e5:a5:6b (4c:ed:de:e5:a5:6b), Dst: OrangePo_01:35:04 (8c:f8:13:01:35:04) Internet Protocol Version 4, Src: 192.168.1.18, Dst: 192.168.1.1 User Datagram Protocol, Src Port: 63773, Dst Port: 53 Source Port: 63773 Destination Port: 53 Length: 47 Checksum: 0xbeef (correct) Domain Name System (query) Transaction ID: 0x0004 Flags: 0x0100 Standard query Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries www.cnam.fr: type A, class IN Name: www.cnam.fr Type: A (Host address) (1) Class: IN (0x0001)

Exercice : Analyse de Datagramme UDP

À partir de la capture ci-dessus :

  1. Quel est le port source utilisé par le client ?
  2. Quel est le port destination ? À quel service correspond-il ?
  3. Quel est le protocole de couche application utilisé ?
  4. Quel est le type de requête envoyée ?

Corrigé :

  1. Port source : 63773 (port éphémère).
  2. Port destination : 53 (service DNS).
  3. Protocole de couche application : DNS.
  4. Type de requête : A (demande d'adresse IPv4 pour www.cnam.fr).

IP (Internet Protocol)

IP est un protocole de la couche réseau qui permet l'adressage logique et le routage des paquets à travers les réseaux. Il existe deux versions principales : IPv4 (32 bits) et IPv6 (128 bits).

IPv4

IPv4 utilise des adresses sur 32 bits, généralement représentées en notation décimale pointée (ex: 192.168.1.1).

Champ Taille (bits) Description
Version 4 Version du protocole IP (4 pour IPv4).
IHL (Internet Header Length) 4 Longueur de l'en-tête en mots de 32 bits.
Type de Service (TOS) 8 Indique la qualité de service souhaitée (ex: priorité, délai).
Longueur Totale 16 Longueur totale du datagramme IP (en-tête + données).
Identification 16 Identifie les fragments d'un même datagramme.
Drapeaux 3 Contrôle la fragmentation (DF, MF).
Décalage de Fragment 13 Position du fragment dans le datagramme original.
TTL (Time To Live) 8 Nombre maximal de sauts avant que le paquet ne soit détruit.
Protocole 8 Protocole de la couche supérieure (ex: 6 pour TCP, 17 pour UDP).
Somme de Contrôle 16 Vérification de l'intégrité de l'en-tête.
Adresse IP Source 32 Adresse IP de l'expéditeur.
Adresse IP Destination 32 Adresse IP du destinataire.
Options Variable Options supplémentaires (peu utilisées).
Données Variable Charge utile (protocole de couche supérieure).

Exemple de Datagramme IPv4

Frame 1: 1010 bytes on wire (8080 bits), 1010 bytes captured (8080 bits) Ethernet II, Src: PcsCompu_fc:6a:c9 (08:00:27:fc:6a:c9), Dst: PcsCompu_e2 (08:00:27:e2:00:00) Internet Protocol Version 4, Src: 2.1.1.2, Dst: 2.1.1.1 Version: 4 Header Length: 20 bytes (5) Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) Total Length: 996 Identification: 0xb5d0 (46544) Flags: 0x2000, More fragments Fragment Offset: 0 Time to Live: 64 Protocol: ICMP (1) Header Checksum: 0x9b44 [validation disabled] Source: 2.1.1.2 Destination: 2.1.1.1

IPv6

IPv6 utilise des adresses sur 128 bits, représentées en hexadécimal (ex: 2001:0db8:85a3:0000:0000:8a2e:0370:7334). IPv6 simplifie l'en-tête IP et ajoute des fonctionnalités comme l'auto-configuration et la sécurité intégrée.

Champ Taille (bits) Description
Version 4 Version du protocole IP (6 pour IPv6).
Classe de Trafic 8 Priorité et gestion du trafic (similaire à TOS en IPv4).
Étiquette de Flux 20 Identifie un flux de paquets pour une QoS spécifique.
Longueur de la Charge Utile 16 Longueur des données (sans l'en-tête).
En-tête Suivant 8 Protocole de la couche supérieure (ex: 6 pour TCP).
Limite de Sauts 8 Similaire au TTL en IPv4.
Adresse IP Source 128 Adresse IPv6 de l'expéditeur.
Adresse IP Destination 128 Adresse IPv6 du destinataire.
Données Variable Charge utile (protocole de couche supérieure).

Exemple de Datagramme IPv6

Frame 1: 94 bytes on wire (752 bits), 94 bytes captured (752 bits) Ethernet II, Src: 86:93:23:d3:37:8e, Dst: 22:1a:95:d6:7a:23 Internet Protocol Version 6, Src: fc00:2:0:2::1, Dst: fc00:2:0:1::1 Version: 6 Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT) Flow Label: 0xd684a Payload Length: 40 Next Header: TCP (6) Hop Limit: 64 Source: fc00:2:0:2::1 Destination: fc00:2:0:1::1

Exercice : Comparaison IPv4 et IPv6

Comparez les deux captures IPv4 et IPv6 ci-dessus et répondez aux questions :

  1. Quelle est la taille de l'en-tête IPv4 ? Et pour IPv6 ?
  2. Quel champ présent en IPv4 n'existe pas en IPv6 ? Pourquoi ?
  3. Quel est l'avantage principal de l'étiquette de flux (Flow Label) en IPv6 ?
  4. Comment sont représentées les adresses IPv6 dans la capture ?

Corrigé :

  1. Taille de l'en-tête IPv4 : 20 octets (peut varier avec les options). Taille de l'en-tête IPv6 : 40 octets (fixe).
  2. Champ absent en IPv6 : Fragmentation (gérée différemment, pas de fragmentation en routeur). La fragmentation est gérée uniquement par l'hôte source en IPv6.
  3. Avantages du Flow Label : Permet d'identifier un flux pour une QoS (Qualité de Service) spécifique, comme la voix ou la vidéo en temps réel.
  4. Adresses IPv6 : Représentées en notation compacte (ex: fc00:2:0:2::1). Les zéros consécutifs sont remplacés par ::.

Wireshark

Wireshark est un analyseur de protocole réseau open-source qui permet de :

Installation et Lancement

Wireshark est disponible pour Windows, macOS et Linux. Vous pouvez le télécharger depuis le site officiel.

Après installation, lancez Wireshark et sélectionnez une interface réseau pour commencer la capture :

Écran de démarrage de Wireshark

Source: Wireshark

Interface de Wireshark

L'interface de Wireshark est divisée en plusieurs parties :

  1. Liste des paquets : Affiche tous les paquets capturés avec des informations comme le temps, la source, la destination, le protocole, etc.
  2. Détails du paquet : Affiche les détails du paquet sélectionné (en-têtes des protocoles).
  3. Données brutes : Affiche les données brutes du paquet en hexadécimal et ASCII.
Interface principale de Wireshark

Source: Wireshark

Filtres Wireshark

Les filtres permettent de réduire l'affichage aux paquets qui vous intéressent. Il existe deux types de filtres :

Exemples de Filtres d'Affichage

Filtre Description Exemple d'Utilisation
ip.addr == 192.168.1.1 Affiche les paquets avec l'adresse IP source ou destination 192.168.1.1. Analyser le trafic vers/un routeur.
tcp.port == 80 Affiche les paquets TCP sur le port 80 (HTTP). Analyser le trafic web.
dns Affiche uniquement les paquets DNS. Déboguer des problèmes de résolution de noms.
http.request.method == "GET" Affiche les requêtes HTTP de type GET. Analyser les requêtes web.
icmp Affiche les paquets ICMP (ping). Vérifier la connectivité réseau.
arp Affiche les paquets ARP (résolution d'adresses MAC). Déboguer des problèmes de résolution d'adresses locales.
udp.portrange 50000-60000 Affiche les paquets UDP avec des ports sources/destinations entre 50000 et 60000. Analyser des flux multimédias ou des jeux.

Exemple de Capture avec Filtre

Voici un exemple de capture filtrée pour afficher uniquement le trafic HTTP :

No. Time Source Destination Protocol Length Info 1 0.000000 192.168.1.100 163.173.128.52 HTTP 541 GET /index.html HTTP/1.1 2 0.000123 163.173.128.52 192.168.1.100 HTTP 1448 HTTP/1.1 200 OK (text/html) 3 0.000234 192.168.1.100 163.173.128.52 TCP 66 50014 → 80 [ACK] Seq=542 Ack=1449 Win=65536 Len=0

Suivi de Flux TCP

Wireshark permet de suivre un flux TCP complet pour reconstruire une conversation entre un client et un serveur. Pour ce faire :

  1. Sélectionnez un paquet TCP dans la liste.
  2. Faites un clic droit et choisissez Follow > TCP Stream.
  3. Wireshark affichera alors tous les paquets du flux dans l'ordre, avec les données échangées.
Suivi de flux TCP dans Wireshark

Source: Comparitech

Statistiques et Graphiques

Wireshark offre des outils pour analyser les statistiques du trafic :

Graphique IO dans Wireshark

Source: Wireshark

Exercice : Analyse de Trafic avec Wireshark

Capturez du trafic sur votre réseau domestique avec Wireshark et répondez aux questions :

  1. Quels sont les 3 protocoles les plus présents dans votre capture ?
  2. Filtrez le trafic pour afficher uniquement les requêtes DNS. Combien en trouvez-vous ?
  3. Trouvez une connexion TCP et décrivez les 3 étapes du three-way handshake.
  4. Utilisez le suivi de flux TCP pour reconstruire une requête HTTP. Quel site web a été consulté ?

Indice : Utilisez Statistics > Protocol Hierarchy pour la question 1.

Scapy

Scapy est un outil puissant en Python pour :

Installation de Scapy

Scapy peut être installé via pip :

pip install scapy
            

Ou sur Linux (Debian/Ubuntu) :

sudo apt-get install python3-scapy
            

Premiers Pas avec Scapy

Lancez Scapy en mode interactif avec la commande :

sudo scapy
            

Voici quelques commandes de base :

# Afficher la liste des commandes disponibles
ls()

# Créer un paquet IP
p = IP()

# Afficher les détails du paquet
p.show()

# Créer un paquet IP avec des adresses source et destination
p = IP(src="192.168.1.100", dst="8.8.8.8")

# Ajouter une couche ICMP (pour un ping)
p = IP(dst="8.8.8.8")/ICMP()

# Envoyer le paquet
send(p)

# Sniffer des paquets (10 paquets)
pkts = sniff(count=10)

# Afficher les paquets capturés
pkts.show()
            

Exemples Avancés

Envoyer un Ping (ICMP Echo Request)

# Créer un paquet ICMP Echo Request
ping = IP(dst="8.8.8.8")/ICMP()

# Envoyer le paquet
send(ping)
            

Sniffer du Trafic ICMP

# Sniffer les paquets ICMP pendant 10 secondes
pkts = sniff(filter="icmp", timeout=10)

# Afficher les paquets capturés
pkts.show()
            

Envoyer un SYN Scan (Balayage de Ports)

# Créer un paquet TCP SYN pour le port 80
syn = IP(dst="192.168.1.1")/TCP(dport=80, flags="S")

# Envoyer le paquet
send(syn)
            

Créer un Paquet Personnalisé

# Créer un paquet Ethernet + IP + TCP avec des données
p = Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.1", ttl=64)/TCP(dport=80)/"Hello, World!"

# Envoyer le paquet
sendp(p)
            

Sniffer et Filtrer du Trafic

# Sniffer le trafic TCP sur le port 80
pkts = sniff(filter="tcp and port 80", count=5)

# Afficher les paquets
for pkt in pkts:
    pkt.show()
            

Exemple Complet : Envoi d'une Requête DNS

from scapy.all import *

# Créer une requête DNS pour www.cnam.fr
dns_req = IP(dst="8.8.8.8")/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname="www.cnam.fr"))

# Envoyer la requête et attendre la réponse
ans, unans = sr(dns_req)

# Afficher la réponse
ans.show()
            

Exercice : Utilisation de Scapy

Utilisez Scapy pour réaliser les tâches suivantes :

  1. Créez et envoyez un paquet ICMP (ping) à 8.8.8.8.
  2. Sniffez 5 paquets ICMP sur votre interface réseau.
  3. Créez un paquet TCP SYN pour le port 443 (HTTPS) et envoyez-le à 192.168.1.1.
  4. Sniffez le trafic DNS pendant 10 secondes et affichez les requêtes capturées.

Indice : Utilisez sniff(filter="icmp", count=5) pour la question 2.

Exercices Pratiques

Exercice 1 : Analyse de Trame Ethernet

Voici une trame Ethernet capturée :

0000 00 08 e3 ff fc 28 30 e1 71 82 10 c5 08 00 45 00 0010 00 34 a3 fc 40 00 80 06 00 00 a3 ad e7 a1 0a ad 0020 20 61 c3 5e 02 03 e8 44 72 ed 00 00 00 00 80 02 0030 fa f0 b6 83 00 00 02 04 05 b4 01 03 03 08 01 0040 01 04 02

Questions :

  1. Quelle est l'adresse MAC de destination ?
  2. Quelle est l'adresse MAC de la source ?
  3. Quel est le type de protocole encapsulé dans cette trame (couche 3) ?
  4. Quelle est la longueur totale de la trame (en octets) ?
  5. Quelle est l'adresse IP source (en décimal) ?
  6. Quelle est l'adresse IP destination (en décimal) ?
  7. Quel protocole de couche transport est utilisé ?

Corrigé :

  1. Adresse MAC de destination : 00:08:e3:ff:fc:28
  2. Adresse MAC de la source : 30:e1:71:82:10:c5
  3. Type de protocole : 0800 (IPv4)
  4. Longueur totale de la trame : 66 octets
  5. Adresse IP source : a3.ad.e7.a1163.173.231.161
  6. Adresse IP destination : 0a.ad.20.6110.173.32.97
  7. Protocole de couche transport : TCP (port 2, mais le champ protocole dans l'en-tête IP est 06, qui correspond à TCP).

Exercice 2 : Capture DNS avec Wireshark

Utilisez Wireshark pour capturer une requête DNS lorsque vous visitez www.cnam.fr. Identifiez les champs suivants dans la capture :

  1. Adresse IP source et destination.
  2. Ports source et destination.
  3. Type de requête DNS (A, AAAA, etc.).
  4. Réponse DNS (adresse IP retournée).
  5. Quel protocole de transport est utilisé pour cette requête ?

Indice : Utilisez le filtre dns dans Wireshark pour faciliter l'analyse.

Exercice 3 : Utilisation de Scapy pour un Ping

Utilisez Scapy pour envoyer une requête ICMP (ping) à 8.8.8.8 (serveur DNS de Google). Capturez cette requête avec Wireshark et vérifiez qu'elle apparaît dans la capture.

Étapes :

  1. Dans Scapy, créez et envoyez un paquet ICMP :
>>> packet = IP(dst="8.8.8.8")/ICMP()
>>> send(packet)
                
  1. Dans Wireshark, filtrez avec icmp && ip.src == [votre_ip] pour voir le paquet ICMP envoyé.
  2. Vérifiez que la réponse ICMP Echo Reply est reçue.

Exercice 4 : Analyse de Connexion TCP

Capturez une connexion TCP (ex: navigation sur un site web) avec Wireshark et identifiez :

  1. Les 3 étapes du three-way handshake (SYN, SYN-ACK, ACK).
  2. Les numéros de séquence et d'accusé de réception.
  3. La taille de la fenêtre TCP annoncée par le serveur.
  4. Le contenu d'un paquet HTTP (si présent).

Indice : Filtrez avec tcp.port == 80 pour voir le trafic HTTP.

Exercice 5 : Sniffing avec Scapy

Utilisez Scapy pour sniffer 10 paquets sur votre interface réseau et affichez leurs détails. Identifiez :

  1. Le nombre de paquets ICMP.
  2. Le nombre de paquets TCP et UDP.
  3. Les adresses IP sources et destinations.

Code Scapy :

from scapy.all import *

# Sniffer 10 paquets
pkts = sniff(count=10)

# Afficher les paquets
for pkt in pkts:
    pkt.show()
                

Conclusion

Ce document de révision détaillé couvre les concepts fondamentaux des réseaux et protocoles, en mettant l'accent sur :

Pour approfondir vos connaissances, je vous recommande de :

Ressources Supplémentaires