Filtrez l'émission ! Nous auditons le trafic réseau à l'aide de tcpdump. Tcpdump - tutoriel utile avec des exemples Exemples Tcpdump

tcpdump est un puissant analyseur de ligne de commande et Libpcap, une bibliothèque portable pour capturer le trafic réseau. Tcpdump imprime une description du contenu des paquets sur une interface réseau qui correspond à une expression booléenne. Il peut également être exécuté avec le commutateur -w, qui l'invoque pour enregistrer les données de lot dans un fichier pour une analyse ultérieure, et/ou avec l'indicateur -r, qui l'oblige à lire à partir du fichier de lot enregistré. Avec l'aide de cet utilitaire, vous pouvez intercepter et également analyser le trafic réseau qui passe par le PC sur lequel ce programme s'exécute.

J'aimerais parler dans ce sujet "installation et utilisation de tcpdump" de l'installation de tcpdump, ainsi que de son utilisation et de son utilisation.

Avec tcpdump vous pouvez :

  • Vous pouvez déboguer des applications réseau.
  • Vous pouvez déboguer le réseau ou l'équipement réseau en général.

Pour installer tcpdump sur debian / ubuntu / linux mint, vous devez exécuter :

# sudo apt-get install tcpdump

Pour installer tcpdump sur RedHat / CentOS / Fedora utilisez :

# sudo yum installer tcpdump

Pour installer tcpdump sur MacOS, utilisez.

# brew installe tcpdump

Utilisation de tcpdump.

Pour vérifier si tcpdump fonctionne pour nous, vous pouvez exécuter la commande :

# tcpdump -i eth0 port 80

Il y a pas mal de commutateurs pour utiliser l'utilitaire tcpdump lui-même, je vais donner une liste de ceux les plus courants :

Si vous avez besoin de savoir quels packages échangent les serveurs 21 (par exemple, votre_serveur_1 et votre_serveur_2), la commande est utilisée pour cela :

# tcpdump héberge votre_serveur_1 et votre_serveur_2

Si vous souhaitez surveiller uniquement les paquets sortants de l'hôte, exécutez :

# tcpdump src héberge votre_serveur

Si vous devez surveiller uniquement les paquets entrants de l'hôte, exécutez :

# tcpdump dst héberge votre_serveur

Vous pouvez également écouter les paquets sortants ou entrants du serveur et sur un port spécifique pour cela, ajoutez simplement le port que vous souhaitez écouter (la plupart du temps 80, 8080 sont utilisés).

Voir la liste des interfaces sur lesquelles tcpdumt peut écouter :

# tcpdump -D

Écouter l'interface eth0 :

# tcpdump -i eth0

Jouez sur n'importe quelle interface disponible (nécessite le noyau Linux 2.2 ou supérieur) :

# tcpdump -i tout

Tout afficher à l'écran (tout ce qui est fait par le programme) :

# tcpdump -v

Afficher beaucoup de choses à l'écran (tout ce qui est fait par le programme) :

# tcpdump -vv

Il y a beaucoup de sortie à l'écran (tout ce qui est fait par le programme):

# tcpdump -vvv

N'imprimez pas beaucoup d'informations lors de la capture de paquets (pas en standard) :

# tcpdump -q

Limitez la capture de paquets à 100 :

# tcpdump -c 100

Écrivez toutes les données (paquets capturés) dans un fichier nommé capture.cap :

# tcpdump -w capture.cap

Écrivez toutes les données (paquets capturés) dans un fichier nommé capture.cap et affichez-le en temps réel :

# tcpdump -v -w capture.cap

Sortie des paquets du fichier capture.cap :

# tcpdump -r capture.cap

Sortir les paquets du fichier capture.cap en utilisant autant d'informations que possible :

# tcpdump -vvv -r capture.cap

Sortant l'IP et les ports au lieu des domaines, la capture de paquets est en cours :

# tcpdump -n

Capturez tous les paquets dont l'hôte de destination est 192.138.1.1. Sortie IP et ports sur l'écran :

# tcpdump -n hôte dst 192.138.1.1

# tcpdump -n src hôte 192.138.1.1

Capturez tous les paquets de l'hôte 192.138.1.1. Sortie IP et ports sur l'écran :

# tcpdump -n hôte 192.138.1.1

Capturez les paquets où le réseau est 192.138.1.0/24. Sortie IP et ports sur l'écran :

# tcpdump -n dst net 192.138.1.0/24

# tcpdump -n src net 192.138.1.0/24

Capturez les paquets du réseau 192.138.1.0/24. Sortie IP et ports sur l'écran :

# tcpdump -n net 192.138.1.0/24

Capturez les paquets du port 23. Affichage de l'IP et des ports à l'écran :

# tcpdump -n dst port 23

Capturez les paquets des ports 1 à 1023. Affichage de l'IP et des ports à l'écran :

# tcpdump -n dst plage de port 1-1023

Capturez uniquement les paquets TCP dont la destination est sur les ports 1 à 1023. Affichage de l'IP et des ports à l'écran :

# tcpdump -n tcp dst plage de port 1-1023

Capturez uniquement les paquets UDP dont la destination est sur les ports 1 à 1023. Affichage de l'IP et des ports à l'écran :

# tcpdump -n udp dst plage de port 1-1023

Capturez les paquets de la destination où l'IP est 192.138.1.1 et le port de destination est 23. Affichage :

# tcpdump -n "dst host 192.138.1.1 et dst port 23"

Capturez les paquets depuis la destination où IP 192.138.1.1 et la destination sur les ports 80 ou 443. Affichage :

# tcpdump -n "dst host 192.138.1.1 et (dst port 80 ou dst port 443)"

Capturez tous les paquets ICMP :

# tcpdump -v icmp

Capturez tous les paquets ARP :

# tcpdump -v arp

Capturez tous les paquets ICMP ou ARP :

# tcpdump -v "icmp ou arp"

Capturez tous les paquets diffusés ou multicast :

# tcpdump -n "diffusion ou multidiffusion"

Capture de gros paquets (500 octets) et non standard 68b :

# tcpdump -s 500

Capturez tous les octets de données dans un paquet :

# tcpdump -s 0

Affichage des "colis lourds" :

# tcpdump -nnvvXSs 1514

Capture de paquets ICMP avec ping et pong :

# tcpdump -nnvXSs 0 -c2 icmp

Conclusion sans beaucoup d'options :

# tcpdump -nS

Communications de base (mode très verbeux), vous pouvez voir une bonne quantité de trafic, avec de la verbosité :

# tcpdump -nnvvS

Un examen plus approfondi du trafic, en ajoutant -X pour la charge utile :

# tcpdump -nnvvXS

Parcourez le package lourd et augmentez la longueur instantanée en saisissant l'ensemble du package :

# tcpdump -nnvvXSs 1514

Vous pouvez également filtrer en fonction de parties spécifiques du package, ainsi que combiner plusieurs conditions en groupes. Ceci est utile lorsque vous recherchez uniquement des SYN ou PCT, par exemple, et ce dernier pour une isolation du trafic encore plus avancée.

Montrez-moi tous les packages URGENT (URG) :

# tcpdump "tcp & 32! = 0"

Montrez-moi tous les paquets ACKNOWLEDGE (ACK) :

# tcpdump "tcp & 16! = 0"

Montrez-moi tous les packages PUSH (PSH) :

# tcpdump "tcp & 8! = 0"

Montrez-moi tous les packages RESET (RST) :

# tcpdump "tcp & 4! = 0"

Montrez-moi tous les paquets SYNCHRONIZE (SYN) :

# tcpdump "tcp & 2! = 0"

Montrez-moi tous les paquets FINISH (FIN) :

# tcpdump "tcp & 1! = 0"

Montrez-moi tous les paquets SYNCHRONIZE / ACKNOWLEDGE (SYNACK):

# tcpdump "tcp = 18"

Capture d'indicateurs TCP à l'aide de tcpflags :

# tcpdump "tcp & & tcp-syn! = 0"

Paquets avec les drapeaux RST et SYN (vérifier) :

# tcpdump "tcp = 6"

Trafic « Evil Bit » (vérifier) :

# tcpdump "ip & 128! = 0"

Ceci conclut mon article "installer et utiliser tcpdump", j'espère que tout est clair et compréhensible.

L'utilitaire tcpdump est un outil très puissant et populaire pour capturer et analyser les paquets réseau. Il vous permet de visualiser tous les paquets entrants et sortants à partir d'une interface spécifique et fonctionne à partir de la ligne de commande. Bien sûr, vous pouvez utiliser Wirshark pour analyser les paquets réseau, c'est un utilitaire graphique, mais il y a parfois des situations où vous n'avez besoin de travailler que dans le terminal.

Tcpdump n'est pas pire que Wireshark et possède toutes les capacités nécessaires pour l'analyse des paquets. De plus, vous pouvez enregistrer tous les paquets capturés dans un fichier pour les analyser plus tard en utilisant le même Wireshark. Dans cet article, nous verrons comment utiliser tcpdump pour capturer des paquets réseau.

De nombreuses distributions sont livrées avec la commande tcpdump par défaut, mais si votre distribution ne l'a pas, vous pouvez très facilement l'installer à partir des référentiels officiels. Par exemple, sur Ubuntu/Debian :

sudo apt installer tcpdum p

Sur Fedora / Red Hat / CentOS :

sudo yum installer tcpdump

Une fois l'installation terminée, vous pouvez vous mettre au travail.

Commande Tcpdump

Avant de passer aux exemples d'utilisation de l'utilitaire, examinons sa syntaxe et ses options de base. La commande a la syntaxe suivante :

$ tcpdump options -i filtres d'interface

Lors de l'appel, assurez-vous de passer l'interface que vous surveillerez. Si l'interface n'est pas spécifiée, la première de la liste sera utilisée. Les options personnalisent l'affichage et les fonctionnalités de base de l'utilitaire, et les filtres vous permettent de filtrer les packages indésirables. Voyons maintenant les principales options :

  • -UNE- sortie de tous les paquets au format ASCII ;
  • -c- fermer le programme après avoir intercepté le n-ième nombre de paquets ;
  • -C- lors de l'écriture de packages dans un fichier, vérifiez la taille du fichier, et si elle est plus grande que celle spécifiée, créez un nouveau fichier ;
  • -RÉ- afficher une liste des interfaces réseau disponibles ;
  • -e- afficher les informations de niveau de connexion pour chaque paquet, cela peut être utile, par exemple, pour afficher l'adresse MAC ;
  • -F- afficher le nom de domaine pour les adresses IP ;
  • -F- lire les packages à partir d'un fichier, pas d'une interface ;
  • -G- créer un nouveau fichier journal après une période de temps spécifiée ;
  • -H- détecter les en-têtes 802.11s ;
  • -je- nom de l'interface de capture des paquets. Vous pouvez capturer des paquets de toutes les interfaces en spécifiant n'importe laquelle ;
  • -JE- basculer l'interface en mode moniteur pour capturer tous les paquets qui passent ;
  • -j- définir le format d'horodatage pour l'enregistrement des paquets ;
  • -J- voir l'horodatage disponible ;
  • -K- ne pas vérifier les sommes de contrôle des paquets ;
  • -l- ajouter un support de défilement à la sortie ;
  • -L- afficher les protocoles de connexion pris en charge pour l'interface ;
  • -n- ne pas afficher les noms de domaine ;
  • -r- lire les packages à partir d'un fichier créé avec -w ;
  • -v, -vv, -vvv- sortie plus détaillée;
  • -q- afficher un minimum d'informations ;
  • -w- écrire la sortie dans un fichier ;
  • -Z- l'utilisateur au nom duquel les fichiers seront créés.

Ce ne sont pas toutes des options, mais elles vous suffiront pour la plupart des tâches. Le plus souvent, nous appliquerons des filtres. À l'aide de filtres, vous pouvez filtrer uniquement les types de paquets que vous souhaitez voir. Vous pouvez filtrer par adresse IP, protocole, réseau, interface et de nombreux autres paramètres. Mais nous allons considérer les filtres tcpdump par des exemples.

Comment utiliser tcpdump

Avant de passer à l'utilisation de tcpdump, vous devez examiner les interfaces réseau que vous pouvez utiliser. Pour ce faire, exécutez la commande avec l'option -D :

Commençons par regarder des exemples de tcpdump en capturant le trafic sur l'interface eth0, pour moi c'est l'interface principale qui est connectée à Internet. Le programme a besoin des droits de superutilisateur pour fonctionner, alors n'oubliez pas de spécifier sudo :

sudo tcpdump -i eth0

Pour arrêter la commande, appuyez sur Ctrl + C. Dans la sortie, vous verrez immédiatement tous les paquets capturés. Le format d'enregistrement de chaque paquet ressemblera à ceci :

13 : 03 : 41.795599 IP udp032919uds.hawaiiantel.net.6881> 192.168.1.2.52055 : Drapeaux [.], Seq 640160396 : 640161844, ack 436677393, win 2050, options, longueur 1448

Ce format est typique des paquets de données, selon le protocole, le texte surligné en noir sera différent. Vient d'abord l'horodatage, puis le protocole, puis l'adresse IP de l'expéditeur est marquée en vert, et l'adresse du destinataire en bleu, dans ce cas, notre ordinateur. Ensuite, il y a des paramètres tcp supplémentaires et à la fin la taille du paquet en octets. La verbosité de la sortie peut être contrôlée avec les options -v, par exemple :

sudo tcpdump -v -i eth0

Il y a déjà des informations sur le protocole IP ici :

IP (tos 0x0, ttl 64, id 50309, décalage 0, drapeaux, proto TCP (6), longueur 64)

Nous pouvons trouver des informations sur la durée de vie du paquet TTL, la version TCP et la longueur du champ d'en-tête. L'option -vv imprimera la vérification de la somme de contrôle du package et son contenu dans certains cas.

Après les options, vous pouvez spécifier des filtres pour les packages. Voici les principaux paramètres par lesquels vous pouvez filtrer les paquets :

  • hôte- nom d'hôte ;
  • ip- adresse IP;
  • proto- protocole ;
  • rapporter- adresse réseau ou sous-réseau ;
  • Port- l'adresse du port ;
  • src- paramètre concernant l'expéditeur ;
  • dst- paramètre concernant le destinataire ;
  • Les protocoles suivants sont disponibles : éther, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp et UDP.

Vous pouvez combiner tout cela entre eux pour obtenir le résultat souhaité. Regardons de plus près les exemples. Filtrons uniquement les paquets adressés à notre ordinateur :

sudo tcpdump -i eth0 ip dst 192.168.1.2

Nous pouvons également sélectionner des paquets envoyés à un nœud spécifique :

sudo tcpdump -i eth0 hôte dst google-public-dns-a.google.com

Comme vous pouvez le voir, ce sont des paquets DNS et ici, au lieu de drapeaux TCP, il y a des informations utiles, une demande d'adresse IP de l'hôte. Vous pouvez également sélectionner des paquets de réponse à partir d'un hôte spécifique :

sudo tcpdump -i eth0 hôte src google-public-dns-a.google.com

Le contenu complet du package n'est pas ici, si vous voulez l'obtenir, vous devez utiliser l'option -v ou -vv :

sudo tcpdump -vv -i eth0 hôte dst google-public-dns-a.google.com

Avec l'opérateur and, vous pouvez combiner plusieurs filtres en un seul :

sudo tcpdump -i eth0 hôte dst google-public-dns-a.google.com et hôte src google-public-dns-a.google.com

Les deux et et ou sont disponibles à partir des opérations de jointure, et les parenthèses peuvent également être utilisées pour indiquer la priorité. Vous n'avez pas besoin de spécifier l'hôte, dans de nombreux cas src ou dst suffisent, l'utilitaire lui-même comprendra ce que cela signifiait. La même conception exacte peut être utilisée pour les ports. Par exemple, nous pouvons filtrer toutes les requêtes ou réponses au DNS (sur le port 53) :

sudo tcpdump -vv -i eth0 port 53

Exactement la même chose peut être fait pour http (port 80):

sudo tcpdump -vv -i eth0 port 80

Naturellement, vous pouvez également utiliser ici dst et src pour des résultats plus spécifiques. Vous pouvez filtrer non pas un port, mais toute une gamme de ports :

sudo tcpdump portrange 21-23

Si vous spécifiez l'un des protocoles, vous filtrerez uniquement les paquets de ce protocole, par exemple tcp, udp ou arp :

sudo tcpdump -vv arp

De même, vous pouvez sélectionner tous les packages udp :

sudo tcpdump -vv udp

Un filtre par désignation de réseau est également disponible :

sudo tcpdump net 129.168.1.1/24

Vous pouvez également filtrer les paquets en fonction de leur taille, par exemple, moins de 32 octets :

sudo tcpdump moins 32

Ou plus de 128 :

tcpdump supérieur à 128

sudo tcpdump -i eth0 -w fichier.pcap

Ce fichier peut être ouvert avec n'importe quel programme pour lire de tels fichiers, par exemple, Wireshark. Pour ouvrir les packages enregistrés dans un fichier, utilisez l'option -r :

sudo tcpdump -r fichier.pcap

Il y a encore une chose à laquelle il faut prêter attention. Il s'agit du format d'affichage du contenu des packages. Vous pouvez afficher le contenu d'un package au format ASCII à l'aide de l'option -A :

sudo tcpdump -A -i eth0

Vous pouvez également afficher du contenu au format HEX et ASCII en utilisant -XX pour cela :

sudo tcpdump -XX -i eth0

conclusions

Dans cet article, nous avons expliqué comment utiliser tcpdump. C'est un analyseur de réseau très puissant qui ne fonctionne que via la ligne de commande. J'espère que ces informations vous ont été utiles et que maintenant utiliser tcpdump sera beaucoup plus facile, si vous avez encore des questions, posez-les dans les commentaires !

Pour terminer la vidéo de la conférence tcpdump :

La commande tcpdump est également appelée renifleur de paquets.

La commande tcpdump fonctionnera sur la plupart des versions du système d'exploitation UNIX. tcpdump nous permet de sauvegarder les paquets capturés afin que nous puissions utiliser le paquet capturé pour une analyse plus approfondie. Le fichier enregistré peut être visualisé avec la même commande tcpdump. Nous pouvons également utiliser un logiciel open source comme Wireshark pour lire les fichiers tcpdump PCAP.

Dans ce tutoriel, nous allons passer en revue quelques exemples pratiques d'utilisation de la commande tcpdump.

1. Capture de paquets à partir d'une interface LAN spécifique à l'aide de tcpdump -i

Lors de l'exécution de tcpdump sans aucune option, il capture tous les paquets passant par toutes les interfaces. Option -je commande tcpdump, permet de filtrer sur une interface Ethernet spécifique.

$ tcpdump -i eth1 12: 59: 41.967250 ARP, Request who-has free.msk.ispsystem.net tell gw.msk.ispsystem.net, longueur 46 12: 59: 41.967257 ARP, Request who-has reserve.scoffserver.ru dites à gw.msk.ispsystem.net, longueur 46 12 : 59 : 41..44141> wdc-ns1.ispsystem.net.domain : 14799+ PTR ? 184.48.146.82.in-addr.arpa. (44) ...

Dans cet exemple, tcpdump capture tous les paquets du flux sur l'interface eth1 et les affiche sur la sortie standard.

Noter:

L'utilitaire Editcap est utilisé pour sélectionner ou supprimer des packages spécifiques d'un fichier de vidage et les traduire dans un format spécifié.

2. Capturez uniquement le N-ième nombre de paquets avec tcpdump -c

Lorsque vous exécutez la commande tcpdump, elle vous fournit des packages jusqu'à ce que vous annuliez la commande tcpdump. Utilisation de l'option -c vous pouvez spécifier le nombre de paquets à capturer.

$ tcpdump -c 2 -i eth0 écoute sur eth0, type de lien EN10MB (Ethernet), taille de capture 65535 octets 13 : 01 : 35.165898 ARP, Request who-has 213.159.211.80 tell gw.msk.ispsystem.net, longueur 46 13 : 01: 35..35123> wdc-ns1.ispsystem.net.domain: 7254+ PTR ? 80.211.159.213.in-addr.arpa. (45) 2 paquets capturés 7 paquets reçus par le filtre 0 paquets abandonnés par le noyau

Commande Tcpdump capturé seulement 2 paquets de l'interface eth0.

Noter:

Mergecap et TShark : Mergecap est un outil de fusion de vidage de packages qui combinera plusieurs packages en un seul fichier de vidage. Tshark est un puissant outil de capture de paquets réseau qui peut être utilisé pour analyser le trafic réseau. Il est livré avec Wireshark Network Distribution Analyzer.

3. Affichez les paquets capturés en ASCII en utilisant tcpdump -a

La syntaxe tcpdump suivante imprime le paquet en ASCII.

$ tcpdump -A -i eth0 13: 03: 06.516709 IP 213.132.93.178..vlsi-lm: Flags [.], ack 3120779210, win 254, length 0 E .. ( [email protégé]] ..... b ... %. = ... O.P ....... 13 : 03 : 06..35313> wdc-ns1.ispsystem.net.domain : 13562+ PTR ? 178.93.132.213.in-addr.arpa. (45) [email protégé]@ ........ x ..... 5.5 [filtres]

Dans la documentation officielle (commande man tcpdump), vous pouvez trouver plusieurs exemples d'utilisation de cet utilitaire pour différents cas, en utilisant des filtres assez divers et complexes.

Il est également important de noter que tcpdump (et en fait tous les analyseurs de paquets) pendant son fonctionnement peut générer d'énormes quantités d'informations et charger considérablement le réseau, jusqu'à et y compris des défaillances dans son fonctionnement. Par conséquent, lors de l'analyse du trafic, vous devez utiliser une approche rationnelle - en fonction de la situation et des conditions de la tâche (ou du problème), utilisez des filtres, d'autant plus qu'il s'agit d'une partie très efficace de la fonctionnalité tcpdump.

Les commutateurs les plus couramment utilisés lors de l'exécution de tcpdump sont indiqués dans le tableau

clé

la description

Convertit les adresses réseau et de diffusion en noms de domaine.

Affiche les données de la couche liaison (adresse MAC, protocole, longueur de paquet). En plus des adresses IP, les adresses MAC des ordinateurs seront affichées.

Utilisez le filtre fourni dans le fichier. Si vous utilisez ce paramètre, le filtre de la ligne de commande sera ignoré.

Indique quelle interface réseau sera utilisée pour capturer les paquets. La valeur par défaut est eth0, pour sélectionner toutes les interfaces est any. S'il n'y a pas de réseau local, vous pouvez utiliser l'interface de bouclage lo.

Utilisez la sortie de flux standard de tcpdump (stdout), par exemple pour écrire dans un fichier :

shell # tcpdump -l | tee out.log // affichera l'opération tcpdump et enregistrera le résultat dans le fichier out.log

N'ajoute pas d'extension de domaine aux noms d'hôtes. Par exemple, tcpdump affichera 'net' au lieu de 'net.library.org'

Affiche l'adresse IP au lieu du nom d'hôte.

Affiche le numéro de port au lieu du protocole qu'il utilise.

Ne met pas l'interface en mode promiscuité.

Affiche un minimum d'informations. Il s'agit généralement du nom du protocole, d'où provient le paquet et d'où, des ports et de la quantité de données transférées.

Cette option permet à tcpdump de lire le trafic d'un fichier s'il a été précédemment enregistré avec l'option -w.

Permet de ne pas transformer les numéros de séquence absolus (numéros de séquence initiaux - ISN) en numéros relatifs.

Le nombre d'octets de paquets que tcpdump traitera. Si vous définissez un grand nombre d'octets à afficher, les informations peuvent ne pas tenir sur l'écran et peuvent être difficiles à étudier. Selon les objectifs que vous poursuivez, vous devez choisir la valeur de ce paramètre. Par défaut, tcpdump capture les 68 premiers octets (au moins 96 octets pour SunOS), mais si vous voulez voir le contenu de l'intégralité du paquet, utilisez 1514 octets (la taille de trame maximale sur Ethernet).

N'affiche pas l'horodatage sur chaque ligne.

Interpréter des paquets d'un type donné. Les types aodv, cnfp, rpc, rtp, rtcp, snmp, tftp, vat, wb sont pris en charge.

Affiche un horodatage non formaté sur chaque ligne.

Affiche l'heure avec la date.

Sortie d'informations détaillées (TTL ; ID ; longueur totale de l'en-tête, ainsi que ses paramètres ; vérifie les sommes de contrôle des en-têtes IP et ICMP)

La sortie est encore plus complète, principalement liée à NFS et SMB.

Affichage des informations les plus détaillées.

Enregistre les données tcpdump au format binaire. Les avantages de l'utilisation de cette méthode par rapport à la redirection de fichiers classique sont la vitesse d'écriture élevée et la possibilité de lire des données similaires par d'autres programmes, tels que snort, mais ce fichier ne peut pas être lu par des humains. Il est possible de sortir des données binaires vers la console, pour cela vous devez utiliser -w -

Fait une liste hexadécimale du paquet, utile pour analyser le paquet plus en détail. La quantité de données affichée dépend de l'option -s

-X mais inclut un en-tête de couche de liaison

Sort le paquet au format ASCII et hexadécimal. Il est utile en cas d'analyse d'un incident de piratage, car il permet de visualiser quelles informations textuelles ont été transmises lors de la connexion.

Identique au paramètre précédent -X mais inclut un en-tête de couche de liaison.

tcpdump se fermera après avoir reçu le nombre de paquets spécifié.

Les packages collectés seront immédiatement ajoutés à un fichier, sinon ils s'accumuleront en mémoire jusqu'à épuisement

Filtres Tcpdump

Les filtres sont divisés dans les classifications suivantes

hôte- Adresse de l'hôte

Port- le port sur lequel vous voulez récupérer les paquets

portrange - plage de ports

rapporter- réseau

Tcpdump net 192.168.0.0/24

capture de tout le trafic dont la source ou la destination sont des adresses IP du réseau 192.168.0.0/24

Tcpdump port 80

Tout le trafic sur le port 80 sera capturé.

Sens du trafic par rapport à l'objet de surveillance

src- expéditeur

dst- destinataire

par exemple la commande

Hôte Src 172.31.25.200

Capture du trafic à partir duquel l'adresse IP de l'expéditeur est 172.31.25.200

Protocole

éther- technologie de réseau de base Ethernet, indique généralement que l'adresse MAC matérielle est utilisée dans le filtre

ip- Protocole IPv4

ip6- Protocole IPv6

arp- Protocole ARP

tcp- Protocole TCP

UDP- Protocole UDP

Si aucun protocole n'est spécifié, le trafic pour tous les protocoles sera capturé

Par exemple la commande

Port Udp 5060

capture de trafic via le port de protocole udp 5060

Filtres composites

Afin de filtrer le trafic de manière plus flexible, vous pouvez utiliser des opérations logiques

"Et et (&&)

"OU" - ou (||)

"NON" - pas (!) - inversion de valeur

Par ailleurs, la priorité de ces opérations est la suivante :

l'opération d'inversion a la priorité la plus élevée

puis un "ET" logique

la priorité la plus basse est l'opération OU.

La priorité des opérations peut être modifiée à l'aide de parenthèses.

(net 172.16.0.0/24 ou hôte 172.31.0.5) et port tcp 80

capturer le trafic TCP et utiliser le port 80 appartenant au réseau 172.16.0.0/24 ou à l'hôte 172.31.0.5, soit vers n'importe quel hôte individuellement ou ensemble

(net 172.16.0.0/24 || hôte 172.31.0.5) && pas tcp port 80

capturer tout trafic à l'exception du trafic TCP et utiliser le port 80 appartenant au réseau 172.16.0.0/24 ou à l'hôte 172.31.0.5 individuellement ou ensemble

exemples linux tcpdump

Écriture de la sortie dans un fichier

$ sudo tcpdump -w sshtrace.tcpdump tcp port 22

Le fichier sshtrace.tcpdump sera créé par défaut dans le répertoire home de l'utilisateur courant. Pour afficher les informations du fichier myrouter.tcpdump, utilisez l'option -r :

$ tcpdump -r sshtrace.tcpdump

Supprimer tout le trafic de l'interface eth1

$ tcpdump –i eth1

Supprimer le trafic d'une plage de ports sur l'interface eth1

$ tcpdump -i eth1 plage de port 100-200

tout le trafic allant à 172.16.0.1 qui n'est pas ICMP.

Si vous avez besoin d'analyser ou d'intercepter des paquets réseau sous Linux, il est préférable d'utiliser l'utilitaire de console pour cela. tcpdump... Mais le problème se pose dans sa gestion assez complexe. Un utilisateur ordinaire pensera que travailler avec l'utilitaire n'est pas pratique, mais ce n'est qu'à première vue. L'article vous expliquera comment fonctionne tcpdump, quelle syntaxe il a, comment l'utiliser, et donnera également de nombreux exemples de son utilisation.

Lire aussi : Guides pour configurer la connexion Internet dans Ubuntu, Debian, Ubuntu Server

La plupart des développeurs de systèmes d'exploitation basés sur Linux incluent l'utilitaire tcpdump comme préinstallé, mais si pour une raison quelconque il n'est pas dans votre distribution, vous pouvez toujours le télécharger et l'installer via "Terminal"... Si votre système d'exploitation est basé sur Debian, et qu'il s'agit d'Ubuntu, Linux Mint, Kali Linux et autres, vous devez exécuter cette commande :

sudo apt installer tcpdump

Lors de l'installation, vous devez entrer un mot de passe. Veuillez noter qu'il ne s'affiche pas lors de la saisie ; vous devez également entrer le symbole pour confirmer l'installation "RÉ" et appuyez sur Entrer.

Si vous avez Red Hat, Fedora ou CentOS, la commande d'installation ressemblera à ceci :

sudo yam installer tcpdump

Une fois l'utilitaire installé, vous pouvez l'utiliser immédiatement. Ceci et bien d'autres seront discutés plus loin dans le texte.

Syntaxe

Comme toute autre commande, tcpdump a sa propre syntaxe. Le sachant, vous pouvez définir tous les paramètres nécessaires qui seront pris en compte lors de l'exécution de la commande. La syntaxe est la suivante :

options de tcpdump -i filtres d'interface

Lorsque vous utilisez la commande, vous devez vous assurer de spécifier l'interface de suivi. Les filtres et les options sont des variables facultatives, mais ils permettent une personnalisation plus flexible.

Options

Bien que vous n'ayez pas besoin de spécifier une option, vous devez quand même répertorier celles disponibles. Le tableau ne montre pas toute leur liste, mais seulement les plus populaires, mais ils sont plus que suffisants pour résoudre la plupart des tâches.

Option Définition
-UNE Permet de trier les paquets au format ASCII
-l Ajoute une fonction de défilement
-je Après avoir entré, vous devez spécifier l'interface réseau qui sera surveillée. Pour démarrer le suivi de toutes les interfaces, entrez le mot « any » après l'option
-c Termine le processus de suivi après avoir vérifié le nombre de paquets spécifié
-w Génère un fichier texte avec un rapport de validation
-e Affiche le niveau de connexion Internet du paquet de données
-L Sort uniquement les protocoles pris en charge par l'interface réseau spécifiée
-C Crée un autre fichier lors de l'écriture d'un lot si sa taille est supérieure à celle spécifiée
-r Ouvre un fichier en lecture qui a été créé avec l'option -w
-j Le format TimeStamp sera utilisé pour enregistrer les paquets
-J Vous permet d'afficher tous les formats d'horodatage disponibles
-G Sert à créer un fichier avec les journaux. L'option nécessite également de spécifier une valeur temporaire, après quoi un nouveau journal sera créé.
-v, -vv, -vvv Selon le nombre de caractères dans l'option, la sortie de la commande deviendra plus détaillée (augmentation directement proportionnelle au nombre de caractères)
-F La sortie affiche le nom de domaine des adresses IP
-F Vous permet de lire les informations non pas à partir de l'interface réseau, mais à partir du fichier spécifié
-RÉ Montre toutes les interfaces réseau qui peuvent être utilisées
-n Désactive l'affichage des noms de domaine
-Z Spécifie l'utilisateur sous le compte duquel tous les fichiers seront créés
-K Ignorer l'analyse de la somme de contrôle
-q Démonstration de brèves informations
-H Permet de détecter les en-têtes 802.11s
-JE Utilisé lors de la capture de paquets en mode moniteur

Après avoir analysé les options, un peu ci-dessous, nous irons directement à leurs applications. En attendant, nous allons examiner les filtres.

Filtres

Comme mentionné au tout début de cet article, vous pouvez ajouter des filtres à la syntaxe tcpdump. Les plus populaires d'entre eux seront désormais considérés :

Tous les filtres ci-dessus peuvent être combinés les uns avec les autres, ainsi, en émettant une commande, vous observerez uniquement les informations que vous souhaitez voir. Pour comprendre plus en détail l'utilisation des filtres ci-dessus, il convient de donner des exemples.

Exemples d'utilisation

Les variations de syntaxe tcpdump fréquemment utilisées seront maintenant présentées. Il ne sera pas possible de tous les lister, car il peut y avoir une infinité de leurs variantes.

Affichage de la liste des interfaces

Il est recommandé à chaque utilisateur de vérifier dans un premier temps la liste de toutes ses interfaces réseau pouvant être tracées. D'après le tableau ci-dessus, nous savons utiliser l'option -RÉ donc dans le terminal, exécutez la commande suivante :

Comme vous pouvez le voir, il y a huit interfaces dans l'exemple qui peuvent être visualisées à l'aide de la commande tcpdump. L'article fournira des exemples avec ppp0, vous pouvez utiliser n'importe quel autre.

Capture normale du trafic

Si vous devez suivre une interface réseau, vous pouvez le faire en utilisant l'option -je... N'oubliez pas de préciser le nom de l'interface après l'avoir saisi. Voici un exemple d'exécution d'une telle commande :

sudo tcpdump -i ppp0

Remarque : avant la commande elle-même, vous devez saisir « sudo », car cela nécessite des droits de superutilisateur.

Remarque : après avoir appuyé sur Entrée, le "Terminal" affichera en permanence les paquets capturés. Pour arrêter leur flux, vous devez appuyer sur la combinaison de touches Ctrl + C.

Si vous exécutez la commande sans options ni filtres supplémentaires, vous verrez le format suivant pour afficher les paquets suivis :

22 : 18 : 52.597573 IP vrrp-topf2.p.mail.ru.https> 10.0.6.67.35482 : Drapeaux, seq 1 : 595, ack 1118, win 6494, options, longueur 594

Où la couleur est mise en évidence :

  • bleu - l'heure à laquelle le colis a été reçu ;
  • vert - l'adresse de l'expéditeur ;
  • violet - l'adresse du destinataire;
  • gris - informations supplémentaires sur tcp;
  • rouge - taille du paquet (affichée en octets).

Cette syntaxe a la capacité de sortir dans une fenêtre "Terminal" sans utiliser d'options supplémentaires.

Capture de trafic avec l'option -v

Comme vous le savez d'après le tableau, l'option -v permet d'augmenter la quantité d'informations. Prenons un exemple. Vérifions la même interface :

sudo tcpdump -v -i ppp0

Ici, vous pouvez voir que la ligne suivante apparaît dans la sortie :

IP (tos 0x0, ttl 58, id 30675, décalage 0, drapeaux, proto TCP (6), longueur 52

Où la couleur est mise en évidence :

  • orange - version du protocole ;
  • bleu - durée de vie du protocole ;
  • vert - la longueur de l'en-tête du champ ;
  • violet - version du paquet TCP ;
  • rouge - taille du paquet.

Également dans la syntaxe de la commande, vous pouvez écrire l'option -vv ou -vvv, ce qui augmentera encore la quantité d'informations affichées à l'écran.

Les options -w et -r

Le tableau des options mentionnait la possibilité d'enregistrer toutes les données de sortie dans un fichier séparé afin que vous puissiez les visualiser plus tard. L'option en est responsable. -w... C'est assez simple à utiliser, il suffit de le spécifier dans la commande, puis d'entrer le nom du futur fichier avec l'extension ".Pcap"... Considérons tout avec un exemple :

sudo tcpdump -i ppp0 -w fichier.pcap

Attention : lors de l'écriture des logs dans un fichier, aucun texte ne s'affiche sur l'écran du Terminal.

Lorsque vous souhaitez afficher la sortie enregistrée, vous devez utiliser l'option -r, après quoi écrivez le nom du fichier précédemment enregistré. Il est appliqué sans autres options et filtres :

sudo tcpdump -r fichier.pcap

Ces deux options sont idéales lorsque vous devez enregistrer de grandes quantités de texte pour une analyse ultérieure.

Filtrage IP

Nous savons d'après la table de filtrage que dst vous permet d'afficher sur l'écran de la console uniquement les paquets reçus par l'adresse spécifiée dans la syntaxe de la commande. Cela rend très pratique la visualisation des colis reçus par votre ordinateur. Pour cela, il vous suffit de préciser votre adresse IP dans la commande :

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Comme vous pouvez le voir, en plus de dst, dans la commande, nous avons également ajouté un filtre ip... En d'autres termes, nous avons dit à l'ordinateur de faire attention à son adresse IP lors de la sélection des paquets, et non à d'autres paramètres.

Vous pouvez également filtrer les paquets sortants par IP. Dans l'exemple, nous donnerons à nouveau notre IP. C'est-à-dire que nous allons maintenant suivre quels paquets sont envoyés de notre ordinateur vers d'autres adresses. Pour ce faire, exécutez la commande suivante :

sudo tcpdump -i ppp0 ip src 10.0.6.67

Comme vous pouvez le voir, dans la syntaxe de la commande, nous avons modifié le filtre dst au src, indiquant ainsi à la machine de rechercher l'expéditeur par IP.

Filtrage par HTE

Par analogie avec IP dans la commande, on peut spécifier un filtre hôte pour filtrer les paquets avec l'hôte d'intérêt. C'est-à-dire que dans la syntaxe, au lieu de l'adresse IP de l'expéditeur / du destinataire, vous devrez spécifier son hôte. Cela ressemble à ceci :

sudo tcpdump -i ppp0 hôte dst google-public-dns-a.google.com

L'image montre que dans "Terminal" seuls les paquets envoyés depuis notre adresse IP à l'hôte google.com sont affichés. Comme vous pouvez le comprendre, au lieu de l'hôte google, vous pouvez en saisir un autre.

Comme pour le filtrage IP, dans la syntaxe dst peut être remplacé par src pour voir les paquets qui sont envoyés à votre ordinateur :

sudo tcpdump -i ppp0 hôte src google-public-dns-a.google.com

Attention : le filtre hôte doit venir après dst ou src, sinon la commande générera une erreur. Dans le cas du filtrage IP, en revanche, dst et src précèdent le filtre ip.

Application du filtre et et ou

Si vous devez utiliser plusieurs filtres à la fois dans une commande, alors pour cela, vous devez appliquer le filtre et ou ou(selon les cas). En spécifiant des filtres dans la syntaxe et en les séparant avec ces opérateurs, vous les "faites fonctionner" comme un seul. Par exemple, cela ressemble à ceci :

sudo tcpdump -i ppp0 ip dst 95.47.144.254 ou ip src 95.47.144.254

A partir de la syntaxe de la commande, vous pouvez voir ce que nous voulons afficher à l'écran "Terminal" tous les paquets qui ont été envoyés à l'adresse 95.47.144.254 et les paquets reçus à la même adresse. Vous pouvez également modifier certaines des variables de cette expression. Par exemple, au lieu d'IP, spécifiez HOST ou remplacez directement les adresses elles-mêmes.

Filtre de port et portrange

Filtre Port parfait lorsque vous avez besoin d'obtenir des informations sur les paquets avec un port spécifique. Ainsi, si vous n'avez besoin que de voir les réponses ou les requêtes DNS, vous devez spécifier le port 53 :

sudo tcpdump -vv -i ppp0 port 53

Si vous souhaitez afficher les packages http, vous devez saisir le port 80 :

sudo tcpdump -vv -i ppp0 port 80

Entre autres choses, il est possible de tracer la plage de ports à la fois. Pour cela, un filtre est appliqué portrange:

plage de port sudo tcpdump 50-80

Comme vous pouvez le voir, en conjonction avec un filtre portrange il n'est pas nécessaire de spécifier des options supplémentaires. Vous avez juste besoin de définir la plage.

Filtrage par protocole

Vous pouvez également afficher uniquement le trafic correspondant à un protocole. Pour ce faire, vous devez utiliser le nom de ce protocole lui-même comme filtre. Regardons un exemple UDP:

sudo tcpdump -vvv -i ppp0 udp

Comme vous pouvez le voir sur l'image, après avoir exécuté la commande dans "Terminal" seuls les paquets avec protocole étaient affichés UDP... En conséquence, vous pouvez filtrer par d'autres, par exemple, arp:

sudo tcpdump -vvv -i ppp0 arp

ou tcp:

sudo tcpdump -vvv -i ppp0 tcp

Filet filtrant

Opérateur rapporter aide à filtrer les paquets en fonction de leur désignation de réseau. Il est aussi simple à utiliser que les autres - vous devez spécifier l'attribut dans la syntaxe rapporter puis entrez l'adresse réseau. Voici un exemple d'une telle commande :

sudo tcpdump -i ppp0 net 192.168.1.1

Filtrer par taille de paquet

Nous n'avons pas couvert deux filtres plus intéressants : moins et plus grand... D'après le tableau des filtres, nous savons qu'ils servent à sortir davantage de paquets de données ( moins) ou moins ( plus grand) de la taille spécifiée après la saisie de l'attribut.

Supposons que nous voulions uniquement surveiller les paquets qui ne dépassent pas la barre des 50 bits, la commande ressemblera à ceci :

sudo tcpdump -i ppp0 moins 50

Maintenant mappons à "Terminal" paquets de plus de 50 bits :

sudo tcpdump -i ppp0 supérieur à 50

Comme vous pouvez le voir, ils sont appliqués de la même manière, la seule différence réside dans le nom du filtre.

Conclusion

À la fin de l'article, nous pouvons conclure que la commande tcpdump est un excellent outil avec lequel vous pouvez suivre n'importe quel paquet de données transmis sur Internet. Mais pour cela, il ne suffit pas d'entrer la commande elle-même dans "Terminal"... Vous ne pouvez obtenir le résultat souhaité que si vous utilisez toutes sortes d'options et de filtres, ainsi que leurs combinaisons.

Vous avez aimé l'article ? A partager avec des amis :