Ateliers Ă  Wireshark

Julia Evans, l'auteur du matériel que nous publions aujourd'hui, a décidé de parler de l'un de ses outils réseau préférés appelé Wireshark . Il s'agit d'un programme puissant et complexe, équipé d'une interface graphique, conçu pour analyser le trafic dans les réseaux informatiques. Julia dit qu'en pratique, elle n'utilise que quelques-unes des fonctionnalités de Wireshark, mais elles sont généralement utiles. Ici, elle veut partager avec tous ceux qui souhaitent une histoire sur les méthodes les plus utiles de travailler avec le programme et espÚre qu'ils seront utiles non seulement pour elle, mais aussi pour tous ceux qui doivent résoudre des problÚmes de réseau.



Installer Wireshark


Les distributions Wireshark pour divers systĂšmes d'exploitation peuvent ĂȘtre trouvĂ©es ici . Pour installer le programme, vous pouvez tĂ©lĂ©charger et installer le fichier correspondant. Alternativement, si vous utilisez des distributions Linux basĂ©es sur Debian, vous pouvez utiliser la commande sudo apt install wireshark . Si vous le souhaitez, afin de trouver la derniĂšre version du programme, vous pouvez vous rĂ©fĂ©rer Ă  l'archive personnelle des packages cableshark-dev .

Voici Ă  quoi ressemble l'interface du programme.


Interface Wireshark

À premiĂšre vue, tout cela peut sembler trop compliquĂ©: une longue liste de packages, un champ mystĂ©rieux pour saisir des requĂȘtes ... Comment travailler avec Wireshark?

Analyse des fichiers pcap


J'utilise généralement Wireshark pour trouver les causes des problÚmes de réseau. La séquence d'actions exécutée au cours de la résolution de ces problÚmes ressemble à ceci:

  1. Capturez des paquets avec tcpdump (généralement avec une commande comme sudo tcpdump port 443 -w output.pcap ).
  2. Copie du fichier pcap sur un ordinateur portable fonctionnel ( scp host:~/output.pcap . ).
  3. Ouverture d'un fichier pcap Ă  l'aide de Wireshark ( wireshark output.pcap ).

Comme vous pouvez le voir, tout est trĂšs simple. Cependant, aprĂšs l'ouverture du fichier pcap dans le programme, vous pouvez avoir une question logique sur ce qu'il faut faire avec tout cela. Parlons-en.

Analyse de connexion TCP


Souvent, lorsque j'analyse une certaine situation dans Wireshark, je dois vérifier une connexion TCP spécifique, avec laquelle, pour une raison quelconque, quelque chose ne va pas. Grùce à Wireshark, vous pouvez analyser l'ensemble du cycle de vie d'une connexion TCP individuelle et découvrir les causes d'un comportement incorrect du systÚme.

Pour ce faire, cliquez avec le bouton droit sur le package qui vous intéresse et choisissez la commande Conversation filter > TCP dans le menu contextuel.


Lancer l'analyse de connexion TCP

AprĂšs cela, Wireshark affichera les autres paquets de la mĂȘme connexion TCP Ă  laquelle appartient le paquet sur lequel vous avez cliquĂ©. Dans la figure ci-dessous, vous pouvez voir un exemple de connexion SSL rĂ©ussie - il existe client hello packages client hello service hello , certificate , server key exchange qui sont utilisĂ©s pour Ă©tablir des connexions SSL.


Analyse de connexion TCP

La technique d'analyse de paquets TCP discutĂ©e ici que j'ai dĂ» utiliser le jour de la rĂ©daction de cet article, au travail. Certaines connexions ont Ă©tĂ© abandonnĂ©es et j'ai remarquĂ© qu'aprĂšs avoir envoyĂ© le paquet client hello , le client hello envoyĂ© le paquet FIN ACK , qui a mis fin Ă  la connexion TLS. Ce que j'ai rĂ©ussi Ă  dĂ©couvrir s'est avĂ©rĂ© utile, car il est devenu clair que le client et non le serveur mettaient fin Ă  la connexion. En consĂ©quence, j'ai immĂ©diatement dĂ©couvert que le problĂšme venait du client et je devais y prĂȘter attention.

Ce qui prĂ©cĂšde est un schĂ©ma trĂšs typique pour moi de travailler avec Wireshark. Habituellement, le client et le serveur sont impliquĂ©s dans la connexion et quelque chose ne va pas sur le client ou sur le serveur. Cela peut ĂȘtre, par exemple, une sorte d'Ă©chec ou d'erreur dans les paramĂštres systĂšme. En consĂ©quence, Wireshark me fournit une aide inestimable pour identifier le coupable des problĂšmes, en aidant Ă  savoir s'il s'agit d'un client ou d'un serveur.

Décoder en équipe


Afin de comprendre exactement ce qu'est un package particulier, Wireshark utilise des numéros de port, et cette approche fonctionne généralement. Par exemple, si un programme voit du trafic sur le port 80, il décide que c'est du trafic HTTP et c'est généralement le cas.

Cependant, parfois les connexions HTTP utilisent des ports inhabituels et, par consĂ©quent, Wireshark a besoin d'indices pour les reconnaĂźtre. De tels conseils peuvent ĂȘtre donnĂ©s au programme en appelant le menu contextuel du package et en sĂ©lectionnant la commande Decode as . De plus, vous pouvez indiquer Ă  Wireshark quel protocole est utilisĂ© pour transmettre des paquets en utilisant un certain port. Ces conseils simplifient l'analyse des donnĂ©es.

Afficher le contenu de l'emballage


Dans Wireshark, il existe simplement un mode agréable pour afficher des informations détaillées sur un package, avec lequel vous pouvez comprendre le contenu de n'importe quel package. Prenez, par exemple, le package avec le message client hello du client hello de l'exemple précédent. Il s'agit du premier paquet de connexion SSL, le client avec son aide comme s'il disait: «Bonjour! Me voici! "

Wireshark fournit Ă  l'administrateur rĂ©seau deux outils incroyablement utiles pour examiner le contenu d'un package. Le premier est un mode d'affichage dans lequel vous pouvez Ă©tendre les en-tĂȘtes disponibles pour le paquet (par exemple, en-tĂȘte Ethernet, en-tĂȘte IP, en-tĂȘte TCP) et afficher leur contenu.


Analyse d'en-tĂȘte de package

Le deuxiÚme mode de visualisation des packages est un vrai miracle. Ici, vous pouvez voir les données brutes des paquets sous la forme d'une séquence d'octets. Et, ce qui est particuliÚrement agréable, si vous passez la souris sur un octet (par exemple, dans la figure ci-dessous, le curseur se trouve sur l'octet inclus dans tiles.services.mozilla.com ), le programme, dans la barre d'état, vous indiquera à quel champ il appartient. cet octet (dans ce cas, il s'agit du champ Server Name du Server Name ), et du nom de code utilisé par Wireshark pour ce champ (dans ce cas - ssl.handshake.extensions_server_name )


Analyse des données du package brut

Recherche de package


Wireshark prend en charge un langage de requĂȘte puissant. Cela simplifie considĂ©rablement la recherche de packages spĂ©cifiques dans les listes. Habituellement, lorsque je travaille avec un programme, j'utilise des requĂȘtes trĂšs simples. Voici quelques exemples:

  • Le frame contains "mozilla" requĂȘte frame contains "mozilla" vous permet de rechercher la ligne mozilla n'importe oĂč dans le package et de rĂ©pertorier les packages trouvĂ©s.
  • La tcp.port == 443 affiche les paquets utilisant le port TCP 443.
  • La requĂȘte dns.resp.len > 0 affiche toutes les rĂ©ponses DNS
  • La ip.addr == 52.7.23.87 affiche les paquets dont l'adresse IP source ou de destination est 52.7.23.87.

Le langage de requĂȘte Wireshark a des capacitĂ©s beaucoup plus grandes que le langage de requĂȘte tcpdump (et, en outre, prend en charge la saisie semi-automatique en appuyant sur la touche TAB). Par consĂ©quent, j'utilise souvent la sĂ©quence d'actions suivante: je capture une grande quantitĂ© de paquets Ă  l'aide de tcpdump (disons, quelque chose comme tous les paquets du port 443), puis je les Ă©tudie attentivement Ă  l'aide de Wireshark.

Afficher les détails de la durée de la connexion TCP


Parfois, je dois porter une attention particuliÚre à l'étude des connexions TCP lentes. Comment faire, à condition que dans mon fichier il y ait des enregistrements de milliers de paquets? Comment trouver des connexions TCP lentes?

Si vous sélectionnez Statistics dans le menu principal du programme et la commande Conversations qu'il contient, Wireshark nous fournira un merveilleux ensemble d'informations statistiques.


Informations statistiques

En particulier, ici, dans la colonne Duration , vous pouvez voir la durée des connexions TCP, identifier les plus longues et les étudier attentivement. C'est une fonctionnalité trÚs utile.

Mise Ă  jour de Wireshark


Si vous n'avez pas mis à jour Wireshark depuis longtemps, cela vaut la peine de le faire. Par exemple, récemment, sur un ordinateur portable fonctionnel, je faisais des recherches sur les paquets HTTP / 2. Ce n'était pas facile pour moi à l'époque, et j'ai décidé de regarder la documentation. Il s'est avéré que j'avais une ancienne version du programme. Dans la mise à jour que j'ai installée, le support HTTP / 2 a été sérieusement amélioré, c'est-à-dire qu'il y avait juste ce dont j'avais besoin à l'époque.

Utilisation de Wireshark pour apprendre les protocoles réseau


Cet article contient des termes qui peuvent ĂȘtre attribuĂ©s Ă  quelque chose comme le jargon des spĂ©cialistes des rĂ©seaux. Par exemple - trame, port TCP (port TCP), rĂ©ponse DNS (rĂ©ponse DNS), adresse IP source (adresse IP source), connexions SSL du paquet client hello (bonjour client SSL). L'une des raisons de leur utilisation est le fait que Wireshark n'essaie certainement pas de protĂ©ger l'utilisateur contre les subtilitĂ©s de la structure interne des technologies de rĂ©seau. Pour un dĂ©butant, cet Ă©tat de fait peut, dans un premier temps, vous faire penser que Wireshark n'est pas un programme pour lui, mais uniquement pour des spĂ©cialistes rĂ©seau expĂ©rimentĂ©s.

L'accent mis par Wireshark sur les mĂ©canismes de rĂ©seau de bas niveau prĂ©sente cependant un avantage majeur. Le fait est qu'en travaillant avec ce programme, vous pouvez apprendre quelque chose de nouveau sur les protocoles rĂ©seau. Par exemple, je ne connais pas grand-chose aux mĂ©canismes internes du protocole TLS / SSL. Cependant, en analysant le trafic dans Wireshark, j'ai remarquĂ© que les deux premiers paquets de la connexion SSL sont client hello et server hello . En consĂ©quence, le protocole, qui, si l'on ne se penche pas sur les dĂ©tails de son travail, semble mystĂ©rieux et inaccessible Ă  la comprĂ©hension, commence Ă  prendre une forme plus comprĂ©hensible, se transforme en quelque chose qui peut ĂȘtre compris et analysĂ©.

Résumé


Wireshark a d'Ă©normes opportunitĂ©s. Ici, nous n'avons parlĂ© que de certains d'entre eux. Cependant, selon l'auteur du document, les mĂ©thodes de travail discutĂ©es ici sont utilisĂ©es dans environ 95% des situations oĂč Wireshark est nĂ©cessaire. Par consĂ©quent, nous espĂ©rons que mĂȘme le peu que vous avez appris aujourd'hui vous sera utile.

Chers lecteurs! Utilisez-vous Wireshark?

Source: https://habr.com/ru/post/fr416537/


All Articles