Tcpdump Tutorial
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'