Requin filaire

Guide de l'interface de ligne de commande Wireshark « tshark »

Guide de l'interface de ligne de commande Wireshark « tshark »
Dans les didacticiels précédents pour Wireshark, nous avons couvert des sujets de niveau fondamental à avancé. Dans cet article, nous allons comprendre et couvrir une interface de ligne de commande pour Wireshark, je.e., requin. La version terminal de Wireshark prend en charge des options similaires et est très utile lorsqu'une interface utilisateur graphique (GUI) n'est pas disponible.

Même si une interface utilisateur graphique est, en théorie, beaucoup plus facile à utiliser, tous les environnements ne la prennent pas en charge, en particulier les environnements de serveur avec uniquement des options de ligne de commande. Par conséquent, à un moment donné, en tant qu'administrateur réseau ou ingénieur en sécurité, vous devrez utiliser une interface de ligne de commande. Il est important de noter que tshark est parfois utilisé comme substitut de tcpdump. Même si les deux outils sont presque équivalents en termes de fonctionnalité de capture de trafic, tshark est beaucoup plus puissant.

Le mieux que vous puissiez faire est d'utiliser tshark pour configurer un port sur votre serveur qui transmet les informations à votre système, afin que vous puissiez capturer le trafic pour analyse à l'aide d'une interface graphique. Cependant, pour le moment, nous apprendrons comment cela fonctionne, quels sont ses attributs et comment vous pouvez l'utiliser au mieux de ses capacités.

Tapez la commande suivante pour installer tshark dans Ubuntu/Debian en utilisant apt-get :

[email protected]:~$ sudo apt-get install tshark -y

Tapez maintenant tshark -aide pour lister tous les arguments possibles avec leurs drapeaux respectifs que nous pouvons passer à une commande requin.

[email protected]:~$ tshark --help | tête -20
TShark (Wireshark) 2.6.10 (Git v2.6.10 emballés en 2.6.10-1~ubuntu18.04.0)
Vider et analyser le trafic réseau.
Voir https://www.fil de fer.org pour plus d'informations.
Utilisation : tshark [options]…
Interface de capture :
-je nom ou idx de l'interface (def: first non-loopback)
-F filtre de paquets dans la syntaxe du filtre libpcap
-s longueur de l'instantané de paquet (def : maximum approprié)
-p ne capture pas en mode promiscuité
-Je capture en mode moniteur, si disponible
-B taille de la mémoire tampon du noyau (def : 2 Mo)
-oui type de couche de liaison (def : premier approprié)
--type d'horodatage méthode d'horodatage pour l'interface
-D imprimer la liste des interfaces et quitter
-L affiche la liste des types de couches de liaison d'iface et de sortie
--list-time-stamp-types affiche la liste des types d'horodatage pour iface et exit
Capturer les conditions d'arrêt :

Vous pouvez remarquer une liste de toutes les options disponibles. Dans cet article, nous couvrirons la plupart des arguments en détail, et vous comprendrez la puissance de cette version Wireshark orientée terminal.

Sélection de l'interface réseau :

Pour effectuer une capture et une analyse en direct dans cet utilitaire, nous devons d'abord comprendre notre interface de travail. Taper requin -D et tshark listera toutes les interfaces disponibles.

[email protégé] :~$ tshark -D
1. enp0s3
2. quelconque
3. lo (bouclage)
4. nflog
5. nfqueue
6. usbmon1
7. ciscodump (capture à distance Cisco)
8. randpkt (générateur de paquets aléatoires)
9. sshdump (capture à distance SSH)
dix. udpdump (capture à distance de l'écouteur UDP)

Notez que toutes les interfaces répertoriées ne fonctionneront pas. Taper ifconfig pour trouver des interfaces fonctionnelles sur votre système. Dans mon cas, c'est enp0s3.

Capturez le trafic :

Pour démarrer le processus de capture en direct, nous utiliserons le requin commande avec le "-je” option pour commencer le processus de capture à partir de l'interface de travail.

[email protégé] :~$ tshark -i enp0s3

Utiliser Ctrl+C pour arrêter la capture en direct. Dans la commande ci-dessus, j'ai redirigé le trafic capturé vers la commande Linux diriger pour afficher les premiers paquets capturés. Ou vous pouvez également utiliser le "-c ” syntaxe pour capturer le “n" nombre de paquets.

[email protégé]:~$ tshark -i enp0s3 -c 5

Si vous entrez seulement requin, par défaut, il ne commencera pas à capturer le trafic sur toutes les interfaces disponibles et n'écoutera pas votre interface de travail. Au lieu de cela, il capturera les paquets sur la première interface répertoriée.

Vous pouvez également utiliser la commande suivante pour vérifier plusieurs interfaces :

[email protégé]:~$ tshark -i enp0s3 -i usbmon1 -i lo

En attendant, une autre façon de capturer le trafic en direct consiste à utiliser le numéro à côté des interfaces répertoriées.

[email protégé] :~$ tshark -i numéro_interface

Cependant, en présence de plusieurs interfaces, il est difficile de garder une trace de leurs numéros répertoriés.

Filtre de capture :

Les filtres de capture réduisent considérablement la taille du fichier capturé. Tshark utilise la syntaxe du filtre de paquets Berkeley -F "”, qui est également utilisé par tcpdump. Nous utiliserons l'option "-f" pour capturer uniquement les paquets des ports 80 ou 53 et utiliserons "-c" pour afficher uniquement les 10 premiers paquets.

[email protected]:~$ tshark -i enp0s3 -f "port 80 ou port 53" -c 10

Enregistrement du trafic capturé dans un fichier :

L'essentiel à noter dans la capture d'écran ci-dessus est que les informations affichées ne sont pas enregistrées, elles sont donc moins utiles. On utilise l'argument "-w” pour enregistrer le trafic réseau capturé dans test_capture.pcap dans /tmp dossier.

[email protégé] :~$ tshark -i enp0s3 -w /tmp/test_capture.pcap

Tandis que, .pcap est l'extension de type de fichier Wireshark. En enregistrant le fichier, vous pouvez revoir et analyser le trafic dans une machine avec l'interface graphique Wireshark plus tard.

C'est une bonne pratique d'enregistrer le fichier dans /tmp car ce dossier ne nécessite aucun privilège d'exécution. Si vous l'enregistrez dans un autre dossier, même si vous exécutez tshark avec les privilèges root, le programme refusera l'autorisation pour des raisons de sécurité.

Examinons tous les moyens possibles par lesquels vous pouvez :

  • appliquer des limites à la capture de données, telles que la sortie requin ou l'arrêt automatique du processus de capture, et
  • sortir vos fichiers.

Paramètre d'arrêt automatique :

Vous pouvez utiliser le "-une” paramètre pour incorporer les indicateurs disponibles tels que la taille du fichier de durée et les fichiers. Dans la commande suivante, nous utilisons le paramètre autostop avec le durée indicateur pour arrêter le processus dans les 120 secondes.

[email protected]:~$ tshark -i enp0s3 -a duration:120 -w /tmp/test_capture.pcap

De même, si vous n'avez pas besoin que vos fichiers soient extra-larges, taille du fichier est un indicateur parfait pour arrêter le processus après quelques limites de Ko.

[email protected]:~$ tshark -i enp0s3 -a filesize:50 -w /tmp/test_capture.pcap

Le plus important, des dossiers flag vous permet d'arrêter le processus de capture après un certain nombre de fichiers. Mais cela ne peut être possible qu'après avoir créé plusieurs fichiers, ce qui nécessite l'exécution d'un autre paramètre utile, la sortie de capture.

Paramètre de sortie de capture :

Sortie de capture, alias argument ringbuffer "-b", vient avec les mêmes drapeaux que l'arrêt automatique. Cependant, l'utilisation/le rendement est un peu différent, je.e., les drapeaux durée et taille du fichier, car il vous permet de basculer ou d'enregistrer des paquets dans un autre fichier après avoir atteint un délai spécifié en secondes ou en taille de fichier.

La commande ci-dessous montre que nous capturons le trafic via notre interface réseau enp0s3, et capturez le trafic à l'aide du filtre de capture "-F" pour tcp et dns. Nous utilisons l'option ringbuffer "-b" avec un taille du fichier drapeau pour enregistrer chaque fichier de taille 15 Ko, et utilisez également l'argument autostop pour spécifier le nombre de fichiers en utilisant des dossiers option telle qu'elle arrête le processus de capture après avoir généré trois fichiers.

[email protected]:~$ tshark -i enp0s3 -f "port 53 ou port 21" -b filesize:15 -a files:2 -w /tmp/test_capture.pcap

J'ai divisé mon terminal en deux écrans pour surveiller activement la création de trois .fichiers pcap.

Allez dans votre /tmp dossier et utilisez la commande suivante dans le deuxième terminal pour surveiller les mises à jour toutes les secondes.

[email protected]:~$ watch -n 1 "ls -lt"

Maintenant, vous n'avez pas besoin de mémoriser tous ces drapeaux. Au lieu de cela, tapez une commande tshark -i enp0s3 -f "port 53 ou port 21" -b filesize:15 -a dans votre terminal et appuyez sur Languette. La liste de tous les drapeaux disponibles sera disponible sur votre écran.

[email protected]:~$ tshark -i enp0s3 -f "port 53 ou port 21" -b filesize:15 -a
durée : fichiers : taille du fichier :
[email protected]:~$ tshark -i enp0s3 -f "port 53 ou port 21" -b filesize:15 -a

En train de lire .Fichiers pcap :

Plus important encore, vous pouvez utiliser un "-r” paramètre pour lire le test_capture.pcap et redirigez-le vers le diriger commander.

[email protégé] :~$ tshark -r /tmp/test_capture.pcap | diriger

Les informations affichées dans le fichier de sortie peuvent être un peu écrasantes. Pour éviter les détails inutiles et mieux comprendre toute adresse IP de destination spécifique, nous utilisons le -r option pour lire le fichier capturé par paquet et utiliser un ip.adresse filtre pour rediriger la sortie vers un nouveau fichier avec le "-w” option. Cela nous permettra de revoir le dossier et d'affiner notre analyse en appliquant des filtres supplémentaires.

[email protégé] :~$ tshark -r /tmp/test_capture.pcap -w /tmp/fichier_redirect.pcap ip.dst==216.58.209.142
[email protected] :~$ tshark -r /tmp/redirected_file.pcap|tête
dix.00000000 10.0.2.15 → 216.58.209.142 TLSv1.2 370 Données d'application
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSv1.2 669 Données d'application
3 0.011336222 10.0.2.15 → 216.58.209.142 TLSv1.2 5786 Données d'application
4 0.016413181 10.0.2.15 → 216.58.209.142 TLSv1.2 1093 Données d'application
5 0.016571741 10.0.2.15 → 216.58.209.142 TLSv1.2 403 Données d'application
6 0.016658088 10.0.2.15 → 216.58.209.142 TCP 7354 [segment TCP d'un PDU réassemblé]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSv1.2 948 Données d'application
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSv1.2 233 Données d'application
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSv1.2 669 Données d'application
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSv1.2 3582 Données d'application

Sélection des champs à produire :

Les commandes ci-dessus génèrent un résumé de chaque paquet qui comprend divers champs d'en-tête. Tshark vous permet également d'afficher des champs spécifiés. Pour spécifier un champ, nous utilisons "-champ T” et extraire les champs selon notre choix.

Après le "-champ T", nous utilisons l'option "-e" pour imprimer les champs/filtres spécifiés. Ici, nous pouvons utiliser les filtres d'affichage Wireshark.

[email protégé] :~$ tshark -r /tmp/test_capture.pcap -T champs -e cadre.nombre -e ip.src -e ip.dst | diriger
1 10.0.2.15 216.58.209.142
2 10.0.2.15 216.58.209.142
3 216.58.209.142 10.0.2.15
4 216.58.209.142 10.0.2.15
5 10.0.2.15 216.58.209.142
6 216.58.209.142 10.0.2.15
7 216.58.209.142 10.0.2.15
8 216.58.209.142 10.0.2.15
9 216.58.209.142 10.0.2.15
10 10.0.2.15 115.186.188.3

Capturez les données de négociation cryptées :

Jusqu'à présent, nous avons appris à enregistrer et à lire les fichiers de sortie à l'aide de divers paramètres et filtres. Nous allons maintenant apprendre comment HTTPS initialise la session tshark. Les sites Web accessibles via HTTPS au lieu de HTTP garantissent une transmission de données sécurisée ou cryptée sur le fil. Pour une transmission sécurisée, un cryptage Transport Layer Security démarre un processus de prise de contact pour lancer la communication entre le client et le serveur.

Capturons et comprenons la poignée de main TLS à l'aide de tshark. Divisez votre terminal en deux écrans et utilisez un wget commande pour récupérer un fichier html depuis https://www.fil de fer.organisation.

[email protégé] :~$ wget https://www.fil de fer.organisation
--2021-01-09 18:45:14-- https://www.fil de fer.org/
Connexion à www.filaire.org (www.filaire.org)|104.26.dix.240|:443… connecté.
Requête HTTP envoyée, en attente de réponse… 206 Contenu partiel
Longueur : 46892 (46 Ko), 33272 (32 Ko) restants [texte/html]
Enregistrement dans : 'index.html'
indice.html 100%[++++++++++++++================================= ==>] 45.79K 154Ko/s en 0.2s
2021-01-09 18:43:27 (154 Ko/s) - 'index.html' enregistré [46892/46892]

Dans un autre écran, nous utiliserons tshark pour capturer les 11 premiers paquets en utilisant le "-c" paramètre. Lors de l'analyse, les horodatages sont importants pour reconstruire les événements, c'est pourquoi nous utilisons "-t annonce”, de manière à ce que tshark ajoute un horodatage à côté de chaque paquet capturé. Enfin, nous utilisons la commande host pour capturer les paquets de l'hôte partagé adresse IP.

Cette poignée de main est assez similaire à la poignée de main TCP. Dès que la poignée de main TCP à trois voies se termine dans les trois premiers paquets, les quatrième à neuvième paquets suivent un rituel de poignée de main quelque peu similaire et incluent des chaînes TLS pour assurer une communication cryptée entre les deux parties.

[email protégé] :~$ tshark -i enp0s3 -c 11 -t ad host 104.26.dix.240
Capture sur 'enp0s3'
1 2021-01-09 18:45:14.174524575 10.0.2.15 → 104.26.dix.240 TCP 74 48512 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=2488996311 TSecr=0 WS=128
2 2021-01-09 18:45:14.279972105 104.26.dix.240 → 10.0.2.15 TCP 60 443 → 48512 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1460
3 2021-01-09 18:45:14.280020681 10.0.2.15 → 104.26.dix.240 TCP 54 48512 → 443 [ACK] Seq=1 Ack=1 Win=64240 Len=0
4 2021-01-09 18:45:14.280593287 10.0.2.15 → 104.26.dix.240 TLSv1 373 Bonjour client
5 2021-01-09 18:45:14.281007512 104.26.dix.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] Seq=1 Ack=320 Win=65535 Len=0
6 09/01/2021 18:45:14.390272461 104.26.dix.240 → 10.0.2.15 TLSv1.3 1466 Bonjour du serveur, modifier la spécification de chiffrement
7 2021-01-09 18:45:14.390303914 10.0.2.15 → 104.26.dix.240 TCP 54 48512 → 443 [ACK] Seq=320 Ack=1413 Win=63540 Len=0
8 2021-01-09 18:45:14.392680614 104.26.dix.240 → 10.0.2.15 TLSv1.3 1160 Données d'application
9 2021-01-09 18:45:14.392703439 10.0.2.15 → 104.26.dix.240 TCP 54 48512 → 443 [ACK] Seq=320 Ack=2519 Win=63540 Len=0
10 2021-01-09 18:45:14.394218934 10.0.2.15 → 104.26.dix.240 TLSv1.3 134 Modification de la spécification de chiffrement, données d'application
11 2021-01-09 18:45:14.394614735 104.26.dix.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] Seq=2519 Ack=400 Win=65535 Len=0
11 paquets capturés

Affichage du paquet entier :

Le seul inconvénient d'un utilitaire de ligne de commande est qu'il n'a pas d'interface graphique, car il devient très pratique lorsque vous devez rechercher beaucoup de trafic Internet, et il offre également un panneau de paquets qui affiche tous les détails des paquets dans un instant. Cependant, il est toujours possible d'inspecter le paquet et de vider l'intégralité des informations sur le paquet affichées dans le panneau de paquets de l'interface graphique.

Pour inspecter un paquet entier, nous utilisons une commande ping avec l'option "-c" pour capturer un seul paquet.

[email protégé]:~$ ping -c 1 104.26.dix.240
PING 104.26.dix.240 (104.26.dix.240) 56(84) octets de données.
64 octets à partir de 104.26.dix.240 : icmp_seq=1 ttl=55 temps=105 ms
--- 104.26.dix.240 statistiques de ping ---
1 paquets transmis, 1 reçu, 0% de perte de paquets, temps 0ms
rtt min/moy/max/mdev = 105.095/105.095/105.095/0.000 ms

Dans une autre fenêtre, utilisez la commande tshark avec un indicateur supplémentaire pour afficher tous les détails du paquet. Vous pouvez remarquer diverses sections, affichant les détails des trames, Ethernet II, IPV et ICMP.

[email protégé] :~$ tshark -i enp0s3 -c 1 -V hôte 104.26.dix.240
Trame 1 : 98 octets sur le fil (784 bits), 98 octets capturés (784 bits) sur l'interface 0
Identifiant de l'interface : 0 (enp0s3)
Nom de l'interface : enp0s3
Type d'encapsulation : Ethernet (1)
Heure d'arrivée: 9 janvier 2021 21:23:39.167581606 PKT
[Décalage temporel pour ce paquet : 0.00000000 secondes]
Époque : 1610209419.167581606 secondes
[Délai de temps par rapport à l'image capturée précédente : 0.00000000 secondes]
[Délai de temps par rapport à l'image affichée précédente : 0.00000000 secondes]
[Temps depuis la référence ou la première image : 0.00000000 secondes]
Numéro de cadre : 1
Longueur de trame : 98 octets (784 bits)
Longueur de capture : 98 octets (784 bits)
[Le cadre est marqué : Faux]
[Le cadre est ignoré : Faux]
[Protocoles dans le cadre : eth:ethertype:ip:icmp:data]
Ethernet II, Src : PcsCompu_17:fc:a6 (08:00:27:17:fc:a6), Heure d'été : RealtekU_12:35:02 (52:54:00:12:35:02)
Destination : RealtekU_12:35:02 (52:54:00:12:35:02)
Adresse : RealtekU_12:35:02 (52:54:00:12:35:02)
… 1… = LG bit : Adresse administrée localement (ce n'est PAS la valeur par défaut)
… 0… = bit IG : adresse individuelle (unicast)
Source : PcsCompu_17:fc:a6 (08:00:27:17:fc:a6)
Adresse : PcsCompu_17:fc:a6 (08:00:27:17:fc:a6)
Identifiant de l'interface : 0 (enp0s3)
Nom de l'interface : enp0s3
Type d'encapsulation : Ethernet (1)
Heure d'arrivée: 9 janvier 2021 21:23:39.167581606 PKT
[Décalage temporel pour ce paquet : 0.00000000 secondes]
Époque : 1610209419.167581606 secondes
[Délai de temps par rapport à l'image capturée précédente : 0.00000000 secondes]
[Délai de temps depuis l'image affichée précédente : 0.00000000 secondes]
[Temps depuis la référence ou la première image : 0.00000000 secondes]
Numéro de cadre : 1
Longueur de trame : 98 octets (784 bits)
Longueur de capture : 98 octets (784 bits)
[Le cadre est marqué : Faux]
[Le cadre est ignoré : Faux]
[Protocoles dans le cadre : eth:ethertype:ip:icmp:data]
Ethernet II, Src : PcsCompu_17:fc:a6 (08:00:27:17:fc:a6), Heure d'été : RealtekU_12:35:02 (52:54:00:12:35:02)
Destination : RealtekU_12:35:02 (52:54:00:12:35:02)
Adresse : RealtekU_12:35:02 (52:54:00:12:35:02)
… 1… = LG bit : Adresse administrée localement (ce n'est PAS la valeur par défaut)
… 0… = bit IG : adresse individuelle (unicast)
Source : PcsCompu_17:fc:a6 (08:00:27:17:fc:a6)
Adresse : PcsCompu_17:fc:a6 (08:00:27:17:fc:a6)
… 0… = Bit LG : Adresse globale unique (réglage d'usine)
… 0… = bit IG : adresse individuelle (unicast)
Saisissez : IPv4 (0x0800)
Protocole Internet version 4, Src : 10.0.2.15, heure d'été : 104.26.dix.240
0100… = Version : 4
… 0101 = Longueur de l'en-tête : 20 octets (5)
Champ de services différenciés : 0x00 (DSCP : CS0, ECN : Non-ECT)
0000 00… = Codet de services différenciés : Par défaut (0)
… 00 = Notification d'encombrement explicite : transport non compatible ECN (0)
Longueur totale : 84
Identifiant : 0xcc96 (52374)
Drapeaux : 0x4000, Ne pas fragmenter
0… = Bit réservé : Non défini
.1… = Ne pas fragmenter : Définir
… 0… = Plus de fragments : Non défini
… 0 0000 0000 0000 = Décalage du fragment : 0
Durée de vie : 64
Protocole : ICMP (1)
Somme de contrôle de l'en-tête : 0xeef9 [validation désactivée]
[Statut de la somme de contrôle de l'en-tête : non vérifié]
Source : 10.0.2.15
Destination : 104.26.dix.240
Protocole de message de contrôle Internet
Type : 8 (demande d'écho (ping))
Code : 0
Somme de contrôle : 0x0cb7 [correct]
[Statut de la somme de contrôle : bon]
Identifiant (BE) : 5038 (0x13ae)
Identifiant (LE) : 44563 (0xae13)
Numéro de séquence (BE) : 1 (0x0001)
Numéro de séquence (LE) : 256 (0x0100)
Horodatage des données icmp : 9 janvier 2021 21:23:39.00000000 PKT
[Horodatage des données icmp (relatif) : 0.167581606 secondes]
Données (48 octets)
0000 91 8e 02 00 00 00 00 00 10 11 12 13 14 15 16 17…
0010 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27… !"#$%&'
0020 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 ()*+,-./01234567
Données : 918e0200000000000101112131415161718191a1b1c1d1e1f…
[Longueur : 48]

Conclusion:

L'aspect le plus difficile de l'analyse de paquets est de trouver les informations les plus pertinentes et d'ignorer les bits inutiles. Même si les interfaces graphiques sont simples, elles ne peuvent pas contribuer à l'analyse automatisée des paquets réseau. Dans cet article, vous avez appris les paramètres tshark les plus utiles pour capturer, afficher, enregistrer et lire les fichiers de trafic réseau.

Tshark est un utilitaire très pratique qui lit et écrit les fichiers de capture pris en charge par Wireshark. La combinaison de filtres d'affichage et de capture contribue beaucoup tout en travaillant sur des cas d'utilisation de niveau avancé. Nous pouvons tirer parti de la capacité de tshark à imprimer des champs et à manipuler des données selon nos exigences pour une analyse approfondie. En d'autres termes, il est capable de faire pratiquement tout ce que Wireshark fait. Plus important encore, il est parfait pour renifler des paquets à distance en utilisant ssh, ce qui est un sujet pour un autre jour.

Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...
Vulkan pour les utilisateurs Linux
Avec chaque nouvelle génération de cartes graphiques, nous voyons les développeurs de jeux repousser les limites de la fidélité graphique et se rappro...
OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...