Qu’est-ce que tcpdump ?
Si vous disposez d'un système d'exploitation Unix ou de type Unix (Linux, Mac OS), vous pouvez utiliser l'outil tcpdump pour examiner le trafic réseau.
Le programme tcpdump est un utilitaire de ligne de commande qui peut être installé gratuitement.
Il n'est généralement pas intégré aux systèmes d'exploitation, vous devez donc l'installer à partir du tcpdump registre GitHub ou de le site officiel de tcpdump .
Éléments de tcpdump
L'utilitaire de capture de paquets utilisé par tcpdump est fourni par libpcab, qui est une bibliothèque de procédures C/C++. Le programme principal tcpdump est l'interface pour le processus de capture de paquets . Une fois exécuté, il démarrera le processus libcap pour capturer les paquets réseau, puis affichera leur contenu à l'écran. À moins qu'une limite au nombre de paquets à capturer ne soit spécifiée au démarrage du programme, celui-ci continuera à s'exécuter indéfiniment. Le traitement est ensuite terminé par un signal d'interruption (Control-C).
Le programme est exécuté sur la ligne de commande et comprend plusieurs options, indiquées par des indicateurs. Ces indicateurs modifient le comportement du programme pour l'amener à sélectionner les paquets qui correspondent à un modèle spécifié, limiter sa durée d'exécution ou lui faire lire les paquets stockés à partir d'un fichier plutôt que depuis l'interface réseau.
Format TCPdump
La commande tcpdump peut être émise seule ou avec des options, des paramètres et/ou des expressions régulières. Aucun de ces éléments n’est obligatoire et l’ordre n’a pas d’importance.
tcpdump<-option_identifier>
Options de TCPdump
La commande tcpdump est suivie d'options, également appeléesdrapeaux. Chacun d’eux est désigné par un trait d’union suivi d’une lettre. Vous trouverez ci-dessous une liste de chacun de ces drapeaux.
-UN imprimer les paquets en ASCII sans les en-têtes au niveau du lien
-b afficher le numéro AS est au format ASDOT
-B taille_tamponen unités de KiB (1024 octets
-c compter– la limite de paquets à capturer
-C taille du fichier– le processus créera un nouveau fichier une fois cette limite de taille de fichier atteinte ; La taille est de x 1 million d'octets
-d Videz le code de correspondance de paquets compilé en ASCII
-jj Vider le code de correspondance de paquets en tant que C fragment de programme
-ddd Vider le code de correspondance de paquets sous forme de nombres décimaux précédés d'un décompte
-D Lister toutes les interfaces accessibles
-et Imprimer l'en-tête au niveau du lien sur chaque ligne de vidage
-ET spi@ipaddr quelque chose: secret– pour décrypter les paquets ESP IPsec :
espiest l'index des paramètres de sécurité
adresse IPadresseest l'adresse de destination sur le paquet
quelque choseest l'algorithme, par défaut des-cbc et le champ est facultatif.
Les valeurs possibles sont :
- des-cbc
- 3des-cbc
- Blowfish-CBC
- rc3-cbc
- cast128-cbc
secrète est le texte ASCII de la clé secrète ESP. S'il est précédé de 0x, alors c'est une valeur hexadécimale
-F Imprimer les adresses IPv4 « étrangères » numériquement plutôt que symboliquement
-F déposer- utiliserdéposercomme entrée pour l'expression de filtre
-G rotation_secondes- période pour faire pivoter le fichier de sauvegarde de l'option -w, ajoutera un horodatage au nom
-h Imprimez les chaînes de version tcpdump et libpcap, imprimez un message d'utilisation et quittez
-H Détecter les brouillons d'en-têtes de maillage 802.11s
-je interface– l’interface sur laquelle écouter, par défaut le nom le plus bas par ordre alphabétique
-JE mode moniteur | mode immédiat– supprime la mise en mémoire tampon
-j tstamp_type– définissez le type d’horodatage de la capture surtstamp_type
-J tstamp_precision– définir la précision de l'horodatage ( micro ou nano ) la valeur par défaut est micro. Sitstamp_precisionest nul, liste les types d'horodatage et quitte
-K Ne pas vérifier les sommes de contrôle
-l Ligne Stdout mise en mémoire tampon. Par exemple. tcpdump -l | tee-shirt ou tcpdump -l > date et queue -f date
-L Répertoriez les types de liaison de données connus pour l'interface, dans le mode spécifié, et quittez
-m module– charger les définitions du module SMI MIB à partir du fichiermodule.
-M secrète– valeur secrète partagée pour validation avec l'option TCP-MD5
-n Ne convertissez pas les adresses (c'est-à-dire les adresses d'hôte, les numéros de port, etc.) en noms
-N Ne pas imprimer la qualification du nom de domaine des noms d'hôte
-# Imprimer un numéro de paquet facultatif au début de la ligne
-O N'exécutez pas l'optimiseur de code de correspondance de paquets
-p Ne mettez pas l'interface en mode promiscuité
-Q direction– sens d'envoi/réception. Peut être dans , dehors , ou entrée
-q Imprimer moins d'informations de protocole
-r déposer– lire les paquets dedéposer.Spécifier – pour entrée standard
-S Imprimer les numéros de séquence TCP absolus
-s le claquement– sniffle claquementoctets de chaque paquet, pas les 262 144 octets par défaut
-T taper– interpréter les paquets comme spécifiétaper. Les options sont :
- aodv Protocole vectoriel de distance ad hoc à la demande
- carpe Protocole de redondance d'adresse commune
- cnfp Protocole Cisco NetFlow
- lmp Protocole de gestion des liens
- pgm Multidiffusion générale pragmatique
- pgm_zmtp1 ZMTP/1.0 dans PGM/EPGM)
- resp Protocole de sérialisation REdis
- rayon RAYON
- rpc Appel de procédure à distance
- rp Protocole d'applications en temps réel
- RTCP Protocole de contrôle des applications en temps réel
- snmp Protocole de gestion de réseau simple
- tftp Protocole de transfert de fichiers trivial
- T.V.A Outil audio visuel
- wb Tableau blanc distribué
- zmtp1 Protocole de transport de messages ZeroMQ 1.0
- vxlan Réseau local virtuel extensible
-t N'imprimez pas d'horodatage sur chaque ligne de vidage
-tt Imprimer l'horodatage en décalage depuis le 1er janvier 1970 sur chaque ligne de vidage
-ttt Imprimer un delta (résolution en microsecondes) entre la ligne actuelle et la ligne précédente
-tttt Imprimer un horodatage : date, heure, minute, seconde sur chaque ligne de vidage
-ttttt Imprimer un delta (résolution en microsecondes) entre la ligne actuelle et la première ligne
-dans Imprimer les handles NFS non décodés
-DANS Paquet mis en mémoire tampon
-dans Sortie légèrement plus verbeuse
-vv Sortie plus verbeuse
-Office de tourisme Sortie la plus détaillée
-DANS déposer– lire une liste de noms de fichiers à partir dedéposer. L'entrée standard est utilisée sidéposerest –
-dans déposer– écrire la sortie dansdéposer
-DANS limite– le nombre maximum de fichiers à créer par le -C et -G choix
-X Imprimer les données de chaque paquet moins son en-tête de niveau lien en hexadécimal
-xx Imprimez les données de chaque paquet,y comprisson en-tête au niveau du lien, en hexadécimal
-X Imprimer les données de chaque paquet moins son en-tête de niveau lien en hexadécimal et ASCII
-XX Imprimez les données de chaque paquet,y comprisson en-tête au niveau du lien, en hexadécimal et ASCII.
-ET type de liaison de données– Définissez le type de liaison de données à utiliser lors de la capture des paquets surtype de liaison de données
-Avec commande post-rotation– traiter les fichiers de sauvegarde généralement avec compression, par exemple -z gzip
-DEPUIS utilisateur– changez l'ID utilisateur enutilisateuret l'ID de groupe au groupe principal deutilisateur
Article similaire: Aide-mémoire tcpdump
Paramètres Tcpdump
Les paramètres de tcpdump sont également appelésprimitives. Ceux-ci précisent si la capture de paquets doit uniquement obtenir des données provenant d'hôtes spécifiés. Ces paramètres peuvent également être exprimés sous forme de conditions à l'aide des opérateurs booléens et , ou , et pas . Vous n'avez pas besoin de mettre un signe égal (=) entre le nom du paramètre et sa valeur et vous n'avez pas besoin d'espacer les paramètres avec de la ponctuation. Dans chaque cas, vous avez juste besoin d’un espace.
Le plus couramment utilisé de ces paramètres est l'hôte, qui permet de limiter la capture aux transmissions provenant d'une seule source. Dans chaque cas, un nom d'appareil en tant que valeur de paramètre peut être remplacé par son adresse. Lorsqu'un paramètre a un heure d'été version, cette variante limite la sortie aux seuls paquets qui ont cet attribut pour leur destination. Paramètres qui incluent src recherchez les paquets qui ont la valeur donnée dans les données liées à leur origine.
Voici les options des paramètres :
hôte nom_hôte- aussi hôte d'heure d'été ou hôte src .
Peut également être précédé de adresse IP , arpège , ou râler
éther ehost– valeur de /etc/ethers ou un nombre. Aussi éther src et destination de l'éther .
passerelle hôte– récupérer les paquets qui ont transité par la passerellehôte
filet numéro_réseau –L'adresse IP source ou de destination comprendnuméro_réseauAussi heure d'été nette et réseau src
port numéro|nom- aussi port d'heure d'été et port src . Peut être avec tcp ou UDP limiter le protocole
protocole IP protocole– capturer les paquets IP du protocole nommé. Le nom doit être dans /etc/protocols
proto éther protocole– capturer un paquet de type protocole éther. Options pourprotocolesont un nombre ou :
- adresse IP
- IP6
- arpège
- râler
- une conversation
- section
- décnet
- décdts
- décdns
- Lanbridge
- années
- mopdl
- serpillière
- chiot
- sca
- lutin
- étape
- vexp
- vprod
- xns
Diffuser Capture les paquets de diffusion Ethernet. Également écrit comme diffusion d'éther
diffusion IP Capture les paquets de diffusion IP
multidiffusion Capture les paquets de multidiffusion Ethernet. Également écrit sous forme de multidiffusion éther
multidiffusion IP Capture les paquets de multidiffusion IP
hôte Decnet nom_hôte– si la source ou la destination DECNET estnom_hôte
décnet src nom_hôte– capturer si la source DECNET estnom_hôte
décembre, heure d'été nom_hôte– capturer si la destination DECNET estnom_hôte
hôte WiFi ehost– si la première, la deuxième, la troisième ou la quatrième adresse IEEE 802.11 estehost
adresse WLAN1 ehost– capturer si la première adresse IEEE 802.11 estehost
adresse wlan2 ehost– capturer si la deuxième adresse IEEE 802.11 estehost
adresse wlan3 ehost– capture si la troisième adresse IEEE 802.11 estehost
adresse wlan4 ehost– si la quatrième adresse IEEE 802.11 estehost. Utilisé uniquement pour WDS
taper taper– capture si le type de trame IEEE 802.11 esttaper,qui est un nombre ou :
- données
- gestion
- ctl
sous-type sous-type– capturer si la trame IEEE 802.11 estsous-type, qui est un nombre ou :
- assocreq
- rejoindre
- réassocier
- réassocier
- sondereq
- essayez ou
- balise
- au m
- dissocier
- authentification
- mort
- données
toi toi– capture si la direction de la trame IEEE 802.11 esttoi, qui est un nombre ou :
- hoche la tête
- tod
- fromds
- dstods
Expression TCPdump
Le segment expressions d'une commande tcpdump vous permet d'ajouter un peu de programmation à votre sélection de paquets. Cependant, contrairement à un programme classique, cet ensemble d’instructions doit être écrit sur une seule ligne. Si vous êtes un utilisateur fréquent d'Unix ou de Linux, vous serez habitué aux expressions régulières des scripts shell et ne devriez avoir aucun problème à comprendre le format de ces filtres.
Les paquets qui répondent au test défini par l'expression seront capturés. Le résultat de chaque expression doit donc être « vrai ».
Il existe quelques conditions d'expression qui ne sont généralement pas rencontrées dans les scripts shell et celles-ci sont répertoriées ci-dessous :
seulement
Cela renvoie la longueur d'un paquet. Exemple d'utilisation : seulement != 5 .
proto[expr:taille]
Dans cet objet :
donc est le nom d'une couche de protocole. Ça peut être:
- éther
- fddi
- adresse IP
- arpège
- râler
- tcp
- UDP
- IMP
expression est le décalage d'octet. Cela doit être inclus, mais il peut être donné à 0 afin de prendre la valeur du début de l'objet.
taille est facultatif et représente le nombre d’octets dans l’option. La valeur par défaut est 1, mais elle peut également être 2, 3 ou 4.
Exemples d'utilisation :
éther[0] & 1 != 0 est vrai pour tout le trafic multicast.
ip[0] & 0xf != 5 est vrai pour tous les paquets IP avec options.
ip[6:2] & 0x1fff = 0 est vrai pour les datagrammes non fragmentés et le frag zéro des datagrammes fragmentés.
Exemples de Tcpdump
Dans tous ces cas, les résultats de la commande s'afficheront à l'écran, à moins qu'une option liée au fichier ne soit incluse ou à moins que la commande soit lancée avec une redirection de sortie stand ou un canal vers un fichier.
Afficher les paquets circulant depuis ou vers l'ordinateur identifié comme lab1 :
laboratoire hôte tcpdump1
Affichez tous les paquets IP circulant entre lab1 et n'importe quel nœud autre que la réception :
tcpdump ip host lab1 et pas de réception
Afficher tout le trafic FTP via la passerelle Internet Styx :
tcpdump 'passerelle styx et (port ftp ou ftp-data)'
Affichez les paquets SYN et FIN de chaque conversation TCP impliquant un hôte non local :
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 et non src et dst net localnet'
Afficher les paquets de diffusion IP ou de multidiffusion qui n'ont pas été envoyés via la diffusion Ethernet ou la multidiffusion :
tcpdump 'ether[0] & 1 = 0 et ip[16] >= 224'
Format de sortie Tcpdump
Le format d'enregistrement utilisé pour écrire des paquets réseau dans des fichiers est devenu une norme adoptée par de nombreux renifleurs de paquets et analyseurs de trafic plus récents.
La norme n’est pas simple et est adaptée à chaque protocole. Cependant, les applications qui ont adopté ce format tiennent également compte de ces variations. Le format s'appelle pcap , qui est le nom du processus de capture de paquets utilisé par tcpdump. Les fichiers dans ce format ont généralement le .pcap extension.
Tcpdump pour Windows
Il existe une adaptation de tcpdump qui fonctionne sous Windows. C'est appelé WinDump et cela repose sur WinPcap pour la capture de paquets de la même manière que tcpdump utilise la fonction pcap de libpcap. WinPcap appartient en fait à Technologie du lit de rivière . Cette même société est le principal bailleur de fonds de Requin filaire , qui est probablement le renifleur de paquets le plus connu et le plus utilisé au monde. Il existe une version sans fil de WinPcap, appelée Capuchon d'air . Vous pouvez télécharger gratuitement WinDump, WinPcap et AirPcap depuis le Site Web WinPcap .
Utiliser des renifleurs de paquets
L'utilitaire de ligne de commande tcpdump est utile pour ceux qui connaissent le Unix et Linux systèmes d'exploitation et aimez écrire des scripts shell. Ceux qui ne sont pas très expérimentés dans l'assemblage de commandes avec des expressions régulières en ligne de commande auront des difficultés à utiliser ce programme.
Vous avez d'autres options car il existe de nombreux renifleurs de paquets disponibles, tels que Wireshark, mentionné ci-dessus. Vous pouvez en savoir plus sur les alternatives à tcpdump ici examen des renifleurs de paquets .
Avez-vous un renifleur de paquets préféré ? Êtes-vous fan de tcpdump ou préférez-vous des alternatives plus conviviales ? Laissez un message dans le commentaires ci-dessous et partagez vos expériences.
FAQ sur tcpdump
Quelle est la différence entre Wireshark et tcpdump ?
Wireshark et tcpdump capturent les paquets. À ce niveau, ces deux outils sont identiques. Cependant, Wireshark dispose d'une interface DUI qui inclut des fonctions d'analyse de paquets. Tcpdump est un utilitaire de ligne de commande. Il a moins de fonctionnalités et est plus difficile à utiliser.
Comment tuer un processus tcpdump ?
Habituellement, entrer Control-C arrêtera le processus tcpdump. Si cela ne fonctionne pas, recherchez l'identifiant du processus tcpdump avec le ps -aux commande, puis tapez tuer -9 suivi de l'ID du processus et appuyez sur retour.
Où sont stockés les fichiers tcpdump ?
Sauf si vous spécifiez un répertoire et un nom de fichier dans lesquels les enregistrements tcpdump doivent être stockés, le fichier sera écrit dans le répertoire dans lequel vous vous trouviez lorsque vous avez exécuté tcpdump. Vous pouvez spécifier où tcpdump doit stocker les paquets capturés avec sudo tcpdump -i 1 -w suivi du chemin et du nom du fichier.
Image: capture de paquets tcpdump par Captures d'écran Linux via Flickr . Autorisé sous CC PAR 2.0