Guide des débutants TCPDump

Guide des débutants TCPDump
TCPDump est un analyseur de paquets de réseaux de données sans fil gratuit et ouvert qui fonctionne sur l'interface de ligne de commande. C'est l'outil CLI le plus utilisé pour analyser le trafic réseau. TCPDUmp permet aux utilisateurs de voir, de lire ou de capturer le trafic réseau transmis sur un réseau attaché à l'ordinateur. Il est utile dans l'administration du système, surveillant le trafic réseau (pour les problèmes ou autrement).

À l'origine, il a été rédigé en 1988 par quatre travailleurs du groupe de recherche sur le réseau au Lawrence Berkeley Laboratory en Californie. Il a été organisé onze ans plus tard par Micheal Richardson et Bill Fenner en 1999, qui a créé le site TCPDump. TCPDump fonctionne sur tous les systèmes d'exploitation de type UNIX. La version Windows de TCPDump est appelée Windump et utilise WinPCap, l'alternative Windows pour libpcap.

Utilisez le snap pour installer TCPDUmp:

$ sudo snap installer tcpdump

Utilisez votre gestionnaire de packages pour installer TCPDump:

$ sudo apt-get install tcpdump (debian / ubuntu)
$ sudo dnf installer tcpdump (Centos / rhel 6 & 7)
$ sudo yum install tcpdump (fedora / centos / rhel 8)

Voyons différents usages et sorties pendant que nous explorons TCPDump!

UDP

TCPDump peut également vider les paquets UDP. Nous utiliserons un outil NetCat (NC) pour envoyer un paquet UDP, puis le vider.

$ echo -n "tcpdumper" | NC -W 1 -U localhost 1337

Dans la commande ci-dessus, nous envoyons un paquet UDP composé de la chaîne "TCPPumper" au port UDP 1337 via hôte local. TCPDump capture le paquet envoyé sur le port UDP 1337 et l'affichera.

Nous allons maintenant vider ce paquet à l'aide de TCPDump.

$ sudo tcpdump -i lo udp port 1337 -vvv -x

Cette commande capturera et affichera les données capturées des paquets d'ASCII ainsi que de la forme hexagonale.

TCPDump: écoute sur lo, type en 10MB de type lien (Ethernet), longueur d'instantané 262144 octets
04:39:39.072802 IP (TOS 0x0, TTL 64, ID 32650, décalage 0, drapeaux [DF], proto UDP (17), longueur 37)
hôte local.54574> localhost.1337: [Bad UDP CKSUM 0XFE24 -> 0XEAC6!] Udp, longueur 9
0x0000: 4500 0025 7F8A 4000 4011 BD3B 7F00 0001 E…%… @.@…;…
0x0010: 7F00 0001 D52E 0539 0011 FE24 7463 7064… 9… $ TCPD
0x0020: 756d 7065 72 UMPR

Comme nous pouvons le voir, le paquet a été envoyé au port 1337, et la longueur était de 9 comme chaîne tcpumper est 9 octets. Nous pouvons également voir que le paquet a été affiché au format hexadécimal.

Dhcp

TCPDump peut également mener des enquêtes sur les paquets DHCP sur le réseau. DHCP utilise le port UDP n ° 67 ou 68, nous définirons donc et limiterons TCPDUMP pour uniquement les paquets DHCP. Supposons que nous utilisons une interface réseau wifi.
La commande utilisée ici sera:

$ sudo tcpdump -i wlan0 port 67 ou port 68 -e -n -vvv
TCPDump: Écoute sur WLAN0, Link-Type EN10MB (Ethernet), longueur d'instantané 262144 octets
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, EtherType IPv4 (0x0800), longueur 342: (TOS 0x0, TTL 64, ID 39781, Offset 0, drape ], proto udp (17), longueur 328)
192.168.dix.21.68> 192.168.dix.1.67: [UDP SUM OK] BOOTP / DHCP, demande de 00: 11: 22: 33: 44: 55, longueur 300, XID 0xFEAB2D67, Flags [Aucun] (0x0000)
Client-ip 192.168.dix.16
Client-Ethernet-Address 00: 11: 22: 33: 44: 55
Vendor-RFC1048 Extensions
Cookie magique 0x63825363
DHCP-Message (53), longueur 1: libération
Server-ID (54), longueur 4: 192.168.dix.1
Nom d'hôte (12), longueur 6: "Parrot"
Fin (255), longueur 0
Pad (0), longueur 0, se produit 42

DNS

DNS, également connu sous le nom de système de nom de domaine, confirme pour vous fournir ce que vous recherchez en faisant correspondre le nom de domaine avec l'adresse de domaine. Pour inspecter la communication de niveau DNS de votre appareil sur Internet, vous pouvez utiliser TCPDump de la manière suivante. DNS utilise le port UDP 53 pour la communication.

$ sudo tcpdump -i wlan0 udp port 53
TCPDump: Écoute sur WLAN0, Link-Type EN10MB (Ethernet), longueur d'instantané 262144 octets
04:23:48.516616 IP (TOS 0x0, TTL 64, ID 31445, décalage 0, drapeaux [DF], proto UDP (17), longueur 72)
192.168.dix.16.45899> un.un.un.un.Domaine: [UDP Sum ok] 20852+ A? mozilla.cloudflare-dns.com. (44)
04:23:48.551556 IP (TOS 0x0, TTL 60, ID 56385, décalage 0, drapeaux [DF], proto UDP (17), longueur 104)
un.un.un.un.domaine> 192.168.dix.16.45899: [UDP Sum OK] 20852 Q: A? mozilla.cloudflare-dns.com. 2/0/0 Mozilla.cloudflare-dns.com. [24S] A 104.16.249.249, Mozilla.cloudflare-dns.com. [24S] A 104.16.248.249 (76)
04:23:48.648477 IP (TOS 0x0, TTL 64, ID 31446, décalage 0, drapeaux [DF], proto UDP (17), longueur 66)
192.168.dix.16.34043> un.un.un.un.Domaine: [UDP Sum ok] 40757+ ptr? 1.1.1.1.indem.arpa. (38)
04:23:48.688731 IP (TOS 0x0, TTL 60, ID 56387, décalage 0, drapeaux [DF], proto UDP (17), longueur 95)
un.un.un.un.domaine> 192.168.dix.16.34043: [UDP Sum OK] 40757 Q: PTR? 1.1.1.1.indem.arpa. 1/0/0 1.1.1.1.indem.arpa. [26m53s] ptr un.un.un.un. (67)

Arp

Le protocole de résolution d'adresse est utilisé pour découvrir l'adresse de la couche de liaison, comme une adresse MAC. Il est associé à une adresse de couche Internet donnée, généralement une adresse IPv4.

Nous utilisons TCPDump pour capturer et lire les données transportées dans les paquets ARP. La commande est aussi simple que:

$ sudo tcpdump -i wlan0 arp -vvv
TCPDump: Écoute sur WLAN0, Link-Type EN10MB (Ethernet), longueur d'instantané 262144 octets
03:44:12.023668 ARP, Ethernet (Len 6), IPv4 (Len 4), demande qui est 192.168.dix.1 Tell 192.168.dix.2, longueur 28
03:44:17.140259 ARP, Ethernet (Len 6), IPv4 (LEN 4), demande qui est 192.168.dix.21 Tell 192.168.dix.1, longueur 28
03:44:17.140276 ARP, Ethernet (LEN 6), IPv4 (LEN 4), Répondre 192.168.dix.21 IS-AT 00: 11: 22: 33: 44: 55 (OUI inconnu), longueur 28
03:44:42.026393 ARP, Ethernet (LEN 6), IPv4 (Len 4), demande qui est 192.168.dix.1 Tell 192.168.dix.2, longueur 28

ICMP

ICMP, également connu sous le nom de protocole de message de contrôle Internet, est un protocole de support dans la suite de protocole Internet. ICMP est utilisé comme protocole d'information.

Pour afficher tous les paquets ICMP sur une interface, nous pouvons utiliser cette commande:

$ sudo tcpdump icmp -vvv
TCPDump: Écoute sur WLAN0, Link-Type EN10MB (Ethernet), longueur d'instantané 262144 octets
04:26:42.123902 IP (TOS 0x0, TTL 64, ID 14831, décalage 0, drapeaux [DF], proto ICMP (1), longueur 84)
192.168.dix.16> 192.168.dix.1: demande d'écho ICMP, ID 47363, SEQ 1, longueur 64
04:26:42.128429 IP (TOS 0x0, TTL 64, ID 32915, décalage 0, drapeaux [Aucun], proto ICMP (1), longueur 84)
192.168.dix.1> 192.168.dix.16: ICMP Echo Répondre, ID 47363, SEQ 1, longueur 64
04:26:43.125599 IP (TOS 0x0, TTL 64, ID 14888, décalage 0, drapeaux [DF], proto ICMP (1), longueur 84)
192.168.dix.16> 192.168.dix.1: demande d'écho ICMP, ID 47363, SEQ 2, longueur 64
04:26:43.128055 IP (TOS 0x0, TTL 64, ID 32916, décalage 0, drapeaux [Aucun], proto ICMP (1), longueur 84)
192.168.dix.1> 192.168.dix.16: Réponse de l'écho ICMP, ID 47363, SEQ 2, longueur 64

NTP

NTP est un protocole de réseautage conçu spécifiquement pour synchroniser l'heure sur un réseau de machines. Pour capturer le trafic sur NTP:

$ sudo tcpdump dst Port 123
04:31:05.547856 IP (TOS 0x0, TTL 64, ID 34474, décalage 0, drapeaux [DF], proto UDP (17), longueur 76)
192.168.dix.16.NTP> Time-b-wwv.nist.gouvernement.NTP: [UDP SUM OK] NTPV4, client, longueur 48
Indicateur de LEAP: horloge non synchronisée (192), strate 0 (non spécifiée), sondage 3 (8S), précision -6
Délai de racine: 1.000000, Dispersion des racines: 1.000000, ID de référence: (USPEC)
Timestamp de référence: 0.000000000
Horodatage de l'origine: 0.000000000
Recevoir l'horodatage: 0.000000000
Transmettre l'horodatage: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
INTÉRIEUR - Recevoir l'horodatage: 0.000000000
INTÉRIEUR - TRAPORT DE TRANSMIT: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (TOS 0x0, TTL 56, ID 234, décalage 0, drapeaux [Aucun], proto udp (17), longueur 76)
Time-b-wwv.nist.gouvernement.NTP> 192.168.dix.16.NTP: [UDP SUM OK] NTPV3, serveur, longueur 48
Indicateur de LEAP: (0), Stratum 1 (référence primaire), sondage 13 (8192S), précision -29
Délai de racine: 0.000244, dispersion des racines: 0.000488, ID de référence: NIST
Horodatage de référence: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Horodatage de l'origine: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Recevoir l'horodatage: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Transmettre l'horodatage: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
INTÉROIRATEUR - Recevoir l'horodatage: +9.480896026
INTÉROIRATEUR - Transmettre l'horodatage: +9.480897141

Smtp

SMTP ou le protocole de transfert de courrier simple est principalement utilisé pour les e-mails. TCPDump peut l'utiliser pour extraire les informations de messagerie utiles. Par exemple, pour extraire les destinataires / expéditeurs de messagerie:

$ sudo tcpdump -n -l port 25 | grep -i 'courrier de \ | rcpt à'

Ipv6

Ipv6 est la «prochaine génération» de l'IP, offrant une large gamme d'adresses IP. Ipv6 aide à atteindre la santé à long terme de l'Internet.

Pour capturer le trafic IPv6, utilisez le filtre IP6 spécifiant les protocoles TCP et UDP à l'aide de Proto 6 et Proto-17.

$ sudo tcpdump -n -i tout ip6 -vvv
tcpdump: type de liaison de données linux_sll2
TCPDump: écouter sur n'importe quel, link-type linux_sll2 (linux cuit v2), longueur d'instantané 262144 octets
04:34:31.847359 LO en IP6 (FlowLabel 0xc7cb6, Hlim 64, UDP à tête suivante (17) Longueur de charge utile: 40) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x003b -> 0x3587!] UDP, longueur 32
04:34:31.859082 LO en IP6 (FlowLabel 0xc7cb6, Hlim 64, UDP à tête suivante (17) Longueur de charge utile: 32) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x0033 -> 0XEAEF!] Udp, longueur 24
04:34:31.860361 LO IN IP6 (FlowLabel 0xc7cb6, Hlim 64, UDP à tête suivante (17) Longueur de charge utile: 40) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x003b -> 0x7267!] UDP, longueur 32
04:34:31.871100 LO en IP6 (FlowLabel 0xc7cb6, Hlim 64, UDP à tête suivante (17) Longueur de charge utile: 944) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x03C3 -> 0xf890!] UDP, longueur 936
4 paquets capturés
12 paquets reçus par filtre
0 paquets déposés par le noyau

Le '-C 4' fournit un nombre de paquets allant jusqu'à 4 paquets uniquement. Nous pouvons spécifier le nombre de paquets sur n et capturer n paquets.

Http

Le protocole de transfert hypertexte est utilisé pour transférer des données d'un serveur Web vers un navigateur pour afficher les pages Web. HTTP utilise la communication de formulaire TCP. Plus précisément, le port TCP 80 est utilisé.

Pour imprimer tous les paquets IPv4 HTTP vers et depuis le port 80:

TCPDump: Écoute sur WLAN0, Link-Type EN10MB (Ethernet), longueur d'instantané 262144 octets
03:36:00.602104 IP (TOS 0x0, TTL 64, ID 722, décalage 0, drapeaux [DF], Proto TCP (6), longueur 60)
192.168.dix.21.33586> 192.168.dix.1.http: drapeaux [s], cksum 0xa22b (correct), SEQ 2736960993, Win 64240, Options [MSS 1460, Sackok, TS Val 389882294 ECR 0, NOP, WSCALE 10], longueur 0
03:36:00.604830 IP (TOS 0x0, TTL 64, ID 0, décalage 0, drapeaux [DF], Proto TCP (6), longueur 60)
192.168.dix.1.http> 192.168.dix.21.33586: drapeaux [s.], CKSUM 0x2dcc (correct), SEQ 4089727666, ACK 2736960994, WIN 14480, Options [MSS 1460, Sackok, TS Val 30996070 ECR 389882294, NOP, WSCALE 3], longueur 0
03:36:00.604893 IP (TOS 0x0, TTL 64, ID 723, décalage 0, drapeaux [DF], Proto TCP (6), longueur 52)
192.168.dix.21.33586> 192.168.dix.1.http: drapeaux [.], Cksum 0x94e2 (correct), SEQ 1, ACK 1, Win 63, Options [NOP, NOP, TS Val 389882297 ECR 30996070], longueur 0
03:36:00.605054 IP (TOS 0x0, TTL 64, ID 724, décalage 0, drapeaux [DF], Proto TCP (6), longueur 481)

Demandes HTTP…

192.168.dix.21.33586> 192.168.dix.1.http: drapeaux [p.], CKSUM 0x9e5d (correct), SEQ 1: 430, ACK 1, Win 63, Options [NOP, NOP, TS Val 389882297 ECR 30996070], longueur 429: Http, longueur: 429
Get / http / 1.1
Hôte: 192.168.dix.1
Agent utilisateur: Mozilla / 5.0 (Windows NT 10.0; RV: 78.0) Gecko / 20100101 Firefox / 78.0
Accepter: texte / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, * / *; q = 0.8
Accept-Language: en-us, en; q = 0.5
Codage d'acceptation: gzip, dégonfler
Dnt: 1
Connexion: Keep-Alive
Cookie: _TestCooKiesUpport = 1; SID = C7CCFA31CFE06065717D24FB544A5CD588760F0CDC5AE2739E746F84C469B5FD
MODE-INSECER-REQUESTS: 1

Et les réponses sont également capturées

192.168.dix.1.http> 192.168.dix.21.33586: drapeaux [P.], CKSUM 0x84F8 (correct), SEQ 1: 523, ACK 430, WIN 1944, Options [NOP, NOP, TS Val 30996179 ECR 389882297], longueur 522: HTTP, longueur: 522
Http / 1.1 200 OK
Serveur: ZTE Web Server 1.0 ZTE Corp 2015.
Accept-glages: octets
Connexion: fermer
X-Frame-Options: Sameorigin
Cache-Control: sans cache, sans magasin
Longueur du contenu: 138098
Set-cookie: _testCookiesupport = 1; Chemin = /; Httponly
Type de contenu: texte / html; Charset = UTF-8
Options de type X-Content: Nosniff
Contenu-Sécurité-politique: Frame-ancêtres 'self' 'danget-in-inline' 'dangeret-eval'; iMg-src 'self' data:;
X-XSS-Protection: 1; mode = bloc
Set-cookie: sid =; expire = thu, 01-jan-1970 00:00:00 gmt; path = /; Httponly

TCP

Pour capturer les paquets TCP uniquement, cette commande fera tout le bien:

$ sudo tcpdump -i wlan0 tcp
TCPDump: Écoute sur WLAN0, Link-Type EN10MB (Ethernet), longueur d'instantané 262144 octets
04:35:48.892037 IP (TOS 0x0, TTL 60, ID 23987, décalage 0, drapeaux [Aucun], Proto TCP (6), longueur 104)
TL-in-F189.1E100.filet.https> 192.168.dix.16.50272: drapeaux [P.], CKSUM 0XC924 (correct), SEQ 1377740065: 1377740117, ACK 1546363399, Win 300, Options [NOP, NOP, TS Val 13149401 ECR 3051434098], Longueur 52
04:35:48.892080 IP (TOS 0x0, TTL 64, ID 20577, décalage 0, drapeaux [DF], Proto TCP (6), longueur 52)
192.168.dix.16.50272> TL-IN-F189.1E100.filet.https: drapeaux [.], CKSUM 0XF898 (correct), SEQ 1, ACK 52, WIN 63, Options [NOP, NOP, TS Val 3051461952 ECR 13149401], longueur 0
04:35:50.199754 IP (TOS 0x0, TTL 64, ID 20578, Offset 0, Flags [DF], Proto TCP (6), longueur 88)
192.168.dix.16.50272> TL-IN-F189.1E100.filet.https: drapeaux [p.], CKSUM 0x2531 (correct), SEQ 1:37, ACK 52, Win 63, Options [NOP, NOP, TS Val 3051463260 ECR 13149401], longueur 36
04:35:50.199809 IP (TOS 0x0, TTL 64, ID 7014, Offset 0, Flags [DF], Proto TCP (6), longueur 88)
192.168.dix.16.50434> HKG12S18-en-F14.1E100.filet.https: drapeaux [p.], CKSUM 0XB21E (correct), SEQ 328391782: 328391818, ACK 3599854191, Win 63, Options [NOP, NOP, TS Val 3656137742 ECR 2564108387], Longueur 36
4 paquets capturés
4 paquets reçus par filtre
0 paquets déposés par le noyau

Normalement, la capture de paquets TCP entraîne beaucoup de trafic; Vous pouvez spécifier en détail vos exigences en ajoutant des filtres à la capture, tels que:

Port
Spécifie le port pour surveiller

$ sudo tcpdump -i wlan0 tcp port 2222

IP de source
Pour afficher les paquets à partir d'une source spécifiée

$ sudo tcpdump -i wlan0 tcp src 192.168.dix.2

IP de destination
Pour afficher les paquets vers une destination spécifiée

$ sudo tcpdump -i wlan0 tcp dst 192.168.dix.2

Enregistrer la capture de paquets en fichiers

Pour enregistrer la capture des paquets pour effectuer une analyse plus tard, nous pouvons utiliser l'option -W de TCPDUmp qui nécessite un paramètre de nom de fichier. Ces fichiers sont enregistrés dans un format de fichier PCAP (capture de paquets), qui peut être utilisé pour enregistrer ou envoyer des captures de paquets.

Par exemple:

$ sudo tcpdump -w / capturé.PCAP

Nous pouvons ajouter des filtres à si nous voulons capturer des paquets TCP, UDP ou ICMP, etc.

Lire la capture des paquets à partir de fichiers

Malheureusement, vous ne pouvez pas lire le fichier enregistré via des commandes «Read Fichier» communes comme CAT, etc. La sortie est tout sauf charabia, et il est difficile de dire ce qu'il y a dans le fichier. '-r' est utilisé pour lire les paquets enregistrés dans le .Fichier PCAP, stocké plus tôt par «-w» ou d'autres logiciels stockant PCAPS:

$ sudo tcpdump -r /les sorties.PCAP

Cela imprime les données collectées à partir de paquets capturés sur l'écran du terminal dans un format lisible.

Tcpdump Cheatheet

TCPDump peut être utilisé avec d'autres commandes Linux telles que Grep, SED, etc., Pour extraire des informations utiles. Voici quelques combinaisons et mots clés utiles fusionnés avec TCPDump pour obtenir des informations précieuses.

Extraire les agents utilisateur HTTP:

$ sudo tcpdump -n | grep "utilisateur-agent:"

Les URL demandées sur HTTP peuvent être surveillées à l'aide de TCPDUmp telles que:

$ sudo tcpdump -v -n | egrep -i "post / | get / | hôte:"

Vous pouvez aussi Extraire les mots de passe HTTP dans les demandes de poste

$ sudo tcpdump -nn -l | egrep -i "post / | pwd = | passwd = | mot de passe = | hôte:"

Les cookies côté serveur ou côté client peuvent être extraits en utilisant:

$ sudo tcpdump -n | egrep -i 'set-cookie | hôte: | cookie:'

Capturez les demandes et réponses DNS en utilisant:

$ sudo tcpdump -i wlp58s0 -s0 port 53

Imprimez tous les mots de passe en texte brut:

$ sudo tcpdump port http ou port ftp ou port smtp ou port imap ou port pop3 ou port telnet -l -a | Egrep -i -B5 'Pass = | Pwd = | log = | login = | user = | user | username = | pw = | passw = | passwd = | mot de passe = | pass: | utilisateur: | nom d'utilisateur: | mot de passe: | Connexion: | passer '

Filtres TCPDUmp courants

  • -UN Montre des paquets au format ASCII.
  • -c Nombre de paquets à capturer.
  • -compter Imprimer le nombre de paquets uniquement lors de la lecture d'un fichier capturé.
  • -e Imprimer les adresses MAC et les en-têtes de niveau lien.
  • -H ou -Help Imprime la version et les informations d'utilisation.
  • -version Afficher les informations de la version uniquement.
  • -je Spécifiez l'interface réseau pour capturer.
  • -K Empêcher les tentatives de vérifier les sommes de contrôle de tout paquet. Ajoute de la vitesse.
  • -m Spécifiez le module à utiliser.
  • -n Ne convertissez pas les adresses (je.e., Adresses de l'hôte, numéros de port, etc.) aux noms.
  • -nombre Imprimez un numéro de paquet en option au début de chaque ligne.
  • -p Interdire à l'interface d'entrer en mode promiscuité.
  • -Q Choisissez la direction pour que les paquets soient capturés. Envoyer ou recevoir.
  • -q Sortie silencieuse / rapide. Imprime moins d'informations. Les sorties sont plus courtes.
  • -r Utilisé pour lire les paquets à partir d'un PCAP .
  • -t N'imprimez pas un horodat sur chaque ligne de vidage.
  • -V Imprime plus d'informations sur la sortie.
  • -w Écrivez les paquets bruts dans le fichier.
  • -X Imprime la sortie ASCII.
  • -X Imprime ascii avec hex.
  • -interfaces de liste Affiche toutes les interfaces réseau disponibles où les paquets peuvent être capturés par TCPDump.

Cessation

TCPDump a été un outil très largement utilisé utilisé dans la recherche et les applications de la sécurité / réseautage. Le seul inconvénient que TCPDump a `` No GUI '', mais il est trop beau pour être gardé dans les tableaux supérieurs. Comme l'écrit Daniel Miessler, «les analyseurs de protocole comme Wireshark sont géniaux, mais si vous voulez vraiment maîtriser Packet-Fu, vous devez en devenir un avec TCPDump en premier."