Analyser le trafic TCP avec la fonctionnalité "Suivre le flux TCP" de Wireshark

WiresharkWiresharkBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à utiliser la fonctionnalité "Suivre le flux TCP" (Follow TCP Stream) de Wireshark pour l'analyse du trafic TCP. Cette fonctionnalité vous permet d'extraire et de visualiser la charge utile (data payload) d'une conversation TCP particulière. Elle est extrêmement utile dans de nombreux scénarios de cybersécurité, comme l'investigation de trafic réseau suspect et l'analyse des protocoles d'application.

À la fin de ce laboratoire, vous comprendrez comment utiliser cet outil puissant pour obtenir des informations approfondies sur les communications réseau. Cela améliorera considérablement vos capacités d'analyse réseau.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/follow_tcp_stream("Follow TCP Stream") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") subgraph Lab Skills wireshark/packet_capture -.-> lab-415946{{"Analyser le trafic TCP avec la fonctionnalité #quot;Suivre le flux TCP#quot; de Wireshark"}} wireshark/display_filters -.-> lab-415946{{"Analyser le trafic TCP avec la fonctionnalité #quot;Suivre le flux TCP#quot; de Wireshark"}} wireshark/follow_tcp_stream -.-> lab-415946{{"Analyser le trafic TCP avec la fonctionnalité #quot;Suivre le flux TCP#quot; de Wireshark"}} wireshark/export_packets -.-> lab-415946{{"Analyser le trafic TCP avec la fonctionnalité #quot;Suivre le flux TCP#quot; de Wireshark"}} wireshark/packet_analysis -.-> lab-415946{{"Analyser le trafic TCP avec la fonctionnalité #quot;Suivre le flux TCP#quot; de Wireshark"}} end

Comprendre TCP et capturer le trafic réseau

Dans cette étape, nous allons commencer par découvrir TCP (Transmission Control Protocol), un élément fondamental de la communication réseau. Ensuite, nous utiliserons un outil puissant appelé Wireshark pour capturer le trafic réseau. Comprendre TCP et être capable de capturer le trafic réseau sont des compétences essentielles dans le domaine de la cybersécurité, car elles vous permettent de voir ce qui se passe sur un réseau et de l'analyser pour détecter d'éventuels problèmes.

Qu'est-ce que TCP ?

TCP, ou Transmission Control Protocol (Protocole de contrôle de transmission), est l'un des protocoles les plus importants de la suite de protocoles Internet (Internet Protocol suite). La suite de protocoles Internet est un ensemble de règles qui régissent la manière dont les données sont transmises sur Internet. TCP fournit un moyen fiable d'envoyer des données entre des applications s'exécutant sur différents hôtes (hosts) qui communiquent sur un réseau IP.

La fiabilité signifie que TCP garantit que tous les paquets de données (data packets) envoyés d'une application à une autre arrivent correctement et dans le bon ordre. C'est différent de UDP (User Datagram Protocol), qui est un protocole sans connexion. UDP n'établit pas de connexion avant d'envoyer des données et ne garantit pas que tous les paquets arriveront ou qu'ils arriveront dans l'ordre. TCP, en revanche, est orienté connexion (connection-oriented). Il établit d'abord une connexion entre l'expéditeur et le récepteur, puis il envoie les données. Ce processus contribue à maintenir l'intégrité des données transférées.

Lancement de Wireshark

Pour commencer à capturer le trafic réseau, nous devons lancer Wireshark. Voici comment vous pouvez le faire :

  1. Tout d'abord, ouvrez une fenêtre de terminal. Vous pouvez le faire en cliquant sur l'icône du terminal dans le dock ou en appuyant sur Ctrl+Alt+T. Le terminal est une interface textuelle qui vous permet d'interagir avec le système d'exploitation de votre ordinateur en tapant des commandes.

  2. Une fois le terminal ouvert, vous devez taper une commande pour lancer Wireshark. Tapez la commande suivante, puis appuyez sur Entrée :

wireshark

Cette commande indique au système d'exploitation de démarrer l'application Wireshark.

  1. Lorsque Wireshark s'ouvre, vous êtes présenté avec l'interface principale. Dans cette interface, vous verrez une liste des interfaces réseau disponibles. Les interfaces réseau sont les points de connexion entre votre ordinateur et le réseau. Chaque interface peut être utilisée pour envoyer et recevoir du trafic réseau.
Wireshark main interface

Capture du trafic réseau

Maintenant que Wireshark est ouvert, nous sommes prêts à commencer à capturer le trafic réseau. Voici les étapes à suivre :

  1. Dans la liste des interfaces réseau, cliquez sur l'interface eth1. Il s'agit généralement de l'interface réseau principale de votre machine virtuelle (virtual machine). Une machine virtuelle est comme un ordinateur dans votre ordinateur, et l'interface eth1 est la façon dont elle se connecte au réseau.

  2. Après avoir sélectionné l'interface eth1, cliquez sur le bouton Start capturing packets (Démarrer la capture de paquets), qui est représenté par une icône d'aileron de requin bleu dans la barre d'outils. Cette action indique à Wireshark de commencer à surveiller l'interface réseau sélectionnée et de capturer tous les paquets réseau (network packets) qui la traversent.

Start capturing packets
  1. Lorsque Wireshark commence à capturer, vous verrez des paquets apparaître dans la fenêtre principale de Wireshark. Ces paquets sont les éléments constitutifs du trafic réseau. Chaque paquet contient une petite quantité de données et des informations sur sa provenance et sa destination.

  2. Pour générer du trafic TCP que nous pouvons analyser, nous allons utiliser la commande curl. Ouvrez une nouvelle fenêtre de terminal et tapez la commande suivante :

curl https://labex.io

La commande curl est utilisée pour transférer des données depuis ou vers un serveur. Dans ce cas, elle récupère le contenu de la page web depuis https://labex.io. Cette action générera du trafic TCP car la requête HTTP vers la page web utilise le protocole TCP.

  1. Une fois que vous avez exécuté la commande curl, vous verrez le contenu de la page web affiché dans le terminal. En même temps, Wireshark capturera tous les paquets TCP liés à cette requête HTTP. Ces paquets contiennent des informations sur la requête et la réponse entre votre ordinateur et le serveur web.

  2. Après avoir capturé pendant environ 10 à 15 secondes, ce qui est généralement suffisant pour obtenir un bon échantillon du trafic, retournez dans Wireshark et cliquez sur le bouton Stop capturing packets (Arrêter la capture de paquets), représenté par une icône de carré rouge dans la barre d'outils. Cela arrête la capture de paquets par Wireshark.

Stop capturing packets
  1. Pour enregistrer le trafic capturé pour une analyse ultérieure, allez dans le menu File (Fichier) et sélectionnez Save (Enregistrer), ou vous pouvez appuyer sur Ctrl+S. Naviguez jusqu'au répertoire /home/labex/project/, donnez à votre fichier le nom capture.pcapng, puis cliquez sur Save (Enregistrer). Le format de fichier .pcapng est un format standard pour stocker les captures de paquets réseau, et il vous permet d'ouvrir et d'analyser le trafic capturé ultérieurement.

Vous avez maintenant capturé avec succès du trafic réseau qui contient des conversations TCP. Dans les prochaines étapes, nous analyserons ce trafic capturé pour en savoir plus sur TCP.

Filtrage et suivi des flux TCP (TCP Streams)

Dans cette étape, nous allons analyser le trafic labex.io que nous avons capturé à l'étape précédente. Nous apprendrons à filtrer le trafic réseau pour isoler des conversations TCP spécifiques et à explorer la puissante fonctionnalité "Suivre le flux TCP" (Follow TCP Stream) de Wireshark. Cette fonctionnalité agit comme une loupe pour les communications réseau, vous permettant de voir la conversation complète entre deux points d'extrémité (endpoints).

Filtrage du trafic TCP

Tout d'abord, filtrons le trafic pour nous concentrer spécifiquement sur notre communication labex.io :

  1. Dans la fenêtre principale de Wireshark, regardez en haut de la liste des paquets. Vous verrez une zone de texte de filtre d'affichage (display filter) avec un texte d'espace réservé qui indique "Appliquer un filtre d'affichage" (Apply a display filter).
  2. Tapez tcp dans la zone de filtre et appuyez sur Entrée ou cliquez sur le bouton fléché pour appliquer le filtre.
  3. La liste des paquets affiche maintenant uniquement les paquets TCP, mais nous pouvons la réduire davantage. Puisque nous sommes intéressés par le trafic labex.io que nous avons généré avec notre commande curl, affinons notre filtre.
  4. Tapez tcp contains "labex" dans la zone de filtre et appliquez-le. Cela affichera uniquement les paquets TCP qui contiennent "labex" dans leur contenu, ce qui nous aidera à trouver le trafic pertinent.
Apply TCP filter

Comprendre les conversations TCP

Avant de commencer à suivre les flux TCP, il est important de comprendre ce qu'est une conversation TCP. Une conversation TCP consiste en tous les paquets échangés entre deux points d'extrémité (combinaisons d'adresse IP et de port) pendant une session TCP. Chaque conversation TCP comporte plusieurs éléments clés :

  • Une adresse IP source et de destination : Dans notre cas, l'adresse IP de votre machine et l'adresse IP du serveur labex.io
  • Un port source et de destination : Pour notre connexion HTTPS à labex.io, le port de destination est probablement 443
  • Numéros de séquence et d'accusé de réception (sequence and acknowledgment numbers) : Ils suivent les données et assurent une livraison correcte
  • Divers drapeaux (flags) (SYN, ACK, FIN, etc.) : Ils contrôlent l'état de la connexion

Dans notre capture, nous devrions voir une conversation TCP entre votre machine et le serveur labex.io.

Suivi d'un flux TCP

Analysons maintenant le flux TCP pour notre requête labex.io :

  1. Dans la liste des paquets filtrés, recherchez les paquets avec une adresse IP de destination qui appartient probablement à labex.io. Vous devriez voir des paquets avec le port de destination 443 (HTTPS), qui est utilisé pour le trafic web sécurisé.
  2. Cliquez sur l'un de ces paquets pour le sélectionner.
  3. Faites un clic droit sur le paquet sélectionné et choisissez Follow > TCP Stream (Suivre > Flux TCP) dans le menu contextuel.
Follow TCP Stream menu
  1. Une nouvelle fenêtre s'ouvrira, affichant l'intégralité de la conversation TCP entre votre machine et le serveur labex.io.
TCP Stream content window
  1. Dans cette fenêtre :

    • Le texte en rouge représente les données envoyées de votre machine (client) au serveur labex.io
    • Le texte en bleu représente les données renvoyées par le serveur labex.io à votre machine
    • L'intégralité de la conversation est reconstruite dans l'ordre où elle s'est produite
  2. Puisque nous avons accédé à labex.io via HTTPS, vous verrez principalement des données chiffrées dans le flux. Ceci est normal et attendu car HTTPS chiffre les données pour les protéger pendant la transmission. Vous pourrez peut-être identifier la négociation TLS (TLS handshake) au début de la communication, mais la requête et la réponse HTTP réelles seront chiffrées.

  3. Explorez les différentes options d'affichage en utilisant le menu déroulant "Afficher et enregistrer les données sous forme de" ("Show and save data as") :

    • ASCII : Affiche les données sous forme de texte (utile pour lire les portions non chiffrées)
    • Hex Dump : Affiche les représentations hexadécimale et ASCII (idéal pour examiner les données chiffrées)
    • C Arrays : Formate les données sous forme de tableaux du langage de programmation C
    • Raw : Affiche uniquement les données binaires brutes (raw binary data)
  4. Pour conserver une trace de cette analyse, cliquez sur le bouton Print (Imprimer). Enregistrez la sortie d'impression au format PDF sous le nom print.pdf dans le répertoire /home/labex/project/.

Print button

En suivant le flux TCP, vous pouvez voir la communication complète entre votre machine et le serveur labex.io sans avoir à reconstituer manuellement les données à partir de paquets individuels. Dans l'étape suivante, nous apprendrons à enregistrer et à analyser ces données plus en détail.

Enregistrement et analyse des données de flux TCP (TCP Stream)

Dans cette étape, nous allons enregistrer les données du flux TCP de labex.io que nous avons examinées à l'étape précédente pour une analyse hors ligne. Nous apprendrons également à interpréter ces informations enregistrées pour extraire des informations précieuses de la communication HTTPS chiffrée.

Enregistrement des données de flux TCP

Enregistrons les données du flux TCP de notre connexion labex.io :

  1. Vous devriez toujours avoir la fenêtre Flux TCP ouverte depuis l'étape précédente, affichant la communication entre votre machine et labex.io. Si vous l'avez accidentellement fermée, répétez simplement les étapes pour suivre le flux TCP de l'un des paquets labex.io.

  2. Au bas de la fenêtre Flux TCP, localisez le bouton Save As (Enregistrer sous).

Save As button location
  1. Cliquez sur le bouton Save As (Enregistrer sous), ce qui ouvrira une boîte de dialogue d'enregistrement.

  2. Naviguez jusqu'au répertoire /home/labex/project/ et entrez le nom de fichier tcp_stream_data.txt.

  3. Cliquez sur le bouton Save (Enregistrer). Cela enregistre l'intégralité du flux TCP de labex.io dans un fichier texte avec le nom spécifié.

  4. Le contenu sera enregistré dans le format qui a été sélectionné dans le menu déroulant "Afficher et enregistrer les données sous forme de" ("Show and save data as"). Si vous souhaitez l'enregistrer dans un format différent (tel que Hex Dump au lieu de ASCII), vous pouvez modifier le format dans le menu déroulant avant d'enregistrer.

Comprendre les données enregistrées

Maintenant que nous avons enregistré le flux TCP de notre connexion labex.io, examinons son contenu :

  1. Ouvrez un terminal pour afficher le fichier enregistré :
head /home/labex/project/tcp_stream_data.txt

Ou vous pouvez utiliser cat pour afficher l'intégralité du fichier :

cat /home/labex/project/tcp_stream_data.txt
  1. Examinez le contenu du fichier. Étant donné que notre trafic vers labex.io était via HTTPS, une grande partie des données sera chiffrée et apparaîtra sous forme de caractères non lisibles. Cependant, vous pouvez toujours observer plusieurs éléments importants :

    • La négociation TLS (TLS handshake) au début de la communication, où votre client et le serveur labex.io négocient les paramètres de chiffrement
    • Les messages client hello et server hello, qui font partie de la négociation TLS
    • Les données d'application chiffrées qui contiennent votre requête HTTP réelle et la réponse du serveur
  2. Remarquez comment les données sont organisées de la même manière qu'elles apparaissaient dans la fenêtre Flux TCP, avec les données du client (de votre machine vers labex.io) séparées des données du serveur (de labex.io vers votre machine).

Applications pratiques de l'analyse des flux TCP

Les compétences d'analyse des flux TCP que vous développez sont précieuses dans de nombreux scénarios de cybersécurité. Relions-les à ce que nous avons observé avec notre trafic labex.io :

  1. Inspection TLS/SSL : En analysant la négociation TLS dans le flux labex.io, les professionnels de la sécurité peuvent vérifier que les connexions sécurisées utilisent des algorithmes de chiffrement forts.
  2. Surveillance de la sécurité : Même avec un trafic HTTPS chiffré comme notre connexion labex.io, les analystes peuvent identifier les modèles de communication sans nécessairement déchiffrer le contenu.
  3. Dépannage réseau : Si notre connexion à labex.io avait échoué, l'analyse du flux TCP pourrait aider à identifier si le problème se situait lors de l'établissement de la connexion TCP, de la négociation TLS ou de l'échange HTTP.
  4. Analyse forensique réseau : Dans un scénario d'enquête, les flux TCP comme notre connexion labex.io aideraient à reconstituer une chronologie des activités réseau.
  5. Analyse des performances : En examinant le timing et la séquence des paquets dans le flux TCP de labex.io, vous pourriez identifier les goulots d'étranglement potentiels des performances dans le réseau.

En enregistrant les flux TCP, comme nous l'avons fait avec notre connexion labex.io, vous créez un enregistrement permanent qui peut être :

  • Partagé avec les membres de l'équipe pour une analyse collaborative
  • Utilisé comme preuve dans les enquêtes de sécurité
  • Comparé à d'autres flux capturés pour identifier des modèles
  • Analysé avec des outils supplémentaires au-delà de Wireshark

Cette capacité à extraire, enregistrer et analyser les données de communication réseau réelles est ce qui fait de l'analyse des flux TCP une technique si puissante pour les professionnels de la sécurité réseau.

Techniques avancées d'analyse des flux TCP (TCP Stream)

Dans cette dernière étape, nous allons explorer quelques techniques avancées pour analyser les flux TCP dans notre capture, en nous concentrant sur notre trafic labex.io et toute autre conversation TCP qui pourrait être présente. Ces compétences avancées vous aideront à devenir plus efficace lorsque vous travaillez avec des captures de trafic réseau complexes.

Filtrage de plusieurs flux TCP

Apprenons à explorer et à filtrer toutes les conversations TCP dans notre capture, et pas seulement le trafic labex.io :

  1. Revenez à la fenêtre principale de Wireshark. Si la fenêtre Flux TCP de notre analyse labex.io est toujours ouverte, fermez-la.
  2. Pour afficher toutes les conversations TCP dans votre capture, allez dans Statistics > Conversations (Statistiques > Conversations) dans le menu supérieur.
  3. Dans la fenêtre Conversations, cliquez sur l'onglet TCP pour filtrer la vue et n'afficher que les conversations TCP.
Conversations window
  1. Cette vue affiche des détails sur toutes les conversations TCP dans votre capture, notamment :

    • Adresses et ports source et de destination
    • Octets transférés dans chaque direction
    • Durée de chaque conversation
    • Paquets dans chaque direction
  2. Recherchez la conversation qui correspond à notre connexion labex.io. Elle devrait impliquer les mêmes adresses IP que vous avez observées à l'étape 2. Vous pouvez également voir d'autres conversations TCP qui se déroulaient pendant votre période de capture.

  3. Sélectionnez la conversation labex.io et cliquez sur le bouton Follow Stream (Suivre le flux) en bas. Cela fournit une autre façon d'accéder au même flux TCP que nous avons analysé précédemment.

Utilisation des numéros de flux TCP

Chaque flux TCP dans votre capture possède un identifiant unique appelé numéro "tcp.stream". Cela fournit un moyen précis de filtrer et d'analyser des flux spécifiques :

  1. Avec la fenêtre principale de Wireshark ouverte, regardez les détails du paquet de l'un des paquets labex.io que vous avez identifiés précédemment. Développez la section "Transmission Control Protocol" dans le panneau central et recherchez un champ appelé "Stream index" ou similaire. Ce numéro est l'identifiant unique du flux TCP labex.io.

  2. Pour filtrer les paquets appartenant à ce flux spécifique, utilisez un filtre d'affichage comme celui-ci :

tcp.stream eq N

Remplacez N par le numéro d'index de flux que vous avez trouvé. Par exemple, si le flux labex.io a l'index 2, vous utiliserez :

tcp.stream eq 2
  1. Appliquez ce filtre dans la zone de filtre d'affichage. Wireshark affichera désormais uniquement les paquets qui appartiennent au flux TCP labex.io, offrant une vue plus claire de cette seule conversation.

  2. Ce filtre est particulièrement utile lorsque vous avez de nombreuses conversations TCP dans votre capture et que vous souhaitez vous concentrer sur une conversation spécifique sans avoir à trouver et à cliquer avec le bouton droit de la souris sur un paquet à chaque fois.

Filtered packets

En maîtrisant ces techniques avancées d'analyse des flux TCP, vous avez considérablement amélioré vos capacités d'analyse du trafic réseau. Vous pouvez désormais isoler, examiner et documenter efficacement les conversations TCP dans des captures réseau complexes, une compétence inestimable pour les professionnels de la cybersécurité.

Résumé

Dans ce labo, vous avez appris à utiliser la fonctionnalité "Follow TCP Stream" (Suivre le flux TCP) de Wireshark pour une analyse approfondie du trafic réseau. Vous avez acquis une expérience pratique de la capture du trafic réseau, du filtrage des conversations TCP, de l'interprétation des données dans différents formats, de l'enregistrement des données de flux pour une utilisation hors ligne et de l'application de techniques d'analyse avancées.

Ces compétences sont essentielles pour les administrateurs réseau, les analystes de sécurité et les professionnels de l'informatique. Elles vous permettent de dépanner les problèmes de réseau, d'enquêter sur les incidents de sécurité et de comprendre le comportement des applications. Au fur et à mesure de votre progression, n'oubliez pas que Wireshark possède de nombreuses autres fonctionnalités et que l'analyse des flux TCP n'est qu'un outil précieux parmi d'autres dans votre arsenal de cybersécurité.