Filtrer le trafic HTTP dans Tshark

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 (lab), vous apprendrez à filtrer et à analyser le trafic HTTP à l'aide de Tshark, l'outil en ligne de commande de Wireshark. Vous allez pratiquer la capture du trafic web sur le port 80 et isoler les requêtes HTTP grâce à des techniques de filtrage spécifiques.

Les exercices vous guideront dans l'extraction des méthodes HTTP (GET/POST) et la mise en forme de la sortie au format JSON pour une analyse structurée. Ces compétences sont essentielles pour la résolution de problèmes réseau et les tâches d'inspection du trafic.


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/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548928{{"Filtrer le trafic HTTP dans Tshark"}} wireshark/display_filters -.-> lab-548928{{"Filtrer le trafic HTTP dans Tshark"}} wireshark/packet_analysis -.-> lab-548928{{"Filtrer le trafic HTTP dans Tshark"}} wireshark/commandline_usage -.-> lab-548928{{"Filtrer le trafic HTTP dans Tshark"}} end

Capturer le trafic HTTP avec -f "tcp port 80"

Dans cette étape, vous apprendrez à capturer le trafic HTTP en utilisant le filtre d'affichage -f "tcp port 80" de Wireshark. Le protocole HTTP (Hypertext Transfer Protocol) est la base de la communication de données sur le World Wide Web, et il utilise généralement le port 80 pour le trafic web non chiffré. Ce filtre permet d'isoler le trafic HTTP des autres protocoles réseau, facilitant ainsi l'analyse des communications web.

Avant de commencer, comprenons quelques bases :

  • Les ports réseau sont comme des portes par lesquelles différents types de trafic réseau entrent et sortent.
  • Le port 80 est le port standard assigné au trafic HTTP.
  • Wireshark peut filtrer le trafic en fonction de ces numéros de port.

Tout d'abord, ouvrons Wireshark dans l'environnement de la machine virtuelle (VM) LabEx. Suivez attentivement ces étapes :

  1. Ouvrez un terminal sur le bureau Xfce (vous le trouverez dans le menu Applications > Système > Terminal).
  2. Accédez au répertoire de travail par défaut où nous allons stocker nos fichiers de capture :
cd ~/project
  1. Lancez Wireshark avec le filtre d'affichage pour le trafic HTTP :
sudo wireshark -k -f "tcp port 80"

Analysons les options de la commande :

  • -k : Cela indique à Wireshark de commencer immédiatement à capturer les paquets.
  • -f "tcp port 80" : C'est notre filtre de capture qui demande à Wireshark d'enregistrer uniquement le trafic TCP destiné ou provenant du port 80.

Maintenant, nous avons besoin de trafic HTTP à analyser. Ouvrez une autre fenêtre de terminal (vous pouvez cliquer avec le bouton droit sur le bureau et sélectionner "Ouvrir un terminal") et générez du trafic de test avec :

curl http://example.com

Dans la fenêtre Wireshark, vous verrez les paquets capturés montrant :

  1. La requête HTTP de votre ordinateur à example.com (généralement commençant par "GET / HTTP/1.1").
  2. La réponse du serveur web (généralement contenant "HTTP/1.1 200 OK").

Chaque paquet affiche des détails importants tels que :

  • Les adresses IP source et de destination.
  • Le protocole (HTTP).
  • La taille du paquet.
  • Les informations de chronométrage.

Pour les débutants : Wireshark agit comme un microscope pour le trafic réseau. Le filtre tcp port 80 fonctionne comme une lentille spécialisée qui ne vous montre que le trafic web, ignorant les autres types de communication réseau. Cette vue ciblée vous aide à comprendre comment les navigateurs web et les serveurs communiquent sans être submergé par les autres activités réseau.

Filtrer les requêtes avec -Y "http.request"

Dans cette étape, vous apprendrez à filtrer les requêtes HTTP en utilisant le filtre d'affichage -Y "http.request" de Wireshark. Ce filtre vous permet de vous concentrer spécifiquement sur les paquets de requêtes HTTP, en excluant les réponses et le reste du trafic réseau. Comprendre les requêtes HTTP est fondamental pour l'analyse du trafic web, car elles représentent les premiers messages que les clients envoient aux serveurs.

En nous appuyant sur l'étape précédente où nous avons capturé le trafic HTTP, filtrons maintenant uniquement les requêtes HTTP :

  1. Tout d'abord, assurez-vous que vous êtes dans le répertoire de travail par défaut où nous allons travailler avec nos fichiers de capture :
cd ~/project
  1. Exécutez Wireshark avec le filtre d'affichage pour les requêtes HTTP :
sudo wireshark -k -Y "http.request"

L'option -Y applique un filtre d'affichage (différent du filtre de capture -f utilisé à l'étape 1). Alors que les filtres de capture limitent ce qui est enregistré, les filtres d'affichage aident à analyser les données déjà capturées. Ce filtre particulier n'affichera que les paquets contenant des requêtes HTTP.

  1. Pour générer du trafic de test que nous pouvons analyser, ouvrez un autre terminal et exécutez ces commandes clientes HTTP courantes :
curl http://example.com
wget http://example.com

Pour les débutants : Le filtre d'affichage http.request correspond spécifiquement aux paquets de requêtes HTTP. Cela est utile lorsque vous souhaitez analyser uniquement les requêtes envoyées par les clients aux serveurs, en ignorant les réponses du serveur. La syntaxe du filtre fait partie du puissant langage de filtrage d'affichage de Wireshark qui vous permet de sélectionner précisément quels paquets afficher en fonction de critères spécifiques au protocole.

Dans la fenêtre Wireshark, vous devriez maintenant voir uniquement les paquets de requêtes HTTP provenant des commandes curl et wget. Chaque paquet affichera des informations importantes sur le protocole HTTP, notamment :

  • La méthode HTTP (GET, POST, etc.) qui indique le type de requête
  • L'URI demandée montrant la ressource spécifique à laquelle on accède
  • La version HTTP (comme HTTP/1.1) montrant la version du protocole
  • Les informations sur l'hôte identifiant le serveur cible

Extraire la méthode avec -e http.request.method

Dans cette étape, nous allons nous concentrer spécifiquement sur l'extraction des méthodes de requête HTTP à partir du trafic réseau en utilisant l'outil en ligne de commande de Wireshark, tshark. Les méthodes HTTP sont les verbes qui indiquent l'action souhaitée à effectuer sur une ressource, comme GET pour récupérer des données ou POST pour soumettre des données.

Avant de commencer, comprenons ce sur quoi nous allons travailler :

  • Les méthodes HTTP sont des composants fondamentaux des communications web.
  • Tshark nous permet d'examiner directement ces méthodes à partir des paquets réseau capturés.
  • Le drapeau -e nous permet d'extraire des champs spécifiques des données des paquets.

Parcourons le processus étape par étape :

  1. Tout d'abord, nous devons nous placer dans le bon répertoire de travail où sont stockés nos fichiers de capture :
cd ~/project
  1. Maintenant, nous allons exécuter la commande tshark pour extraire les méthodes HTTP à partir du trafic en direct :
sudo tshark -Y "http.request" -T fields -e http.request.method

Analysons cette commande :

  • sudo : Nous donne les autorisations nécessaires pour capturer le trafic réseau.
  • tshark : La version en ligne de commande de Wireshark.
  • -Y "http.request" : Applique un filtre d'affichage pour n'afficher que les requêtes HTTP.
  • -T fields : Spécifie que nous voulons une sortie basée sur les champs (plutôt que des paquets complets).
  • -e http.request.method : Indique à tshark d'extraire uniquement le champ de la méthode HTTP.
  1. Pour voir cela en action, nous allons générer un peu de trafic de test depuis une autre fenêtre de terminal :
curl -X GET http://example.com
curl -X POST http://example.com
curl -X DELETE http://example.com

Chacune de ces commandes curl envoie une méthode HTTP différente à example.com, que tshark capturera et affichera. Le drapeau -X dans curl nous permet de spécifier quelle méthode HTTP utiliser.

Après avoir exécuté ces commandes, vous devriez voir une sortie similaire à :

GET
POST
DELETE

Cette sortie montre exactement quelles méthodes HTTP ont été utilisées dans le trafic capturé, ce qui facilite l'analyse des modèles de requêtes web. Les noms des méthodes apparaissent dans l'ordre où ils ont été capturés par tshark.

Afficher en JSON avec -T json

Dans cette étape, nous allons explorer comment formater les données de trafic HTTP capturées au format JSON en utilisant l'utilitaire Tshark de Wireshark. JSON (JavaScript Object Notation) est un format de données léger qui est facile à lire pour les humains et à analyser pour les machines. Cela en fait un format idéal pour l'analyse programmée du trafic réseau.

Avant de commencer, comprenons pourquoi la sortie au format JSON est précieuse :

  • Organisation structurée des données
  • Facile intégration avec d'autres outils et scripts
  • Format standardisé pour l'échange de données
  1. Tout d'abord, assurez-vous que vous êtes dans le répertoire de travail par défaut où nous allons exécuter nos commandes :
cd ~/project
  1. Maintenant, exécutons Tshark pour capturer les requêtes HTTP et les afficher au format JSON. Cette commande combine le filtrage avec le formatage JSON :
sudo tshark -Y "http.request" -T json -e http.request.method -e http.host -e http.request.uri

Analysons ce que chaque partie de cette commande fait :

  • -Y "http.request" : Ce filtre indique à Tshark de n'afficher que les paquets de requêtes HTTP.
  • -T json : Spécifie que nous voulons la sortie au format JSON.
  • -e fields : Ces options extraient des informations spécifiques de chaque requête HTTP :
    • http.request.method : La méthode HTTP utilisée (GET, POST, etc.).
    • http.host : Le domaine du site web consulté.
    • http.request.uri : Le chemin ou la ressource spécifique demandée.
  1. Pour générer du trafic de test que nous pouvons capturer, ouvrez une deuxième fenêtre de terminal et exécutez ces commandes curl :
curl http://example.com
curl http://example.org/sample

Lorsque vous exécutez la commande Tshark pendant que ce trafic de test est généré, vous verrez une sortie structurée comme ceci :

[
  {
    "_index": "packets-1",
    "_source": {
      "layers": {
        "http.request.method": ["GET"],
        "http.host": ["example.com"],
        "http.request.uri": ["/"]
      }
    }
  },
  {
    "_index": "packets-2",
    "_source": {
      "layers": {
        "http.request.method": ["GET"],
        "http.host": ["example.org"],
        "http.request.uri": ["/sample"]
      }
    }
  }
]

Remarquez comment chaque requête HTTP devient un objet JSON distinct avec des champs clairement étiquetés. Cette structure facilite l'identification de :

  • Quel site web a été consulté
  • Quel type de requête a été effectué
  • Quelle page ou ressource spécifique a été demandée

Le format JSON est particulièrement utile lorsque vous souhaitez enregistrer ces données pour une analyse ultérieure ou les fournir à d'autres outils capables de traiter automatiquement les données JSON.

Résumé

Dans ce laboratoire, vous avez appris à filtrer et analyser le trafic HTTP en utilisant l'outil en ligne de commande Tshark de Wireshark. Les exercices ont couvert la capture de trafic HTTP avec -f "tcp port 80" et la génération de trafic de test à l'aide de curl pour une analyse pratique.

Vous avez également pratiqué le filtrage des requêtes HTTP avec -Y "http.request" et l'extraction de données spécifiques telles que les méthodes HTTP en utilisant -e http.request.method. Le laboratoire a démontré le formatage de la sortie au format JSON avec -T json, vous dotant des techniques clés pour une inspection efficace du trafic réseau.