• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 21/06/2022

TP : Un ping pong avec une drôle de balle…

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

L'objectif de ce TP est d'utiliser la surveillance réseau et les outils évoqués dans la partie 4 du cours pour analyser un peu plus dans le détail le trafic généré par les fameuses commandes ping.

Allez, on sort sa loupe de Sherlock et c'est parti !

Étape 1

Connecté sur votre serveur Linux (console physique ou terminal) vérifiez que vous pouvez lancer une commande ping sur une autre machine joignable sur votre réseau local. (Dans l'exemple ici, je lance la commande ping sur la machine qui héberge la VM Linux).

seb@debServer:~$ ping 172.20.10.2
PING 172.20.10.2 (172.20.10.2) 56(84) bytes of data.
64 bytes from 172.20.10.2: icmp_seq=1 ttl=64 time=0.401 ms
64 bytes from 172.20.10.2: icmp_seq=2 ttl=64 time=0.574 ms
64 bytes from 172.20.10.2: icmp_seq=3 ttl=64 time=0.479 ms
64 bytes from 172.20.10.2: icmp_seq=4 ttl=64 time=0.528 ms
^C
--- 172.20.10.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3728ms
rtt min/avg/max/mdev = 0.401/0.495/0.574/0.064 ms
seb@debServer:~$

Vous allez constater que sous Linux, la commande ping ne s'arrête pas toute seule… Pour la stopper, utilisez le signal SIGINT vu pendant le cours et la combinaison de touche CTRL+c (heureusement pour nous que cette commande écoute ce signal !).

Étape 2

À l'aide d'une connexion secondaire (seconde console physique ou nouvelle session via un terminal), sous le compte root, lancez la commande tcpdump en indiquant en paramètre le protocole utilisé par la commande pingicmp. Et vérifiez depuis la première connexion en relançant la commande ping que vous parvenez à relever le trafic icmp. Vous devriez obtenir quelque chose ressemblant à ça :

root@debServer:~# tcpdump icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
17:17:00.011565 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 1, length 64
17:17:00.012004 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 1, length 64
17:17:01.270579 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 2, length 64
17:17:01.271290 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 2, length 64
17:17:02.294303 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 3, length 64
17:17:02.294849 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 3, length 64
17:17:03.321463 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 4, length 64
17:17:03.322027 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 4, length 64
^C
8 packets captured
8 packets received by filter
0 packets dropped by kernel

Idem ici, tcpdump écoute SIGINT, donc un petit CTRL+c pour l'arrêter.

Étape 3

Réitérez cette opération en indiquant un fichier d'enregistrement pour tcpdump, par exemple/tmp/traficICMP.dump. Capturez ainsi quelques paquets ICMP (entre 4 et 8 par exemple) tels que :

root@debServer:~# tcpdump icmp -w /tmp/traficICMP.dump
tcpdump: listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
^C6 packets captured
6 packets received by filter
0 packets dropped by kernel

Étape 4

Transférez cette trace réseau sur un poste de travail disposant de wireshark. Dans l'exemple ci dessous, je transfère ce fichier sur un poste Ubuntu via scp, tel que :

root@debServer:~# scp /tmp/traficICMP.dump seb@172.20.10.2:/home/seb/
The authenticity of host '172.20.10.2 (172.20.10.2)' can't be established.
ECDSA key fingerprint is SHA256:XD+IBQsATgzNTJ0PVKyOkCYKHekM9b408PvSA7cGF1o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.20.10.2' (ECDSA) to the list of known hosts.
seb@172.20.10.2's password:
traficICMP.dump                                                    100%  708 1.2MB/s   00:00
root@debServer:~#

Étape 5

Ouvrez la trace avec Wireshark telle que :

Capture d’écran du logiciel Wireshark affichant la visualisation d’une trace réseau
La visualisation d’une trace réseau sur Wireshark

Étape 6

Dépliez les différentes couches OSI de la trace et notamment la couche ICMP, pouvez-vous relever les données envoyées par la commande ping? Quelle taille fait le paquet ICMP ?

Capture d’écran du logiciel Wireshark affichant le détail des paquets ICMP dans une trace réseau.
Détail des paquets ICMP dans une trace réseau

Étape 7

Sélectionnez le paquet de données ICMP et faites un clic droit / show packet bytes (ou CTRL+SHIFT+O) afin de visualiser ces données :

Capture d’écran du logiciel Wireshark affichant le contenu du paquet ICMP traduit de Base84 -> Texte
Contenu du paquet ICMP

En gros la commande ping envoie quelques caractères tels que!"#$%&'()*+,-./01234567 au format hexadécimal, voilà une balle originale pour faire un ping/pong 😁 

Étape 8

Cherchez dans les options de la commande ping comment passer la taille du paquet ICMP à 128 bits et effectuez une nouvelle capture. Que devient notre balle de ping pong ?

Réponse : Elle est complétée entre autres avec les caractères de l’alphabet en minuscule et majuscule !

Capture d’écran du logiciel Wireshark affichant le contenu du paquet ICMP traduit de Base84 -> Texte
Contenu du paquet ICMP

Exemple de certificat de réussite
Exemple de certificat de réussite