La commande tcpdump est un utilitaire Linux qui permet aux utilisateurs de capturer les paquets réseau transmis vers et depuis le système. Dans cet article, nous allons apprendre comment extraire et examiner les paquets réseau à l’aide de la commande tcpdump.
Bien que très improbable, il peut arriver qu’un système n’ait pas installé tcpdump. Dans ce cas, tout utilisateur Ubuntu/Debian peut saisir la commande suivante :
sudo apt installer tcpdump
Cas D’utilisation De La Commande Tcpdump
Passons à la compréhension des différents cas d’utilisation et de la praticité.
1. Utilisation De Tcpdump Pour Trouver Toutes Les Interfaces Réseau
Il faut noter que tout paquet entrant ou sortant du système doit passer par une interface réseau. Pour récupérer la liste de toutes les interfaces réseau disponibles, nous utilisons la commande :
tcpdump -D
Interfaces réseau
Outre le nom des interfaces réseau, la commande fournit également l’état.
2. Capturez Tous Les Paquets Réseau à L’aide De La Commande Tcpdump
Comme mentionné dans la sortie ci-dessus, « any » peut être utilisé pour capturer des paquets de données qui passent par toutes les interfaces réseau. Cela peut être fait en utilisant l’option d’interface ‘-i’.
tcpdump -i tout
Paquets réseau via toutes les interfaces
La sortie affichée ci-dessus manque de détails pour chaque paquet de données. Pour comprendre chaque paquet en détail, nous pouvons utiliser l’option ‘-v’.
‘tcpdump’ est une commande sans fin. Nous pouvons rencontrer un moment où nous devons forcer l’arrêt de la sortie, ce qui peut être fait en appuyant sur ‘CTRL + C’.
Après avoir cessé l’impression des paquets, on nous fournit quelques statistiques relatives à la session tcpdump en cours. Cela ressemble à ceci :
statistiques de session ‘tcpdump’
Les informations fournies sont :
- Le nombre de paquets capturés et traités pendant la session tcpdump en cours.
- Le nombre de paquets reçus par le filtre, mais non capturés. Cela dépend principalement de la configuration de l’OS.
- Le nombre de paquets abandonnés par le noyau. Cela se produit généralement lorsque trop de paquets sont enregistrés dans le tampon. Cela conduit à un débordement de la mémoire tampon et donc à l’abandon de paquets.
3. Capturez Un Nombre Spécifique De Paquets
tcpdump permet de capturer uniquement un nombre spécifique de paquets avant de terminer la session de capture de paquets. Cela peut être fait en utilisant l’option ‘-c’.
tcpdump -c 5 -i tout
Session de capture limitée à 5 paquets
4. Capturez Des Paquets Spécifiques Au Protocole à L’aide De Tcpdump
Pour capturer des paquets appartenant à un protocole réseau particulier, nous ajoutons le nom du protocole à la fin.
tcpdump -c 5 -i n'importe quel tcp
Capturer uniquement les paquets TCP
La sortie affichée par la commande peut ne pas être comprise par tous les utilisateurs Linux. Essayons d’éclairer le paquet suivant.
2 Drapeaux , seq 234895113 options , longueur 1348
- 2
- IP6 – La version IP utilisée. Ici, c’est IPv6.
- linuxfordevices.32906 – Le nom de l’ adresse source du paquet suivi du numéro de port. (Notre système)
- del03s14-in-x0e.1e100.net.
- Drapeaux – Le drapeau définit le type de paquet . Dans l’exemple, il s’agit d’un paquet d’accusé de réception.
- seq 234895113
- ack 3385291322 – Le numéro d’accusé de réception . Il est utilisé pour gérer plusieurs paquets qui sont échangés dans une seule connexion.
- win 1564 – La taille de la fenêtre indique les octets disponibles dans le tampon de réception.
- options – Options liées au protocole
- length 1348 – La longueur du paquet de données en octets .
5. Capturez Des Paquets Spécifiques à L’hôte
En utilisant le mot-clé ‘host’ avec ‘tcpdump’, nous pouvons filtrer tous les paquets qui sont échangés avec un système hôte particulier.
tcpdump -nn -c 5 -i tout hôte 45.79.77.230
Requête spécifique à l’hôte
L’utilisation de ‘-nn’ traduit les noms d’hôtes en leurs adresses Internet numériques. L’adresse Internet transmise dans la commande est celle de www.linuxfordevices.com.
Remarque : les paquets n’apparaissent que s’il existe une connexion réseau réelle avec l’adresse IP spécifique.
tcpdump -nn -c 5 -i tout src 45.79.77.230
Pour les requêtes spécifiques à la destination, ‘dst’ est utilisé.
tcpdump -nn -c 5 -i tout dst 45.79.77.230
6. Capturez Des Paquets Sur Un Port Spécifique à L’aide De La Commande Tcpdump
Chaque connexion réseau est maintenue via un port spécifique d’un système informatique. Lors de la réception d’un paquet réseau, les numéros de port spécifient quelle application informatique est censée l’obtenir.
Afin de capturer les paquets, filtrés par un certain numéro de port, nous utilisons le mot-clé ‘port’.
tcpdump -i n'importe quel port 8000
Paquets réseau sur le port 8000
Si nous ne sommes pas certains du numéro de port exact, nous pouvons toujours utiliser une plage de numéros de port en :
tcpdump -i n'importe quelle plage de ports 8000-9000
7. Lecture Et écriture De Paquets Dans Un Fichier à L’aide De La Commande Tcpdump
Disons que nous souhaitons capturer le trafic réseau actuel mais l’analyser plus tard. Cette tâche peut être accomplie si nous sauvegardons les paquets dans un fichier. Cela peut être fait en utilisant l’option ‘-w’ qui signifie « écrire »:
tcpdump -c 5 -w network_file.pcap -i any
Écrire des paquets dans un fichier
L’extension d’un fichier de capture de paquets est .pcap . Il peut être consulté plus tard en utilisant l’option « -r » qui signifie « lire ».
tcpdump -r fichier_réseau.pcap
Lire des paquets à partir d’un fichier
8. Vérifier La Connexion à Un Site Web
Au cas où nous aurions besoin de vérifier si nous sommes connectés à un nom de domaine, nous pouvons utiliser la commande suivante :
tcpdump -XX -i tout | grep journaldev.com
Vérifier la connexion à journaldev.com
L’option ‘-XX’ convertit les valeurs du paquet de données en valeurs ASCII et Hex. Cela peut ne pas fonctionner pour toutes les URL, en raison des différences de noms de domaine.
Le symbole pipe (‘|’) suivant la commande tcpdump est utilisé pour transmettre les paquets de sortie à la commande grep. ‘grep’ est un utilitaire de recherche sous Linux, qui est ici utilisé pour rechercher ‘journaldev.com’ dans les paquets. Plus d’informations sur grep.