Tcpdump Tutorial

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Einführung in tcpdump

tcpdump im Überblick

tcpdump ist das weltweit führende Tool zur Netzwerkanalyse – leistungsstark und einfach in einer einzigen Befehlszeilenschnittstelle.

Funktionsweise

tcpdump ist ein Paketanalysator für die Kommandozeile zur Erfassung und Untersuchung von Netzwerkverkehr in Echtzeit.

Zielgruppe

Dieses Tool ist unverzichtbar für Netzwerkadministratoren, Sicherheitsexperten und alle, die Netzwerkverhalten analysieren wollen.

Was dieses Tutorial bietet

In diesem Tutorial werden 50 praktische Anwendungsbeispiele von tcpdump behandelt – von einfacher Erfassung bis zu komplexer Filterung.

Benutzung

Standardmäßig fängt tcpdump alle Pakete ab die von der niedrigst nummerierten Netzwerkschnittstelle irgendwohin gehen oder empfangen werden mit einer maximalgröße von 96 bytes bis man es mit STRG+C abbricht:

Da tcpdump viel zuviele Pakete aufzeichnet um in Echtzeit etwas damit anfangen zu können muss man es über Optionen steuern.

Optionen

-s size Legt die Maximale Größe der abgefangenen Pakete fest. Empfohlener Wert is 1500 bytes, das entspricht der maximalen Paketgröße eines IP-Pakets
-c count Bestimmt die Anzahl an Paketen die abgefangen werden sollen
-w write Speichert die Ausgabe in einer Datei. Da tcpdump eine Menge Daten abfängt, ist es oft ratsam die Daten in einer Datei unterzubringen
-r read Liest mit tcpdump erstellte Dateien
-n numeric Versucht nicht IP-Adressen in Hostnamen umzuwandeln, das beschleunigt die Ausgaberate erheblich
-t time Entfernt den Zeitstempel am Anfang jedes Pakets. Steigert die Übersichtlichkeit fals man nicht an Zeitstempeln interessiert ist
-i interface Hört das angegebene Interface ab.
-A ASCII Zeigt die Pakete ohne ihre Header in ASCII an
-D Devices Zeigt eine Liste der Netwerkschnittstellen an auf denen tcpdump laufen könnte
-e ethernet Zeigt den Ethernet Header jedes Pakets an
-i interface Tcpdump benutzt das angegebene Interface ( -i eth0 )
-p promiscuous Tcpdump fängt nur Pakete ab die auch für den Rechner bestimmt sind
-q quick Zeigt weniger Protokoll-Informationen
-v verbose Zeigt mehr Informationen an, steigerbar bis -vvv

Filter

Da man jetzt immernoch mit allen Pakete die in unserer Netzwerkkarte so ankommen zu kämpfen hat, hat man unter vielen anderen folgende Filter-Optionen zur Hand:

Optionen

Filter Match
host IP IP-Adresse
port PORT Port-Nummer
net NET/CIDR Netz und Netznummer in CIDR Schreibweise
src (host IP|port PORT|net NET/CIDR) Quellen IP-Adresse, Port-Nummer oder Netz
dst (host IP|port PORT|net NET/CIDR) Ziel IP-Adresse,Port-Nummer oder Netz
! oder not Negation
&& oder and Und Verknüpfung
|| oder or Oder Verknüpfung


Grundlegende Syntax

Syntaxaufbau

Die allgemeine Syntax besteht aus Optionen und einem Filterausdruck.

  • tcpdump [optionen] [ausdruck]

Funktion von Optionen

Optionen steuern das Verhalten von tcpdump, z. B. Interface-Auswahl oder Ausgabeformat.

Funktion von Ausdrücken

Ein Ausdruck bestimmt, welche Art von Verkehr erfasst wird – über Hostnamen, IPs, Ports, Protokolle usw.

Verkehr auf einem Interface erfassen

Verkehr auf enp0s3 erfassen

Erfasst den gesamten Netzwerkverkehr auf dem Interface enp0s3.

  • tcpdump -i enp0s3

Verfügbare Schnittstellen anzeigen

Listet alle verfügbaren Netzwerkinterfaces auf.

  • tcpdump -D

Verkehr zu/von einem Host erfassen

Verkehr zu oder von 192.168.1.100 erfassen

Erfasst alle Pakete zwischen dem lokalen System und 192.168.1.100.

  • tcpdump -i enp0s3 host 192.168.1.100

Verkehr zu oder von example.com erfassen

Zeigt den gesamten Verkehr mit example.com.

  • tcpdump -i enp0s3 host example.com

Verkehr auf einem Port erfassen

HTTP-Verkehr erfassen

Erfasst Verkehr über Port 80.

  • tcpdump -i enp0s3 port 80

HTTPS-Verkehr erfassen

Erfasst Verkehr über Port 443.

  • tcpdump -i enp0s3 port 443

SSH-Verkehr erfassen

Erfasst Verkehr über Port 22.

  • tcpdump -i enp0s3 port 22

FTP-Verkehr erfassen

Erfasst Verkehr über Port 21.

  • tcpdump -i enp0s3 port 21

SMTP-Verkehr erfassen

Erfasst Verkehr über Port 25.

  • tcpdump -i enp0s3 port 25

DNS-Verkehr erfassen

Erfasst Verkehr über Port 53.

  • tcpdump -i enp0s3 port 53

Verkehr nach Richtung filtern

Verkehr von 192.168.1.100 erfassen

Zeigt alle Pakete mit dieser IP als Quelle.

  • tcpdump -i enp0s3 src host 192.168.1.100

Verkehr zu 192.168.1.100 erfassen

Zeigt alle Pakete mit dieser IP als Ziel.

  • tcpdump -i enp0s3 dst host 192.168.1.100

Verkehr mit Quellport 80 erfassen

Zeigt Pakete, die von Port 80 ausgehen.

  • tcpdump -i enp0s3 src port 80

Verkehr mit Zielport 443 erfassen

Zeigt Pakete, die an Port 443 gehen.

  • tcpdump -i enp0s3 dst port 443

Protokolle filtern

Nur TCP-Verkehr erfassen

Erfasst ausschließlich TCP-Pakete.

  • tcpdump -i enp0s3 tcp

Nur UDP-Verkehr erfassen

Erfasst ausschließlich UDP-Pakete.

  • tcpdump -i enp0s3 udp

Nur ICMP-Verkehr erfassen

Zeigt nur ICMP-Nachrichten.

  • tcpdump -i enp0s3 icmp

Nach Subnetzen filtern

Verkehr im Subnetz 192.168.1.0/24 erfassen

Zeigt Verkehr innerhalb des Subnetzes.

  • tcpdump -i enp0s3 net 192.168.1.0/24

Verkehr aus dem Subnetz erfassen

Zeigt Verkehr mit Quelladresse im Subnetz.

  • tcpdump -i enp0s3 src net 192.168.1.0/24

Verkehr ins Subnetz erfassen

Zeigt Verkehr mit Zieladresse im Subnetz.

  • tcpdump -i enp0s3 dst net 192.168.1.0/24

Kombinierte Filter

Verkehr zu Host und Port 80 erfassen

Filtert alle Pakete zu 192.168.1.100 auf Port 80.

  • tcpdump -i enp0s3 dst host 192.168.1.100 and dst port 80

Verkehr von Host auf Port 443 erfassen

Filtert alle Pakete von 192.168.1.100 mit Port 443.

  • tcpdump -i enp0s3 src host 192.168.1.100 and src port 443

Verkehr zu/von Host auf Port 80 oder 443 erfassen

Zeigt Verkehr zu/von 192.168.1.100 über Port 80 oder 443.

  • tcpdump -i enp0s3 host 192.168.1.100 and \( port 80 or port 443 \)

Negation

Alle Pakete außer ICMP erfassen

Filtert alles außer ICMP.

  • tcpdump -i enp0s3 not icmp

Alle Pakete außer Port 80 erfassen

Filtert alles außer HTTP.

  • tcpdump -i enp0s3 not port 80

Nach TCP-Flags filtern

Nur SYN-Pakete erfassen

Erkennt TCP-Verbindungsaufbau.

  • tcpdump -i enp0s3 'tcp[tcpflags] & tcp-syn != 0'

Nur ACK-Pakete erfassen

Filtert alle Pakete mit gesetztem ACK-Flag.

  • tcpdump -i enp0s3 'tcp[tcpflags] & tcp-ack != 0'

Nur RST-Pakete erfassen

Zeigt TCP-Verbindungsabbrüche.

  • tcpdump -i enp0s3 'tcp[tcpflags] & tcp-rst != 0'

Nur FIN-Pakete erfassen

Erkennt Verbindungsabbau.

  • tcpdump -i enp0s3 'tcp[tcpflags] & tcp-fin != 0'

Nur URG-Pakete erfassen

Erkennt dringende TCP-Daten.

  • tcpdump -i enp0s3 'tcp[tcpflags] & tcp-urg != 0'

Nur PSH-Pakete erfassen

Zeigt Daten mit Push-Flag.

  • tcpdump -i enp0s3 'tcp[tcpflags] & tcp-push != 0'

Alle TCP-Flags auf 0x01 prüfen

Erfasst Pakete mit exakt diesem Flagwert.

  • tcpdump -i enp0s3 'tcp[tcpflags] = 0x01'

Keine TCP-Flags gesetzt

Filtert Pakete ohne gesetzte Flags.

  • tcpdump -i enp0s3 'tcp[tcpflags] = 0x00'

SYN/ACK-Kombination prüfen

Zeigt Pakete mit SYN- und ACK-Flag.

  • tcpdump -i enp0s3 'tcp[tcpflags] = 0x12'

SYN/RST-Kombination prüfen

Filtert Pakete mit SYN- und RST-Flag.

  • tcpdump -i enp0s3 'tcp[tcpflags] = 0x14'

SYN/FIN-Kombination prüfen

Erkennt gleichzeitigen Aufbau/Abbau.

  • tcpdump -i enp0s3 'tcp[tcpflags] = 0x11'

PSH/ACK-Kombination prüfen

Zeigt Pakete mit aktiver Datenübertragung.

  • tcpdump -i enp0s3 'tcp[tcpflags] = 0x18'

Spezielle IP-Header-Felder

IP-Fragmentierung prüfen

Zeigt fragmentierte Pakete.

  • tcpdump -i enp0s3 'ip[6:2] & 0x1fff != 0'

TTL-Wert 128 prüfen

Filtert Pakete mit Time-To-Live 128.

  • tcpdump -i enp0s3 'ip[8] = 128'

DSCP-Wert prüfen

Zeigt Pakete mit Differentiated Services Code Point 46.

  • tcpdump -i enp0s3 'ip[1] & 0xfc >> 2 = 46'

ECN-Wert prüfen

Filtert Pakete mit Explicit Congestion Notification 3.

  • tcpdump -i enp0s3 'ip[1] & 0x03 = 3'

TCP-Sequenzdaten

TCP-Sequence-Number prüfen

Zeigt Pakete mit Sequenznummer 12345678.

  • tcpdump -i enp0s3 'tcp[4:4] = 12345678'

TCP-Acknowledgement-Number prüfen

Zeigt Pakete mit ACK-Nummer 87654321.

  • tcpdump -i enp0s3 'tcp[8:4] = 87654321'

Quellportbereich prüfen

Filtert TCP-Pakete mit Quellport zwischen 1024 und 65535.

  • tcpdump -i enp0s3 'tcp[0:2] > 1023 and tcp[0:2] < 65536'

Zielportbereich prüfen

Filtert TCP-Pakete mit Zielport zwischen 1024 und 65535.

  • tcpdump -i enp0s3 'tcp[2:2] > 1023 and tcp[2:2] < 65536'