Tcpdump

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Capture de trafic réseau (sniffer en ligne de commande)
Commande tcpdump
Plateformes Linux, Unix, AIX (équivalents Windows : WinDump, tshark)
Voir aussi Netstat (Unix)

tcpdump capture et affiche le trafic réseau transitant par une interface, avec un langage de filtre expressif (hôte, port, protocole, combinables par and/or/not). Disponible nativement sous Linux/Unix/AIX ; sous Windows, les équivalents sont WinDump (historique) ou tshark (Wireshark en ligne de commande).

Filtrage de base

tcpdump -ln -v icmp and not net 10.10.10.0/24        # tout l'ICMP sauf un sous-réseau donné
tcpdump -i eth2                                       # sur une interface donnée

tcpdump src host 10.100.20.100 and dst host 10.100.25.2      # source et/ou destination
tcpdump src host 10.100.20.100 and port 80                    # + port
tcpdump src host 10.100.20.100 and tcp and port 21             # + protocole

# combinaison de plusieurs critères
tcpdump src host 10.100.20.100 and dst host 10.100.25.2 or dst host 10.100.25.1 and tcp and port 80

Les adresses ci-dessus sont des exemples génériques (plages RFC 1918), à remplacer par les hôtes réels concernés.

Inspecter le contenu des paquets

tcpdump -x -X -s 0 -i eth0 dst host cible and tcp and port 110   # POP3 : voir __Avertissement__ ci-dessous
  • -x : affiche la trame en hexadécimal
  • -X : affiche également la trame en ASCII
  • -s 0 : capture le paquet en entier, quelle que soit sa taille

Avertissement : les protocoles en clair (POP3, FTP, Telnet...) exposent identifiants et mots de passe en toutes lettres à quiconque peut sniffer le segment — c'est une des raisons pour lesquelles ils sont aujourd'hui déconseillés au profit de leurs équivalents chiffrés (IMAPS, SFTP, SSH). Ne capturer que du trafic qu'on est autorisé à observer.

Recherche d'éléments précis dans la trame

tcpdump 'icmp[0] != 8 and icmp[0] != 0'

Captures ciblées

tcpdump dst port 8343              # trafic entrant sur un port TCP donné
tcpdump udp dst port 5060          # trafic entrant sur un port UDP donné (SIP)
tcpdump port 8380 -A -s 1500       # contenu complet du paquet, affiché en ASCII

tcpdump port 8380 -A -w out.cap    # capturer et enregistrer dans un fichier
tcpdump -r out.cap                 # relire un fichier de capture

tcpdump -i eth0 not port 22                        # tout le trafic sauf SSH
tcpdump -i eth0 src 192.168.0.1 and not port 22    # trafic d'un hôte donné, sauf SSH
tcpdump -A src 192.168.0.1 and not port 22         # contenu ASCII
tcpdump -X src 192.168.0.1 and not port 22         # contenu hexadécimal

Analyse

Pour l'analyse a posteriori d'une capture, des outils comme Nstreams permettent de reconstituer des règles de pare-feu à partir d'un fichier pcap.

Voir aussi