Paramètres et exemples de la commande tcpdump. Tcpdump - un guide utile avec des exemples Exemples Tcpdump Linux

Tcpdump est un analyseur de réseau extrêmement pratique qui s'avère très utile à la fois pour les administrateurs réseau et les professionnels de la sécurité. Naturellement, pour obtenir un maximum d'informations lorsque vous travaillez avec tcpdump, il vous suffit de comprendre la pile de protocoles TCP/IP. Pour plus de commodité, vous pouvez utiliser des programmes plus pratiques et intelligents, par exemple, mais des situations surviennent souvent lorsqu'il n'est pas possible d'installer des services supplémentaires sur la machine testée, et alors tcpdump est tout simplement irremplaçable, car l'administrateur, dans un souci d'analyse paquets, ne souhaite pas installer X- sur un serveur Unix.Windows, d'autant plus que dans la plupart des systèmes Unix, l'utilitaire tcpdump est installé par défaut.

La compréhension du protocole TCP/IP offre de larges possibilités d'utilisation de l'analyseur et de dépannage des problèmes de réseau et des problèmes en analysant les paquets. Étant donné que l'utilisation optimale de cet utilitaire nécessite une bonne compréhension des protocoles réseau et de leur fonctionnement, cela crée une situation amusante dans laquelle l'ingénieur a de toute façon besoin de connaître et de comprendre les mécanismes de transfert de données sur le réseau. y compris tcpdump est utile à tous égards : à la fois pour le dépannage et l'auto-éducation.

Vous trouverez ci-dessous plusieurs options qui vous aideront à utiliser cet utilitaire de manière plus complète et détaillée, d'autant plus que toutes ces cases et clés s'oublient assez facilement, et ces exemples sont très utiles pour vous rafraîchir la mémoire.

La première clé utilisée est -n, qui interdit les tentatives de conversion d'adresses en noms de domaine, nous donnant ainsi des adresses IP propres avec des ports.

Le second est -X qui spécifie que chaque paquet doit afficher à la fois le contenu hexadécimal et ASCII du paquet.
Et la dernière option est -S qui remplace la sortie de la numérotation TCP relative par une numérotation absolue. Le fait est qu'avec la numérotation relative, certains problèmes peuvent être cachés à votre attention.

Vous devez comprendre que le principal avantage de tcpdump par rapport aux autres utilitaires est qu'il permet une analyse détaillée et manuelle des paquets. Vous devez également vous rappeler que par défaut, tcpdump utilise uniquement les 68 premiers octets du paquet, incl. si vous avez besoin d'en voir plus, vous devez utiliser le commutateur numérique -s, où nombre est le nombre d'octets à capturer. Si le numéro 0 est spécifié, le paquet sera complètement capturé, il est donc préférable d'utiliser la valeur 1514, qui capturera complètement le paquet standard pour les réseaux Ethernet.

Liste des touches les plus couramment utilisées :
-c : vérifie la taille du fichier de capture avant chaque enregistrement suivant du paquet capturé ; si la taille est plus grande, alors le fichier est enregistré et l'enregistrement est transféré dans un nouveau fichier
-e : imprime l'en-tête Ethernet (couche de liaison) dans chaque ligne de vidage
-i any : écoutez sur toutes les interfaces, au cas où vous auriez besoin de tout le trafic.
-n : désactive la résolution des adresses en noms de domaine ou symboliques
-nn : désactive la résolution des adresses et des ports en noms de domaine ou symboliques
-q : sortie concise des informations en réduisant la sortie des informations de protocole.
-X : Imprimer le contenu hexadécimal et ASCII du paquet
-v, -vv, -vvv : Spécifie la sortie d'informations supplémentaires sur les paquets capturés, ce qui permet une analyse plus large.
Quelques exemples à utiliser :

# Sortie de paquet standard
tcpdump -nS
# Sortie standard étendue
tcpdump -nnvvS
# Analyse approfondie d'un package
tcpdump -nnvvXS
# Les informations trafic les plus détaillées
tcpdump -nnvvXSs 1514

Les expressions vous permettent d'effectuer une analyse plus ciblée et de spécifier les types de trafic. La possibilité d'utiliser des expressions fait de tcpdump un outil très productif entre les mains d'un administrateur système. Il existe trois principaux types d'expressions : type, dir et proto.
Les options pour l'expression de type sont host, net et port.
Pour exprimer la direction spécifiée par dir, les options existantes sont src, dst, src ou dst, et src et dst.
Quelques expressions standards :

hôte // analyse le trafic en fonction de l'adresse IP (fonctionne également avec les noms symboliques si -n n'est pas spécifié)
hôte tcpdump 1.2.3.4

src, dst // analyser le trafic uniquement pour une destination ou un émetteur spécifique
tcpdumpsrc 2.3.4.5
tcpdump dst 3.4.5.6

net // capture le trafic appartenant à un réseau spécifique
tcpdump net 1.2.3.0/24

proto // fonctionne avec TCP, UDP et ICMP. Il faut rappeler que proto n'est pas mentionné
tcpdump icmp

port // analyser le trafic d'un port spécifique (entrant ou sortant)
port tcpdump 3389

src, port dst // filtre basé sur le port entrant ou sortant
tcpdump port src 1025
tcpdump port dst 3389

Mais l'outil le plus puissant est celui des opérandes, qui vous permettent de définir des conditions pour les expressions et des options pour une isolation plus détaillée des informations sur le trafic analysé.

ET
et ou &&
OU
ou ou ||
SAUF
pas ou !

Trafic TCP provenant de la ressource 10.15.123.33 avec le port de destination 3379 :

# tcpdump -nnvvS tcp et src 10.15.123.33 et port dst 3379

Trafic venant du réseau 192.168 avec destination sur les réseaux 10 ou 172.16 :

# tcpdump -nvX src net 192.168.0.0/16 et dst net 10.0.0.0/8 ou 172.16.0.0/16

Trafic non ICMP vers la destination 192.168.0.2 et depuis le réseau 172.16 :

# tcpdump -nvvXSs 1514 dst 192.168.0.2 et src net 172.16.0.0/16 et non icmp

Trafic provenant des hôtes Eros ou Ares, mais ne allant pas vers le port SSH standard (une résolution de nom est requise pour cette expression) :

# tcpdump -vv src eros ou are et non dst port 22

Comme le montrent les exemples donnés, nous pouvons créer n’importe quelle expression pour n’importe quel objectif. De plus, grâce à une syntaxe complexe, nous pouvons exclure tout type de trafic de l’analyse.

Nous devons également nous rappeler que nous pouvons créer des requêtes incluant des groupes et des pools d’options spécifiés dans une seule requête. Mais pour que l'utilitaire tcpdump y prête attention, ils doivent être placés entre parenthèses, en prenant l'expression entre guillemets simples :
Trafic provenant de l'hôte 10.0.2.4 vers les ports de destination 3379 ou 22 :
# tcpdump 'src 10.0.2.4 et (port dst 3379 ou 22)'

Il est également possible de filtrer en fonction des drapeaux TCP, par exemple pour isoler les paquets SYN ou RST :

Analysez tous les packages URG :
# tcpdump 'tcp & 32 != 0'

Analysez tous les paquets ACK :
# tcpdump 'tcp & 16 != 0'

Analysez tous les paquets PSH :
# tcpdump 'tcp & 8 != 0'

Analysez tous les paquets RST :
# tcpdump 'tcp & 4 != 0'

Analysez tous les paquets SYN :
# tcpdump 'tcp & 2 != 0'

Par conséquent, j'ai décidé de créer ma propre aide-mémoire pour qu'elle soit... Parce que sans tcpdump, plus d'un administrateur est un non-administrateur

Introduction

Très souvent, pour détecter des problèmes sur le réseau, ils utilisent analyseurs de trafic réseau . tcpdump est l'un des représentants de cette classe de programmes, il permet d'écouter (afficher/enregistrer) et d'analyser le fonctionnement du réseau au niveau des paquets réseau transmis, des trames et d'autres unités de transmission du trafic réseau. Selon la configuration du réseau, tcpdump peut écouter non seulement les paquets destinés à une adresse MAC donnée, mais également les paquets diffusés. L'interception des paquets réseau par écoute clandestine est basée sur mode « promiscuité » fonctionnement de la carte réseau.

Selon l'équipement réseau utilisé pour connecter les ordinateurs sur un réseau Ethernet, on distingue : capacités d'écoute du trafic:

  • Basé en ligne concentrateurs tout le trafic du hub est disponible pour n'importe quel hôte du réseau.
  • Dans les réseaux basés commutateurs(commutateurs) l'hôte du réseau a accès uniquement à son trafic, ainsi qu'à tout le trafic de diffusion de ce segment.
  • Certains commutateurs managés ont pour fonction de copier le trafic d'un port donné vers le port de surveillance ("mirroring", port monitoring).
  • Lors de l'utilisation d'outils spéciaux (tapers) inclus dans une rupture de connexion réseau et transmettant le trafic de connexion vers un port séparé, il est possible d'écouter le port correspondant.
  • Le « truc » avec un hub est que le port du commutateur dont le trafic doit être écouté est activé via le hub, connectant également un nœud de surveillance au hub (dans ce cas, dans la plupart des cas, les performances de la connexion réseau sont réduit).

Donc, utilitaire tcpdump inclus dans la plupart des distributions Unix et vous permet d'intercepter et d'afficher/enregistrer le trafic réseau dans un fichier. L'utilitaire utilise bibliothèque libpcap. Il existe également un port pour Windows. Il est nécessaire au fonctionnement de l'utilitaire. Par exemple, sur Debian, il s'installe à l'aide de la commande :

Debian : ~# apt-get install tcpdump

Les utilitaires sont nécessaires au fonctionnement (puisque les paramètres de l'interface réseau sont modifiés - elle passe en mode « promiscuité »). En général format de commande tcpdump a la forme suivante :

Debian : ~# tcpdump<опции> <фильтр>

options de l'utilitaire tcpdump

-je interface

Spécifie l'interface à partir de laquelle le trafic doit être analysé (sans préciser l'interface - analyse du « premier qui apparaît »).

Désactive la résolution IP vers nom de domaine. Si -nn est spécifié, la conversion des numéros de port en noms de protocole est interdite.

Les options de filtre les plus couramment utilisées pour la commande tcpdump sont :

hôte d'heure d'été

Vérifie si l'adresse de destination d'un paquet IP correspond à la valeur spécifiée. Il est possible de définir à la fois l'IP, le sous-réseau au format 10.0.0.1/24 et le nom d'hôte.

hôte src

Vérifie si l'adresse source d'un paquet IP correspond à la valeur spécifiée. Il est possible de définir à la fois l'IP, le sous-réseau au format 10.0.0.1/24 et le nom d'hôte.

hôte hôte

Vérifie si l'adresse de l'expéditeur ou du destinataire correspond à la valeur spécifiée. Il est possible de définir à la fois l'IP, le sous-réseau au format 10.0.0.1/24 et le nom d'hôte.

nom_réseau net

Vérifie si l'adresse de l'expéditeur/destinataire se trouve sur le réseau spécifié. Il est possible de spécifier le réseau au format CIDR (par exemple, 10.0.0.1/22), ou de spécifier le nom du réseau spécifié dans .

adresse IP | arp | rapper | tcp | UDP | icmp [hôte]

Vérifie si le paquet appartient à l'un des protocoles spécifiés et, lors de la spécification d'une adresse d'hôte, vérifie si l'adresse de l'expéditeur/du destinataire correspond à celle spécifiée. Il est possible de définir à la fois l'IP, le sous-réseau au format 10.0.0.1/24 et le nom d'hôte.

port dst numéro_port

On vérifie si le paquet appartient au protocole TCP/UDP et si le port de destination est égal à celui spécifié. Vous pouvez spécifier le numéro de port ou le nom spécifié dans le fichier /etc/services.

port src numéro_port

On vérifie si le paquet appartient au protocole TCP/UDP et si le port source est égal à celui spécifié. Vous pouvez spécifier le numéro de port ou le nom spécifié dans le fichier /etc/services.

port numéro_port

On vérifie si le paquet appartient au protocole TCP/UDP et si le port de destination ou source est égal à celui spécifié. Vous pouvez spécifier le numéro de port ou le nom spécifié dans le fichier /etc/services.

diffusion IP

Vérifie si le paquet IP est un paquet de diffusion.

ether ( src | dst | hôte ) adresse_MAC

Vérifie si le paquet réseau appartient à la source, à la destination, à la source ou à la destination ayant l'adresse MAC_address donnée.

diffusion d'éther

Vérifie si le paquet ARP est un paquet de diffusion.

Exemples d'utilisation de la commande tcpdump

Analyse du trafic au niveau du réseau (ARP, ICMP) à l'aide de tcpdump

Supposons que nous ayons 2 hôtes. Hôte 1 avec l'interface eth0 et les paramètres suivants :

Hôte1 : ~# adresse IP show dev eth0 5 : eth0 : mtu 1500 qdisc pfifo_fast state INCONNU qlen 1000 lien/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.56.1/24 brd 192.168.56.255 portée globale eth0 inet6 fe80 : :800:27ff:fe00:0/64 lien de portée valid_lft pour toujours préféré_lft pour toujours

Et aussi host2 avec l'interface eth1

Hôte2 : ~# adresse IP show dev eth1 3 : eth1 : mtu 1500 qdisc pfifo_fast state UP qlen 1000 lien/ether 08:00:27:fd:e5:aa brd ff:ff:ff:ff:ff:ff inet 192.168.56.33/24 portée globale eth1 inet6 fe80 ::a00:27ff :fefd:e5aa/64 lien de portée valid_lft pour toujours préféré_lft pour toujours

Supposons que jusqu'à présent, il n'y a eu aucun échange de données réseau entre les hôtes, et si vous exécutez la commande ip neigh show sur l'hôte 2, vous verrez qu'il n'y a aucune entrée dans la table ARP. Faisons une petite expérience. Exécutons l'utilitaire tcpdump sur l'une des interfaces virtuelles host1 :

Hôte 1 : ~# tcpdump -ne -i eth0 tcpdump : sortie détaillée supprimée, utilisez -v ou -vv pour une écoute de décodage complet du protocole sur eth0, type de lien EN10 Mo (Ethernet), taille de capture 65 535 octets

Hôte1 : ~# ping -c 1 192.168.56.33 PING 192.168.56.33 (192.168.56.33) 56(84) octets de données. 64 octets de 192.168.56.33 : icmp_req=1 ttl=64 temps=1,06 ms --- 192.168.56.33 statistiques ping --- 1 paquet transmis, 1 reçu, 0 % de perte de paquet, temps 0 ms rtt min/avg/max/mdev = 1,067/1,067/1,067/0,000 ms

Après cela, une entrée sur l'adresse IP de host2 est apparue dans la table ARP du système host1 :

Hôte1 : ~# ip neigh show dev eth0 192.168.56.33 lladdr 01:00:27:77:e5:00 HOST2

Sur la console virtuelle, tcpdump nous a affiché les informations suivantes :

Hôte 1 : ~# tcpdump -ne -i eth0 tcpdump : sortie détaillée supprimée, utilisez -v ou -vv pour l'écoute de décodage complet du protocole sur eth0, type de lien EN10 Mo (Ethernet), taille de capture 65 535 octets 12:16:29.465780 0a:00 :27:00:00:00 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), longueur 42 : demande qui a 192.168.56.33, indiquez 192.168.56.1, longueur 28 12:16:29.466786 01 :00:27:77:e5:00 > 0a:00:27:00:00:00, ethertype ARP (0x0806), longueur 42 : la réponse 192.168.56.33 est à 01:00:27:77:e5:00 , longueur 28 12:16:29.466815 0a:00:27:00:00:00 > 01:00:27:77:e5:00, type Ethernet IPv4 (0x0800), longueur 98 : 192.168.56.1 > 192.168.56.33 : ICMP demande d'écho, identifiant 5284, séquence 1, longueur 64 12:16:29.467934 01:00:27:77:e5:00 > 0a:00:27:00:00:00, ethertype IPv4 (0x0800), longueur 98 : 192.168 .56.33 > 192.168.56.1 : réponse d'écho ICMP, identifiant 5284, séquence 1, longueur 64 ^C 4 paquets capturés 4 paquets reçus par le filtre 0 paquet abandonné par le noyau

Chaque enregistrement de paquet réseau dans ce format contient l'heure à laquelle le paquet a été intercepté, les adresses MAC source et de destination, le type de protocole, la longueur du paquet et des informations sur le contenu du paquet. Premier enregistrement décrit une requête de diffusion ARP depuis l'adresse MAC de l'interface eth0 du système host1 (" Qui a l'adresse 192.168.56.33, il est écrit 192.168.56.1"). Deuxième entrée- réponse de l'adresse MAC de l'hôte2 à l'adresse MAC de l'hôte1 (" 192.168.56.33 a une adresse MAC de 01:00:27:77:e5:00"). Troisième et quatrième entrées (Demande ICMP Et Réponse ICMP) sont le résultat de la commande ping exécutée sur host1. Puis tcpdump a été interrompu. Avant de s'arrêter, tcpdump imprime les statistiques de fonctionnement : le nombre de paquets interceptés, reçus par le filtre et rejetés par le noyau.

Ainsi, le système host1, afin d'envoyer une requête d'écho standard à la machine host2, a d'abord reçu les adresses MAC de la machine host2 en utilisant le protocole ARP et les a saisies, liées à l'adresse IP, dans sa table ARP.

Analyse du trafic au niveau de la couche transport (TCP, UDP) à l'aide de tcpdump

Supposons qu'un certain serveur WEB soit installé sur le système host2. Essayons d'ouvrir une page de ce serveur Web sur la machine host1 à l'aide du navigateur de la console lynx :

Hôte 1 : ~#lynx 192.168.56.33

Sur une autre console, exécutez d'abord tcpdump avec les paramètres de filtrage :

Hôte 1 : ~# tcpdump -n -i eth0 hôte 192.168.56.33 et port 80 tcpdump : sortie détaillée supprimée, utilisez -v ou -vv pour une écoute de décodage complet du protocole sur eth0, type de lien EN10MB (Ethernet), taille de capture 65 535 octets 15 :44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80 : Drapeaux [S], seq 1209026235, win 5840, options, longueur 0 15:44:37.838118 IP 192.168.56.33.80 > 192 .168.56.1.41533 : Indicateurs, SEQ 370041518, ACK 1209026236, Win 5792, Options, Longueur 0 15 : 44 : 37.838157 IP 192.168.41533> 192.168.56.33.80 : Indicateurs [.], ACK 1, Win 46, Options, L Anglais 0 15 : 44 :37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80 : Drapeaux, seq 1:222, ack 1, victoire 46, options, longueur 221 15:44:37.839921 IP 192.168.56.33.80 > 192.1 68 .56.1.41533 : Drapeaux [.], ack 222, victoire 1716, options, longueur 0 15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533 : Drapeaux, séquence 1:446, ack 222, victoire 1716, options, longueur 445 15 :44:37.848156 IP 192.168.56.1.41533 > 192.168.56.33.80 : Drapeaux [.], ack 446, victoire 54, options, longueur 0 15:44:37.849738 IP 192.168.56.33.80 > 192.16 8.56. 1. 41533 : Flags, suite 446, ack 222, victoire 1716, options, longueur 0 15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80 : Flags, suite 222, ack 447, victoire 54, options, longueur 0 15 :44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533 : Drapeaux [.], accusé de réception 223, victoire 1716, options, longueur 0...

Dans cet exemple, le client (192.168.56.1) du port TCP 41533 établit une connexion avec le serveur (192.168.56.33) écoutant sur le port 80, fait une requête, reçoit les données nécessaires et la connexion se termine.

En-tête de segment TCP, en plus de numéros de port du destinataire et de l'expéditeur contient un certain nombre de paramètres :

  • Numéro de séquence(suite). Détermine l'ordre des octets dans le flux envoyé au réseau (le décalage du premier octet du segment par rapport au début du flux de données).
  • Numéro confirmé(ACK). Le nombre maximum d'octets dans le segment reçu est augmenté de 1. Les accusés de réception envoyés à l'expéditeur servent simultanément de demande d'une nouvelle partie de données.
  • Indicateurs de contrôle(SYN-S, ACK, FIN-F, RST-R, PSH-P, URG)
  • Fenêtre(win) - le nombre d'octets de données attendus par l'expéditeur des données, à partir de l'octet dont le numéro est indiqué dans le champ ack. Pour optimiser la transmission, l'expéditeur n'attend pas un accusé de réception pour chaque segment envoyé, mais peut envoyer un groupe au réseau vers le segment (mais en octets ne dépassant pas la taille de la fenêtre). Si la qualité du canal est mauvaise (beaucoup de demandes de retransmission, de confirmations perdues), la fenêtre diminue ; si elle est bonne, la fenêtre augmente.
  • Possibilités. Utilisé pour résoudre des problèmes auxiliaires. Par exemple, MSS (Taille maximale du segment) est transmis - la taille maximale du segment.

Le processus d'établissement d'une connexion TCP bidirectionnelle est reflété dans les trois premières entrées de tcpdump :

  • Le client envoie au serveur un segment TCP avec l'indicateur SYN défini, le nombre initial « aléatoire » (1209026235), à partir duquel les octets du flux qu'il envoie seront numérotés, la taille maximale de la fenêtre est la quantité que le serveur est autorisé à transmettre sans confirmation du client (5840) : 15 : 44:37.837393 IP 192.168.56.1.41533 > 192.168.56.33.80 : Flags [S], seq 1209026235, win 5840, options, longueur
  • Le serveur envoie au client un segment TCP avec les indicateurs SYN et ACK définis, un numéro "aléatoire" de départ (370041518) à partir duquel les octets du flux qu'il envoie seront numérotés et la taille maximale de la fenêtre pour le client (5792). Ce segment confirme également la réception d'une demande de connexion du client : 15:44:37.838118 IP 192.168.56.33.80 > 192.168.56.1.41533 : Flags , seq 370041518, ack 1209026236, win 5792, options , length
  • Le client envoie au serveur un segment TCP avec l'indicateur ACK défini, qui est une confirmation de la réception du segment du serveur (ci-après, tcpdump affiche les valeurs relatives de seq et request) : 15:44:37.838157 IP 192.168.56.1 .41533 > 192.168.56.33.80 : Drapeaux [. ], ack 1, victoire 46, options, longueur

Après cela la connexion est considérée comme établie.

Dans la paire d'enregistrements suivante, le client envoie une requête de protocole de couche application (221 octets) au serveur dans la section de données de segment et reçoit une confirmation du serveur de sa réception :

15:44:37.839254 IP 192.168.56.1.41533 > 192.168.56.33.80 : Drapeaux, séquence 1:222, accusé de réception 1, victoire 46, options, longueur 221 15:44:37.839921 IP 192.168.56.33.80 > 19 2.168. 56.1 .41533 : Drapeaux [.], accusé de réception 222, victoire 1716, options, longueur 0

Dans ce cas, l'indicateur PSH (P) est utilisé pour informer le côté émetteur que le côté récepteur est prêt à recevoir des données. Ensuite, le serveur envoie les données au client (445 octets) et en reçoit un accusé de réception :

15:44:37.848118 IP 192.168.56.33.80 > 192.168.56.1.41533 : Drapeaux, séquence 1:446, accusé de réception 222, victoire 1716, options, longueur 445 15:44:37.848156 IP 192.168.56.1.415 33 > 192.168. 56.33 .80 : Drapeaux [.], accusé de réception 446, victoire 54, options, longueur 0

Puis, à l'initiative du serveur, la connexion est interrompue. Le serveur envoie un paquet avec l'indicateur FIN défini :

15:44:37.849738 IP 192.168.56.33.80 > 192.168.56.1.41533 : Drapeaux, séquence 446, accusé de réception 222, victoire 1716, options, longueur 0

Le client répond également en envoyant un paquet avec l'indicateur FIN activé ; ce paquet est également une confirmation de réception d'une demande de fin de connexion du serveur :

15:44:37.850366 IP 192.168.56.1.41533 > 192.168.56.33.80 : Drapeaux, séquence 222, accusé de réception 447, victoire 54, options, longueur 0

Le serveur peut uniquement confirmer la réception du segment FIN du client :

15:44:37.851267 IP 192.168.56.33.80 > 192.168.56.1.41533 : Drapeaux [.], accusé de réception 223, victoire 1716, options, longueur 0

Réaction de tcpdump à une tentative de connexion sur un port 23/tcp fermé :

21:56:14.381091 IP 192.168.56.1.54040 > 192.168.56.33.23 : Drapeaux [S], seq 2956835311, win 5840, options, longueur 0 21:56:14.381688 IP 192.168.56.33.23 > 1 92.168.56.1. 54040 : Frapeaux, séquence 0, accusé de réception 2956835312, victoire 0, longueur 0

Dans cet exemple, une tentative est effectuée à partir du système 192.168.56.1 pour se connecter à un service TCP inexistant sur le nœud 192.168.56.33. Le système distant répond en envoyant un segment avec l'indicateur RST (réinitialisation) activé.

Réponse de tcpdump à l'envoi d'un datagramme UDP vers un port fermé 53/udp :

21:55:16.925906 IP 192.168.56.1.41979 > 192.168.56.33.53 : 6561+ A ? www.tut.by. (28) 21:55:16.926615 IP 192.168.56.33 > 192.168.56.1 : ICMP 192.168.56.33 port udp 53 inaccessible, longueur 64

Cet exemple tente d'envoyer un datagramme UDP vers un port inexistant sur un système distant. UDP répond généralement en envoyant un message ICMP à l'hôte source indiquant que le port est inaccessible.

Autres exemples d'utilisation de la commande tcpdump :

# tcpdump -n -i ppp0 ether src 11:20:b3:d8:d8:2c

Affichez les statistiques réseau à partir de l'interface ppp0 (-i ppp0) sans convertir l'IP en DNS (-n) pour les trames dont l'adresse MAC source est 11:20:b3:d8:d8:2c.

# tcpdump -n -e -i diffusion éther vlan0

Sortie du trafic de diffusion depuis l'interface vlan0.

# tcpdump -n -i eth0 src 192.168.66.1

Les paquets réseau dont l'en-tête contient l'adresse IP 192.168.66.1 dans le champ source sont filtrés.

# tcpdump -n -i eth0 hôte 192.168.66.1

Les paquets dans lesquels cette adresse IP est spécifiée comme source ou destination du paquet sont filtrés.

# tcpdump -n -i eth0 src net 10.0.0.0 masque 255.0.0.0

Les paquets dont la source indique les nœuds du réseau 10.0.0.0/8 sont filtrés.

# tcpdump -n -i eth0 icmp

Émet uniquement les paquets ICMP de l’interface eth0.

Sur ce, je pense terminer l’article actuel. Au fur et à mesure que de nouveaux exemples apparaîtront, je mettrai à jour l'article. J'espère que le matériel sera utile non seulement à moi

L'article utilisait des exemples et du matériel provenant de conférences intuitives.

Cordialement, McSim!

19 décembre 2011 Par Henry Van Styn
dans les HOW-TO

La capture de paquets est l'un des moyens les plus puissants d'analyser les processus réseau. Vous pouvez en apprendre beaucoup sur ce qui se passe sur un réseau en interceptant et en examinant les données brutes circulant sur les connexions réseau. Les utilitaires modernes d'analyse du trafic vous permettent de capturer, d'interpréter et de décrire les flux de données dans un style lisible par l'homme.

tcpdump est un outil essentiel d'écoute ou de reniflage du trafic, il offre de nombreuses capacités d'analyse et peut même exporter les champs de paquets interprétés vers d'autres programmes.

Si vous pensez que des utilitaires comme tcpdump perdent de leur valeur avec l'avènement d'outils graphiques comme Wireshark, détrompez-vous. Wireshark est une excellente application, mais ce n'est pas un outil universel pour absolument toutes les situations. En tant que solution universelle légère pour diverses applications (telles que les outils Unix cat, less et hexdump), tcpdump semble beaucoup plus cool. Et sa caractéristique la plus impressionnante est sa facilité d’utilisation. En tant que style comportemental, il suit une approximation du concept de « commande en une seule ligne » pour obtenir des réponses rapides en une seule étape. De plus, il peut être utilisé au sein d’une session ssh sans avoir besoin de graphiques. En prenant en charge les conventions de syntaxe de ligne de commande (telles que la sortie d'un flux de données vers une sortie standard pouvant être redirigée), tcpdump peut être utilisé dans tous les types de pipelines pour créer des utilitaires intéressants et utiles.

Dans cet article, j'examinerai quelques principes de base de l'utilisation de tcpdump et les bases de sa syntaxe.

Les bases

Avant de devenir maître dans l’utilisation de tcpdump, vous devez comprendre certains concepts fondamentaux. Premièrement, la capture de paquets est un processus passif : elle ne modifie en rien le trafic et ne diffuse rien depuis lui-même vers le réseau. Deuxièmement, vous ne pouvez capturer que les paquets reçus par votre système. Si deux hôtes échangent des paquets directement et que ce trafic contourne votre ordinateur, vous ne verrez rien, quel que soit l'outil de surveillance. Troisièmement, vous ne pouvez capturer que les paquets destinés à votre système, sauf si l'interface réseau est mise en mode promiscuité.

Puisqu'il suppose que vous êtes intéressé par plus que les packages pour votre système, tcpdump mettra automatiquement la première interface du système (sauf si une autre est explicitement spécifiée) en mode promiscuité. Cette opération nécessite les privilèges de superutilisateur.

Anatomie des commandes tcpdump

La commande tcpdump se compose de deux parties : des options et une expression de filtre (Figure 1).

Figure 1. Exemple de commande tcpdump

L'expression de filtre détermine les paquets à capturer et les options - lesquelles afficher dans la sortie ; les options déterminent également le comportement de l'utilitaire.

Possibilités

Les options de Tcpdump suivent les conventions de ligne de commande standard, le format de l'option est donc une valeur d'indicateur. Certains indicateurs n'ont aucune valeur de paramètre car ce sont eux-mêmes des commutateurs. Par exemple, -i est suivi du nom de l'interface et -n désactive la résolution de nom via DNS.

La page de manuel décrit de nombreuses options, mais il y en a quelques-unes dont vous ne pouvez pas vous passer :

I interface : l'interface sur laquelle tcpdump écoutera le trafic ;

V, -vv, -vvv : verbosité de sortie ;

Q : mode silencieux ;

E : imprimer les en-têtes de trame de la couche de liaison (Ethernet) ;

N : résoudre les noms de domaine des hôtes ;

T : ne pas imprimer les horodatages ;

N : ne résout pas les noms de domaine des hôtes ;

S0 (ou -s 0) : capture maximale, des paquets entiers sont capturés ; dans les versions récentes de tcpdump, c'est le comportement par défaut.

Aucune des options n'est requise. Les valeurs définies par l'utilisateur modifient uniquement le comportement par défaut du programme, qui consiste à capturer sur la première interface et à imprimer les informations du paquet sur une seule ligne.

Filtrer les expressions
Les expressions de filtre sont des critères booléens (oui/non) permettant d'évaluer si un paquet correspond à un modèle. Tous les paquets qui ne remplissent pas les conditions spécifiées sont ignorés.

La syntaxe du filtre de paquets est puissante et transparente. Au début, il contient des mots-clés appelés « primitives », qui sont différents qualificatifs pour les paquets, ceux-ci peuvent être un protocole, une adresse, un port ou une direction. Ils peuvent être connectés les uns aux autres en chaînes à l'aide d'opérateurs et/ou, regroupés et combinés par des règles d'héritage, triés par négation.

Grâce aux noms de critères explicites, les expressions de filtre semblent généralement explicites, ce qui les rend assez faciles à construire et à comprendre. La syntaxe complète est décrite dans la page de manuel pcap-filter, et quelques exemples sont fournis ici :

ARP est un protocole simple, il est utilisé pour résoudre les adresses IP en adresses MAC des cartes réseau. Comme vous pouvez le voir ci-dessus, tcpdump décrit ces paquets de manière plutôt primitive. Les packages DNS, en revanche, seront décrits légèrement différemment :

IP 10.0.0.2.50435 > 10.0.0.1.53 : 19+ A ? linuxjournal.com. (34) IP 10.0.0.1.53 > 10.0.0.2.50435 : 19 1/0/0 A 76.74.252.198 (50)

Cela peut ne pas sembler assez clair au début, mais à mesure que vous apprendrez comment fonctionnent les différentes couches de protocoles, cela deviendra plus logique. DNS est un protocole beaucoup plus complexe qu’ARP, mais il fonctionne également à un niveau supérieur. Cela signifie que les paquets de protocole sous-jacents apparaissent également dans la sortie. Contrairement à ARP, qui n'est pas acheminé entre différents segments de réseau physique, DNS est un protocole à l'échelle d'Internet. La couche IP est utilisée pour acheminer ces paquets ; UDP est utilisé pour le transport. Cela fait du DNS un protocole de couche 5 (IP est la couche 3, UDP est la couche 4).

Les informations de couche UDP/IP contenant l'adresse source et le port sont affichées sur le côté gauche de la ligne, et les informations DNS spécifiques sont affichées sur la droite. Bien que la syntaxe soit assez condensée, elle suffit à définir les éléments de base du DNS. Le premier paquet est une demande d'adresse pour linuxjournal.com, le deuxième paquet est une réponse donnant l'adresse 76.74.252.198. Il s'agit d'une séquence typique pour les requêtes DNS simples.

Consultez la section « FORMAT DE SORTIE » de la page de manuel tcpdump pour une description complète de tous les formats de sortie dépendant du protocole. Certains paquets de protocole sont mieux visibles que d’autres dans la sortie, mais les informations importantes sont généralement faciles à trouver.

Capturer la sortie dans un fichier
En plus du mode habituel avec sortie sur la console (sortie standard), tcpdump prend également en charge un mode d'écriture de sortie dans un fichier. Le mode est activé par l'option -w, qui spécifie le chemin d'accès au fichier.

Lors de l'écriture dans un fichier, tcpdump utilise un format différent de celui lors de la sortie à l'écran. Il s'agit de ce que l'on appelle la sortie brute ; elle n'effectue pas d'analyse primaire du paquet. Ces fichiers peuvent ensuite être utilisés dans des programmes tiers tels que Wireshark, car le format des entrées du fichier suit le format universel "pcap" (un tel fichier peut être fourni à l'entrée tcpdump à l'aide de l'option -r). Cette fonctionnalité nous permet de capturer des paquets sur une machine et de les analyser sur une autre. Par exemple, vous avez Wireshark sur votre ordinateur portable. Vous n'avez pas besoin de le connecter au réseau en cours d'analyse pour analyser un fichier précédemment capturé.

Analyse des protocoles basés sur TCP
tcpdump est un analyseur de paquets, il fonctionne donc bien avec les protocoles basés sur les paquets tels que IP, UDP, DHCP, DNS et ICMP. S'il existe un "stream", ou une séquence de paquets pour établir une connexion, tcpdump ne pourra pas analyser directement ces flux et scénarios de connexion. Les protocoles tels que HTTP, SMTP et IMAP ressemblent beaucoup plus à des applications interactives du point de vue du réseau qu'à des protocoles « par paquets ».

TCP gère tous les détails de bas niveau requis pour les sessions de communication au sein des protocoles de session de manière transparente pour l'utilisateur. C'est là que les données orientées flux sont encapsulées dans des paquets (segments) qui peuvent ensuite être envoyés sur le réseau. Tous ces détails sont cachés sous la couche d’application. Par conséquent, des étapes supplémentaires sont nécessaires pour capturer les paquets de protocole orientés connexion. Étant donné que chaque segment TCP est un élément de données au niveau de l'application, les informations le concernant ne peuvent pas être utilisées directement. Pour que cela ait du sens, vous devez reconstruire complètement la session (flux) TCP à partir d’une séquence de paquets individuels. tcpdump n'a pas cette fonctionnalité. Pour analyser les protocoles de session, vous pouvez utiliser ce que j'appelle le « truc des chaînes ».

Astuce de corde
Habituellement, lors de la capture du trafic, j'entends le but d'analyser les causes de certaines erreurs. Il n’est pas nécessaire que les données soient parfaites pour être visualisées afin de comprendre les raisons de tout incident. Dans de tels cas, la rapidité de compréhension est plus importante que toute autre chose. L'astuce suivante est l'une de mes techniques tcpdump préférées. Cela fonctionne parce que :

Les segments TCP sont généralement classés par ordre chronologique ;
- les protocoles d'application basés sur du texte génèrent des paquets avec une charge de texte ;
- les données entourant le chargement du texte (par exemple, les en-têtes des packages) ne sont pas du texte ;
- Les utilitaires UNIX peuvent enregistrer le texte de la sortie binaire de l'application ;
- si vous exécutez tcpdump avec l'option -w -, cela générera des informations brutes sur la sortie standard.

En mettant le tout ensemble, nous obtenons un outil pour capturer les données de session HTTP.

De plus, vous devez être conscient que la sortie peut contenir des déchets. L'excédent peut être coupé à l'aide de l'option utilitaire strings, qui limite la longueur de la chaîne de sortie (voir man strings).

Cette astuce fonctionne très bien pour tous les protocoles basés sur du texte.

Analyse HTTP et SMTP
L'astuce de chaîne de la section précédente peut aider à capturer les données de session HTTP, malgré l'absence d'analyseur de flux intégré. Les données résultantes peuvent être « analysées » et ensuite de différentes manières.

Par exemple, vous souhaiterez peut-être vérifier la disponibilité de tous les sites dont le nom contient « davepc » en temps réel. La commande suivante, exécutée sur le pare-feu, vous aidera (en supposant que l'interface interne soit eth1) :

Ce ne sont que deux exemples simples pour illustrer les possibilités. Vous pouvez aller jusqu'à, par exemple, écrire un script Perl pour analyser plus en profondeur les chaînes reçues.

Le véritable pouvoir de tcpdump apparaît donc lorsque vous souhaitez obtenir rapidement des réponses à certaines questions sans trop d'effort. Ceci est particulièrement important lors du débogage d’applications réseau.

Débogage du routage et des connexions VPN
tcpdump peut être d'une grande aide lors du débogage d'éléments tels que les connexions VPN. Tout ce dont vous avez besoin est de comprendre sur quels hôtes quels paquets apparaissent et sur lesquels ils n'apparaissent pas.

Prenons un schéma standard pour connecter deux réseaux via une connexion VPN. Réseaux 10.0.50.0/24 et 192.168.5.0/24 (Figure 2).

Figure 2. Exemple de topologie VPN

Si cela fonctionne correctement, les hôtes des différents réseaux doivent se envoyer une requête ping. Si les pings ne répondent pas (dans ce cas, supposons qu'ils ne proviennent pas de D vers l'hôte A), nous pouvons utiliser tcpdump pour savoir où les éléments sont perdus.

Si les paquets de requête vont à l'hôte C (la passerelle distante) mais pas à D, cela indique que la connexion VPN elle-même fonctionne, mais qu'il y a des problèmes de routage. Si l'hôte D reçoit des requêtes mais n'envoie pas de réponses, cela peut indiquer qu'ICMP est bloqué. Si les réponses sont envoyées mais n'atteignent pas C, la passerelle par défaut peut être mal configurée sur D.

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, ce qui lui permet d'enregistrer les données du lot dans un fichier pour une analyse ultérieure, et/ou avec l'indicateur -r, ce qui lui permet de lire le fichier de lots enregistré. En utilisant cet utilitaire, vous pouvez intercepter et également analyser le trafic réseau qui passe par le PC sur lequel ce programme est exécuté.

J'aimerais parler dans cette rubrique « Installation et utilisation de tcpdump » de l'installation de tcpdump, ainsi que de la façon de l'utiliser et de ce à quoi il est nécessaire.

Avec tcpdump vous pouvez :

  • Vous pouvez déboguer des applications réseau.
  • Vous pouvez déboguer le réseau ou l'équipement réseau dans son ensemble.

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 miam installez 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 port eth0 80

Il existe de nombreux commutateurs pour utiliser l'utilitaire tcpdump lui-même, voici une liste des plus courants :

Si vous avez besoin de savoir quels paquets sont échangés entre 21 serveurs (par exemple, votre_serveur_1 et votre_serveur_2), utilisez la commande pour cela :

# tcpdump héberge votre_serveur_1 et votre_serveur_2

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

# tcpdump src héberge votre_serveur

Si vous avez uniquement besoin de surveiller les paquets entrants en provenance 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 (principalement 80, 8080 est utilisé).

Voir la liste des interfaces sur lesquelles vous pouvez écouter tcpdumt :

# tcpdump -D

Écoutez l'interface eth0 :

# tcpdump -i eth0

Écoutez sur n'importe quelle interface disponible (nécessite la version 2.2 ou supérieure du noyau Linux) :

# tcpdump -i n'importe lequel

Afficher tout à l'écran (tout ce qui est exécuté par le programme) :

# tcpdump -v

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

# tcpdump -vv

Affiche beaucoup de choses à l'écran (tout ce qui est exécuté par le programme) :

# tcpdump -vvv

N'affiche pas beaucoup d'informations lorsque les paquets sont capturés (pas comme le paquet standard) :

# tcpdump -q

Limiter 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 à l'écran en temps réel :

# tcpdump -v -w capture.cap

Sortie des paquets du fichier capture.cap :

# tcpdump -r capture.cap

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

# tcpdump -vvv -r capture.cap

L'IP et les ports de sortie au lieu des domaines sont la capture de paquets :

# tcpdump -n

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

# tcpdump -n hôte dst 192.138.1.1

# tcpdump -n hôte src 192.138.1.1

Capturez tous les paquets de l’hôte 192.138.1.1. Afficher l'IP et les ports à l'écran :

# tcpdump -n hôte 192.138.1.1

Capturez les paquets où le réseau est 192.138.1.0/24. Afficher l'IP et les ports à 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. Afficher l'IP et les ports à l'écran :

# tcpdump -n net 192.138.1.0/24

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

# tcpdump -n port d'heure d'été 23

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

# tcpdump -n portrange dst 1-1023

Capturez uniquement les paquets TCP avec destination sur les ports 1 à 1023. Affichez l'IP et les ports à l'écran :

# tcpdump -n tcp dst portrange 1-1023

Capturez uniquement les paquets UDP avec destination sur les ports 1 à 1023. Affichez l'IP et les ports à l'écran :

# tcpdump -n udp dst portrange 1-1023

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

# tcpdump -n "hôte dst 192.138.1.1 et port dst 23"

Capturez les paquets depuis la destination où l'IP est 192.138.1.1 et la destination via les ports 80 ou 443. Affichage :

# tcpdump -n "hôte dst 192.138.1.1 et (port dst 80 ou port dst 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 multidiffusés :

# tcpdump -n "diffusion ou multidiffusion"

Capturez des paquets volumineux (500 octets) plutôt que le standard 68b :

# tcpdump -s 500

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

# tcpdump -s 0

Visualisation des « colis lourds » :

# tcpdump -nnvvXSs 1514

Capturez les paquets ICMP avec ping et pong :

# tcpdump -nnvXSs 0 -c2 icmp

Conclusion sans beaucoup d'options :

# tcpdump -nS

Communications basiques (mode très détaillé), vous pouvez voir une bonne quantité de trafic, avec verbosité :

# tcpdump -nnvvS

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

# tcpdump -nnvvXS

Affichez un paquet lourd et augmentez la longueur d'accrochage, capturant ainsi l'intégralité du paquet :

# tcpdump -nnvvXSs 1514

Vous pouvez également filtrer en fonction de parties spécifiques du package, ainsi que regrouper plusieurs conditions. Ceci est utile lors de la recherche uniquement de SYN ou de PCT, par exemple, et ces derniers pour une isolation du trafic encore plus avancée.

Montrez-moi tous les forfaits URGENT (URG) :

# tcpdump "tcp & 32!=0"

Montrez-moi tous les paquets ACKNOWLEDGE (ACK) :

# tcpdump "tcp & 16!=0"

Montre-moi tous les paquets PUSH (PSH) :

# tcpdump "tcp & 8!=0"

Montrez-moi tous les paquets RESET (RST) :

# tcpdump "tcp & 4!=0"

Montrez-moi tous les packages SYNCHRONIZE (SYN) :

# tcpdump "tcp & 2!=0"

Montrez-moi tous les packages FINISH (FIN) :

# tcpdump "tcp & 1!=0"

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

# tcpdump "tcp=18"

Capturez les indicateurs TCP à l'aide de tcpflags :

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

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

# tcpdump "tcp = 6"

Trafic provenant de « Evil Bit » (vérifier) :

# tcpdump "ip&128 != 0"

C’est ici que je terminerai mon article « installer et utiliser tcpdump », j’espère que tout est clair et compréhensible.

tcpdump instructions en russe et exemples.

-UN spécifie la sortie de chaque paquet (sans en-têtes de couche liaison) au format ASCII. Ce mode est utile pour collecter le trafic HTTP.

-c <число пакетов>spécifie que le programme se termine après avoir capturé un nombre spécifié de paquets.

-C<размер файла>spécifie s'il faut vérifier la taille du fichier de capture avant que chaque nouveau paquet y soit écrit. Si la taille du fichier dépasse le paramètre file_size, le fichier est fermé
et un nouveau fichier est créé pour écrire les packages. Pour les fichiers de capture, le nom spécifié par le paramètre -w est utilisé et, à partir du deuxième fichier, le nom est ajouté comme
numéro de dossier suffixe. La variable file_size spécifie la taille du fichier en millions d'octets (et non en mégaoctets = 1 048 576 octets).

-d spécifie la sortie d'un dump du code de correspondance de package compilé dans un format lisible par l'homme et la fin du programme.

-jj Vide le code correspondant sous forme de fragment de programme C.

-ddd affiche le code de correspondance sous la forme d'une chaîne de valeurs décimales, précédée d'une chaîne avec la valeur du compteur.

-D affiche une liste des interfaces réseau sur le système à partir desquelles tcpdump peut collecter des paquets. Chaque interface réseau possède un nom et un numéro, qui peuvent être suivis de
description textuelle de l'interface. Le nom et le numéro de l'interface peuvent être utilisés avec l'indicateur -i pour spécifier la collecte de paquets à partir d'une seule interface.

Cette option peut être très utile pour les systèmes qui ne fournissent pas d'informations sur les interfaces réseau disponibles3.

L'indicateur -D n'est pas pris en charge si tcpdump a été compilé avec une ancienne version de libpcap qui ne prend pas en charge la fonction pcap_findalldevs().

-e imprime l'en-tête de la couche de liaison sur chaque ligne du dump.

-E spécifie l'utilisation de l'algorithme et du secret spi@ipaddr pour déchiffrer les paquets ESP IPsec envoyés à l'adresse ipaddr et contenant la valeur et dans le champ Index des paramètres de sécurité
spi. La combinaison de spi et d'adresse peut être répétée en utilisant une virgule ou une nouvelle ligne comme délimiteur. Notez que la définition du secret pour les paquets ESP IPv4 dans
actuellement pris en charge.

Les algorithmes pouvant être utilisés sont des-cbc, 3des-cbc, Blowfish-cbc, rc3-cbc, cast128-cbc ou aucun. L'algorithme par défaut est des-cbc. Possibilité de décryptage
Les packages ne sont fournis que dans les cas où les options de prise en charge de la cryptographie ont été activées lors de la compilation de tcpdump.

Le paramètre secret contient le texte ASCII de la clé secrète ESP. Si le secret commence par 0x caractères, la valeur hexadécimale sera lue. L'option suppose l'utilisation
ESP selon RFC 2406, et non RFC 1827. Cette option est prise en charge uniquement à des fins de débogage et ne doit pas être utilisée avec de vraies clés privées, car celle saisie dans
ligne de commande, la clé IPsec est disponible pour les autres utilisateurs du système4.

En plus de spécifier explicitement les options sur la ligne de commande, elles peuvent être spécifiées dans un fichier d'options que tcpdump lira lorsqu'il recevra le premier paquet ESP.

-F définit la sortie des adresses IPv4 étrangères au format numérique. L'utilisation de cette option vous permet de vous débarrasser des problèmes qui surviennent sur les serveurs Sun NIS lors de la tentative de diffusion.
adresses non locales. L'étrangeté d'une adresse IPv4 est vérifiée à l'aide de l'adresse et du masque de l'interface qui a reçu le paquet. Si l'adresse et le masque de l'interface ne sont pas disponibles
(par exemple, lors de l'utilisation d'interfaces non numérotées ou lors de la capture de paquets de toutes les adresses sous Linux à l'aide d'une interface factice), cette option fonctionnera
Incorrect.

-F<файл> spécifie l'utilisation des filtres contenus dans le fichier spécifié. Dans ce cas, les filtres spécifiés sur la ligne de commande sont ignorés.

-je<интерфейс> spécifie la collection de paquets de l'interface spécifiée. Si l'interface n'est pas spécifiée, tcpdump recherche dans le système une liste d'interfaces disponibles et en sélectionne le périphérique actif avec le minimum
numéro (hors bouclage).

Sur les systèmes Linux, à partir du noyau 2.2, une interface factice appelée any est prise en charge, qui assure la collecte des paquets de toutes les interfaces actives du système. Veuillez noter que les frais
les paquets provenant de l'appareil any sont effectués en mode normal (et non promiscuité).

Si votre système prend en charge l'indicateur -D, vous pouvez spécifier comme argument le numéro d'interface imprimé lorsque cet indicateur est utilisé.

-l définit la mise en mémoire tampon de la ligne stdout. Cette option est utile dans les cas où vous souhaitez afficher les données lors de la collecte de paquets. Par exemple, les commandes

tcpdump -l | tee-shirt

tcpdump -l > date et queue -f date

fournir l'enregistrement des paquets dans un fichier DAT et une sortie simultanée vers la console.

-L spécifie la sortie d'une liste de types de couches de liaison connus et la fin du programme.

-m<файл> charge le module de définitions SMI MIB à partir du fichier spécifié. Cette option peut être utilisée à plusieurs reprises pour charger plusieurs modules MIB.

-n désactive la conversion des adresses et des numéros de port en noms symboliques.

-N spécifie l'utilisation de noms d'hôte uniquement, et non de noms de domaine complets. Par exemple, au lieu de lhotze.bilim-systems.net, lorsque j'utilise cette option, mon poste de travail sera
noté lhotze.

-O désactive l'optimiseur de code pour vérifier si les paquets correspondent aux conditions de filtrage. Utilisez cette option si vous estimez que l'optimiseur ne fonctionne pas correctement.

-p indique au programme que l'interface n'a pas besoin d'être mise en mode capture5. L'option -p ne peut pas être utilisée conjointement avec l'hôte Ethernet (local-hw-addr) ou le filtre de diffusion Ethernet.

-q spécifie la sortie de la quantité minimale d'informations.

-R la définition de cet indicateur suppose que les paquets ESP/AH utilisent l'ancienne version de la spécification6 et que tcpdump n'affichera pas les champs de prévention de réexécution.
relecture). Étant donné que la spécification ESP/AH n'inclut pas les champs de numéro de version, tcpdump ne peut pas déterminer la version du protocole ESP/AH à partir des en-têtes de paquets.

-r<файл> spécifie la lecture des données d'un fichier précédemment créé à l'aide de la commande tcpdump -w ou à l'aide d'un autre programme prenant en charge le format tcpdump (par exemple, Ethereal). Si dans
Le nom du fichier est défini sur - et le flux de données du périphérique d'entrée standard (stdin) est utilisé.

-S définit la sortie des numéros de séquence TCP absolus au lieu des numéros relatifs.

-s définit la capture des octets de chaque paquet snaplen au lieu des 68 octets par défaut7. Une valeur de 68 convient aux protocoles IP, ICMP, TCP et UDP mais peut entraîner une perte de
informations de protocole pour certains packages DNS et NFS. La perte de certains paquets due à la petite taille de la trame de l'instantané est indiquée dans les données de sortie par des champs du formulaire
[|proto]', où proto est le nom du niveau de protocole auquel une partie du paquet a été coupée8. Notez que l'augmentation de l'image de capture entraînera des pertes temporaires supplémentaires.
les coûts de traitement des paquets et une réduction du nombre de paquets mis en mémoire tampon, ce qui peut entraîner la perte de certains paquets. Utilisez la valeur snaplen minimale qui permettra
évitez de perdre des informations sur le protocole qui vous intéresse. Le réglage snaplen=0 capturera les paquets complets.

-T<тип> définit l'interprétation des paquets sélectionnés à l'aide du filtre en tant que paquets du type spécifié par le paramètre. Les types actuellement pris en charge sont aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, tva16 et wb17.

-t désactive la sortie des horodatages dans chaque ligne de vidage.

-tt spécifie la sortie d'horodatages non formatés sur chaque ligne du dump.

-ttt spécifie la sortie des intervalles de temps (en microsecondes) entre la capture du paquet précédent et celui-ci dans chaque ligne du dump.

-tttt spécifie la sortie des horodatages au format par défaut pour chaque ligne de vidage.

-u définit la sortie des handles NFS sans décodage.

-U définit le mode « mise en mémoire tampon au niveau des lots » pour les fichiers enregistrés à l'aide de l'option -w. Dans ce mode, chaque paquet est écrit dans le fichier de sortie dès qu'il est capturé
(sans attendre que le tampon de sortie se remplisse). L'indicateur -U ne sera pas pris en charge si tcpdump a été compilé avec une ancienne option libpcap qui ne prend pas en charge la fonction
pcap_dump_flush().

-v spécifie la sortie d'informations supplémentaires lors de la capture de fichiers. Ces informations peuvent inclure la valeur TTL (Time to Live), l'identification, la taille globale, les options IP, etc.
Lors de l'utilisation de cet indicateur, des contrôles supplémentaires de l'intégrité des paquets sont également effectués à l'aide de sommes de contrôle (par exemple, pour les protocoles IP et ICMP).

-vv spécifie une augmentation supplémentaire du volume d'informations de sortie (par exemple, décodage complet des paquets SMB, sortie de champs de réponse NFS supplémentaires, etc.).

-vvv définit la quantité maximale d'informations affichées (par exemple, les options telnet SB ... SE sont affichées complètement). Lorsqu'elles sont utilisées conjointement avec le commutateur -X, les options Telnet sont également affichées dans
représentation hexadécimale.

-w<файл> spécifie l'enregistrement des paquets bruts. Les paquets collectés dans un fichier peuvent ensuite être visualisés à l'aide de l'indicateur -r ou transférés vers d'autres programmes pour analyse.
(par exemple Éthéré). Si le nom du fichier est -, le fichier est écrit sur le périphérique de sortie standard (stdout).

-X spécifie la sortie d'un dump hexadécimal (sans l'en-tête de couche liaison) pour chaque paquet capturé. La quantité d'informations affichées est déterminée par la plus petite de deux valeurs -
taille du paquet et valeur du paramètre snaplen. Notez que lors de la capture de trames complètes de couche liaison, le vidage peut également inclure des octets de remplissage si le paquet de couche réseau
a une petite taille.

-xx définit la sortie d'un dump hexadécimal pour chaque paquet, y compris les en-têtes de couche liaison.

-X spécifie la sortie de vidage au format hexadécimal et ASCII sans en-têtes de couche liaison. Cette option peut s’avérer très pratique lors de l’analyse de nouveaux protocoles.

-XX spécifie la sortie de vidage au format hexadécimal et ASCII, y compris les en-têtes de couche liaison.

-y<тип> spécifie le type de couche de liaison utilisé lors de la capture des paquets. Les valeurs prises en charge peuvent être visualisées à l'aide de l'indicateur -L.

Exemples.

  • Nous captons tout le trafic sortant

tcpdump -i re0 -n -nn -ttt hôte dst 192.168.1.2

  • Nous captons tout le trafic sortant, à l'exception de notre session ssh, car il existe un flux de données très important.

tcpdump -i re0 -n -nn -ttt 'hôte dst 192.168.1.110 et non (hôte src 192.168.1.2 et port dst 22)'

  • Afficher les communications DNS

tcpdump -i re0 -n -nn -ttt 'hôte 192.168.1.110 et port 53'

  • Afficher les paquets ICMP

tcpdump -i re0 -n -nn -ttt 'proto ip \icmp'

  • Trafic circulant du réseau 10.7.20 vers la destination sur le réseau 10.7.0. ou 10.7.24.:

tcpdump -nvX src net 10.7.20.0.0/16 et dst net 10.7.0.0/8 ou 10.7.24.0/16

  • Trafic provenant du réseau 10.7.0.0 vers les ports de destination 22 ou 4589 :

tcpdump 'src 10.7.0.0 et (port dst 22 ou 4589)'

  • Visualisez le trafic sur l'interface :
  • voir le trafic d'un hôte :

hôte tcpdump 192.168.1.1

  • Visualiser le trafic sur un port :

tcpdump port src 80

  • Afficher le trafic IP vers l'hôte :

hôte IP tcpdump 192.168.1.2

  • Afficher le trafic ARP vers l'hôte :

tcpdump arp hôte 192.168.1.2

  • Nous examinons le trafic RARP vers l'hôte :

tcpdump hôte rarp 192.168.1.2

  • On regarde le trafic, à l'exception de l'hôte pav253

tcpdump n'héberge pas pav253

  • Nous regardons le trafic sur pav253 et pav210

tcpdump hôte pav253 ou hôte pav210

  • Nous regardons le contenu des paquets sur l'interface re0 vers le site hôte

tcpdump -X -i re0 site hôte

  • trafic icq

tcpdump -X -i re0 port aol

  • Nous examinons le contenu des paquets sur l'interface tun0 vers l'hôte ya.ru, tout en lisant 1 500 octets de chaque paquet et en ne convertissant pas l'IP en nom d'hôte

tcpdump -X -s 1500 -n -i re0 site hôte

  • Principales interactions actives

tcpdump -tn -c 10000 -i re0 tcp ou udp | awk -F "." '(imprimer $1″.”$2″.”$3″.”$4)' | \tri | uniq-c | trier -nr | maladroit '$1 > 100'

  • Nous examinons tous les paquets TCP avec l'indicateur SYN (début de session).

tcpdump -i eth0 -nn tcp == 2 et src net 192.168.1.0/24

  • Afficher les paquets syn et fin de l'extérieur

tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 et non src et dst net 192.168.1.0'

  • Afficher tous les paquets http ipv4 du port 80, à l'exception des données syn/fin/ack

tcpdump 'port TCP 80 et (((ip — ((ip&0xf)<>2)) != 0)’

  • Afficher uniquement les packages de synchronisation