Présentation et prise en main

Objectifs

À l’issue de cette activité, vous devez être capable de …​ :

  • Interpréter sommairement les informations d’un paquet réseau

  • Réaliser une capture réseau sélective avec WireShark (→ mise en œuvre d’un filtre de capture)

  • Filtrer l’affichage d’une capture réseau (→ mise en œuvre d’un filtre d’affichage)

Pré-requis

  • Notions d’adressage IP et de protocoles

Présentation

Wireshark est un logiciel qui permet de :

  1. capturer le traffic réseau qui transite au travers une interface réseau

  2. décoder les paquets réseau capturés

  3. visualiser les paquets réseau décodés au travers d’une interface graphique qui permet à un utilisateur d’inspecter en détail leur contenu

Wireshark peut être utilisé par :

  • des administrateurs réseau à des fins de dépannage ou d’analyse

  • des ingénieurs réseau (…​ou des pirates) pour traquer d’éventuelles failles de sécurité

  • des développeurs pour la mise au point de nouveaux protocoles de communication lors de leur implémentation

  • des étudiants lors de leur formation réseaux.

Les 2 composants fondamentaux de Wireshark sont :

  1. la librairie qui permet de capturer le traffic réseau. Celle-ci porte le nom de Npcap sous Windows (→ Nmap Packet CAPture) et libpcap sous Linux.

  2. l’interface graphique (→ wireshark.exe) ou en ligne de commande (→ tskark.exe) qui permet de configurer et visualiser les captures réseau

    L’interface graphique de Wireshark est développée avec le framework Qt.

    ws gui
Encapsulation

Il est dit dans l’illustration ci-dessus que le panneau n°2 de Wireshark affiche les détails par couche ascendante du modèle TCP/IP (→ modèle OSI “simplifié”) de la trame sélectionnée dans le panneau n°1.

En effet, lors de la préparation ou le décodage d’une trame réseau, plusieurs protocoles — situés à différentes couches du modèle TCP/IP — sont impliqués et chacun d’eux dispose de champs d’information qui lui sont propres. On parle d'encapsulation (resp. désencapsulation) car au fur et à mesure qu’une trame traverse une couche réseau ces informations sont ajoutées (resp. retirées) au contenu précédent dans le cas d’une émission (resp.réception).

On peut faire l’analogie avec l’acheminement d’un courrier postal.
Une lettre est d’abord insérée dans une enveloppe pour être postée puis l’enveloppe est placée dans un sac postal puis le sac postal est transporté dans un conteneur.
À l’autre bout de la chaîne, le sac postal est extrait du conteneur puis l’enveloppe est extraite du sac postal puis déposée dans la boîte aux lettres du destinataire.

Ci-dessous figure un schéma qui illustre l’encapsulation dans le cas d’une communication réseau classique :

Prise en main

💻 Travail n° 1 Installation & 1ère analyse de trame

  1. Installer Wireshark avec les options par défaut depuis l’installateur disponible sur \\diskstation\install\wireshark après l’avoir téléchargé en local

  2. Lancer Wireshark, attendre la fin de détection des interfaces réseau de la machine puis ouvrir, depuis le menu Fichier  Ouvrir, la capture réseau ping_on_guest_side.pcapng

  3. S’assurer que le protocole ICMP est désactivé dans la fenêtre qui s’affiche lorsqu’on sélectionne le menu Analyser  Protocoles activés…​

    icmp disabled
  4. Parcourir les informations affichées par Wireshark et répondre aux questions suivantes :

    1. À quel instant par rapport au début de la capture a été émise la trame n°6 ?

    2. Quelle est l’adresse IP de l’émetteur de la trame n°6 ?

    3. Quelle est l’adresse MAC de l’émetteur de la trame n°6 ?

    4. À quelle position en nombre d’octets par rapport au début de la trame (→ ou offset) , se trouve l’information de l’adresse IP de l’émetteur de la trame n°6 ?

    5. Lors d’un échange réseau, l’information à transmettre (→ données utiles ou payload en anglais) ne représente qu’une partie de cette trame. Dans notre exemple, le payload est constitué par le contenu du champ nommé “Data”. Calculer le pourcentage en terme d’octets que représente le payload par rapport à l’ensemble de la trame.

  5. Activer le protocole ICMP depuis le menu Analyser  Protocoles activés…​ de façon à interpréter le payload des trames et répondre aux questions suivantes :

    1. Quel est le type/nom du message ICMP encapsulé dans la trame n°1 ? idem pour la trame n°2. En déduire le nom de la commande qui est à l’origine des trames réseau capturées.

    2. Quelle est l’adresse IP de la machine qui a initié l’échange réseau (i.e celle depuis laquelle la commande a été exécutée) ?

    3. Quelles sont les valeurs des données (→ champ Data) envoyées aussi bien dans la requête que dans la réponse des messages ICMP ?

Filtrage

Par défaut, lorsqu’on lance une capture sur une interface réseau depuis Wireshark, toutes les trames “vues” par cette interface sont capturées. Ceci fait ressortir 2 inconvénients potentiels :

  1. une capture va produire un fichier volumineux dans lequels les trames intéressantes ne constituent peut-être qu’un faible pourcentage des trames enregistrées

  2. les trames qui nous intéressent risquent d’être noyées au sein des autres trames lors de la phase de visualisation.

Pour pallier à ces inconvénients, Wireshark dispose d’une fonctionnalité de filtrage.

2 types de filtre sont proposés :

  1. les filtres de capture qui sélectionnent les trames à enregistrer dans le fichier de capture. Ces filtres sont spécifiés une fois pour toute avant de lancer la capture.

  2. les filtres d’affichage qui permettent de n’afficher qu’une partie des trames capturées sur la base de critères qui peuvent être modifiés au cours de la visualisation et même de la capture.

Les filtres de capture utilisent une syntaxe liée à la librairie logicielle qui réalise la capture (→ Npcap sur Windows, libpcap sur Linux). Celle-ci est documentée dans cette page de manuel.

Les filtres d’affichage sont quant à eux exprimés dans une syntaxe propre à Wireshark. Celle-ci est documentée dans Building Display Filter Expressions link du guide utilisateur. Une référence des champs utilisables dans l’expression d’un filtre d’affichage est quant à elle disponible dans Display Filter Reference link

💻 Travail n° 2 Filtre de capture

  1. Lancer une nouvelle capture avec option en spécifiant de n’enregistrer que les trames échangées avec l’hôte 192.168.7.112 (→ le NAS Diskstation) grâce au filtre host 192.168.7.112

    capture filter
  2. Se rendre sur le NAS Diskstation à la fois depuis l’explorateur de fichier (→ \\diskstation) et un navigateur internet (→ http://192.168.7.112:5000 link)

  3. Constater que chaque trame capturée mentionne l’adresse du NAS soit dans l’IP source soit dans celle de destination et ce, quel que soit le protocole.

  4. Stopper la capture et l’enregistrer sur le disque dur

  5. S’aider de la page de manuel de pcap-filter link, pour élaborer un filtre de capture visant à n’enregistrer que les trames échangées avec le NAS Diskstation sur le port 5000.

  6. Se rendre à nouveau sur le NAS Diskstation à la fois depuis l’explorateur de fichier (→ \\diskstation) et un navigateur internet (→ http://192.168.7.112:5000 link)

  7. Constater que seules les trames échangées avec l’interface web du NAS Diskstation sont capturées (le port source ou destination doit valoir 5000).

    On constate que même si le port 5000 est associé au serveur web du NAS, les trames échangées avec lui ne sont pas forcément du type HTTP.

    tcp and http

    En effet, HTTP est basé sur le protocole TCP qui est un protocole orienté connexion garantissant une communication fiable.

    Cette fiabilité est obtenue au prix d’échanges supplémentairesau niveau réseau. D’où la présence d’une multitude de trames purement TCP en plus des trames HTTP dans la capture Wireshark.

    Dans l’illustration ci-dessous qui représente un échange typique avec le protocole TCP, une requête HTTP se situerait au niveau des flèches marquées DATA alors que les autres flèches correspondent à des échanges transparents pour l’utilisateur mais nécessaires pour garantir l’acheminement des données.

    tcp handshake
  8. Stopper la capture, l’enregistrer sur le disque dur puis constater l’impact du filtre de capture sur la taille du fichier en la comparant à celle du fichier associé à la capture précédente (celle qui ne filtre que le host et non le port)

    Pour constater la différence de taille, il faut bien sûr avoir effectué, depuis l’interface web et l’explorateur de fichiers, les mêmes actions au niveau du NAS (ex. tentative d’autentification sur l’interface web) que durant la capture avec un filtrage unique sur l’adresse IP (questions 1 à 4).

💻 Travail n° 3 Filtre d’affichage

  1. Lancer une nouvelle capture en appliquant le même filtre de capture que dans le travail précédent (host → 192.168.7.112, port → 5000)

  2. Se déplacer dans l’interface web du NAS, appliquer — sans forcément stopper la capture — un filtre d’affichage qui vaut http puis constater que seules les trames de type HTTP sont désormais affichées.

    display filter
  3. À partir de Building Display Filter Expressions link et de la référence des champs disponibles pour les filtres d’affichage sur le protocole HTTP (→ Display Filter Reference: Hypertext Transfer Protocol link), élaborer et appliquer les filtres d’affichage suivants :

    1. n’afficher que les trames HTTP correspondant à des requêtes (→ http.request)

    2. n’afficher que les trames HTTP correspondant à des requêtes de type GET (→ http.request.method)

    3. n’afficher que les réponses HTTP correspondant à des feuilles de style ou des images au format PNG (→ http.response, http.content_type).

      • Voir Liste des types MIME communs link pour déterminer le type MIME des feuilles de style ou des images au format PNG.

      • Pour élaborer un filtre d’affichage, on peut aussi s’aider de l’assistant de Wireshark accessible depuis le menu Analyser  Display filter expression…​

🞄  🞄  🞄