Tcpdump Packet Filtering

Tcpdump bietet zahlreiche Filtermöglichkeiten, um den erfassten Netzwerkverkehr effizient zu analysieren. Diese Filter helfen, nur relevante Pakete zu extrahieren, was sowohl den Platzbedarf für gespeicherte PCAP-Dateien reduziert als auch die Verarbeitungsgeschwindigkeit steigert. Dies ist besonders in großen Netzwerken von Vorteil, da unnötige Informationen herausgefiltert werden können, bevor sie auf die Festplatte geschrieben werden.

Wichtige Filteroptionen

Tcpdump unterstützt eine Vielzahl von Filtern, um den Netzwerkverkehr gezielt einzugrenzen. Diese Filter können auf Protokolle, Hosts, Ports und Paketgrößen angewendet werden. Es gibt grundlegende Filter, wie das Filtern nach Host oder Port, aber auch fortgeschrittene Optionen wie das Filtern bestimmter TCP-Flags oder Paketgrößen.

Filter
Beschreibung

host

Filtert den Verkehr von und zu einem spezifischen Host. Bidirektional.

src / dst

Bestimmt den Quell- oder Zielhost oder -port für den Filter.

net

Filtert den Verkehr für ein bestimmtes Netzwerk, z.B. 192.168.1.0/24.

proto

Filtert nach bestimmten Protokollen (z.B. tcp, udp, icmp).

port

Filtert Pakete nach einem bestimmten Port, z.B. port 80 (bidirektional).

portrange

Filtert einen Bereich von Ports, z.B. portrange 1000-2000.

less / greater

Filtert Pakete, die kleiner oder größer als eine bestimmte Größe sind.

and / or

Kombiniert zwei Filter mit logischen Operatoren (and / or).

not

Negiert den Filter, d.h., es werden alle Pakete außer den spezifizierten gefiltert.

Beispiele für die Nutzung von Filtern

1. Host-Filter

Um den Netzwerkverkehr für einen bestimmten Host zu erfassen, kann der host-Filter verwendet werden:

$ sudo tcpdump -i eth0 host 192.168.1.10

Dieser Befehl filtert alle Pakete, die von oder zu der IP-Adresse 192.168.1.10 gesendet werden.

2. Quell- und Ziel-Filter

Um nur den Verkehr von einem bestimmten Quell-Host zu filtern, kann man src verwenden:

$ sudo tcpdump -i eth0 src host 192.168.1.10

Oder um nur den Verkehr zu einem Ziel-Host zu erfassen:

$ sudo tcpdump -i eth0 dst host 192.168.1.10

3. Protokoll-Filter

Zum Filtern von Paketen basierend auf einem spezifischen Protokoll wie UDP:

$ sudo tcpdump -i eth0 udp

Oder um nur TCP-Pakete zu erfassen:

$ sudo tcpdump -i eth0 tcp

4. Port-Filter

Um den Netzwerkverkehr auf einen bestimmten Port zu beschränken, etwa Port 80 für HTTP-Traffic:

bashCode kopieren$ sudo tcpdump -i eth0 port 80

Dies zeigt alle HTTP-Pakete auf dem Port 80. Es kann auch für Quell- oder Ziel-Ports verwendet werden:

$ sudo tcpdump -i eth0 src port 22

oder

$ sudo tcpdump -i eth0 dst port 443

5. Paketgrößen-Filter

Um nur Pakete größer als 500 Bytes zu erfassen, verwendet man:

$ sudo tcpdump -i eth0 greater 500

Für Pakete kleiner als 64 Bytes:

$ sudo tcpdump -i eth0 less 64

6. Kombination von Filtern mit and und or

Um alle TCP-Pakete von einem bestimmten Host und auf einem bestimmten Port zu erfassen:

$ sudo tcpdump -i eth0 host 192.168.1.10 and tcp port 80

Oder um alle Pakete von Host 192.168.1.10 oder auf Port 443 zu erfassen:

$ sudo tcpdump -i eth0 host 192.168.1.10 or port 443

7. Negierung von Filtern

Um alle Pakete außer ICMP-Paketen zu erfassen, kann der not-Filter verwendet werden:

$ sudo tcpdump -i eth0 not icmp

Spezielle Filterbeispiele

TCP-Flags-Filter

Um nach TCP-SYN-Paketen zu filtern (häufig bei Verbindungsaufbau):

$ sudo tcpdump -i eth0 'tcp[13] & 2 != 0'

Dieser Filter prüft, ob das SYN-Flag im TCP-Header gesetzt ist.

IP-Bereiche und Netzwerk-Filter

Um den gesamten Verkehr für ein Netzwerksegment zu erfassen, z.B. 192.168.1.0/24:

$ sudo tcpdump -i eth0 net 192.168.1.0/24

Portbereich-Filter

Um Pakete für einen bestimmten Bereich von Ports zu erfassen, z.B. zwischen 1000 und 2000:

$ sudo tcpdump -i eth0 portrange 1000-2000

Filter vor oder nach der Erfassung anwenden

Vor der Erfassung:

Filter können direkt während der Erfassung angewendet werden, um nur relevante Pakete zu speichern. Dies reduziert die Dateigröße und erhöht die Effizienz, indem unnötige Pakete ausgeschlossen werden:

$ sudo tcpdump -i eth0 host 192.168.1.10 -w capture.pcap

Nach der Erfassung:

Filter können auch nach der Erfassung auf eine PCAP-Datei angewendet werden, ohne die Daten endgültig zu verändern:

$ sudo tcpdump -r capture.pcap host 192.168.1.10

Tipps und Tricks

  • Der Schalter -X zeigt den Paketinhalt in ASCII und Hex an, was besonders nützlich ist, wenn Sie den Inhalt des Pakets untersuchen möchten.

  • Der Schalter -S zeigt absolute Sequenznummern an, während Tcpdump standardmäßig relative Nummern anzeigt.

  • Verwenden Sie -A, um den Inhalt des Pakets nur in ASCII darzustellen.

  • Kombinieren Sie Tcpdump mit anderen Tools wie grep, um gezielt Informationen aus einem Capture herauszufiltern:

    $ sudo tcpdump -r capture.pcap -l | grep "password"

Tcpdump ist ein leistungsfähiges Tool, das durch die geschickte Verwendung von Filtern eine präzise Analyse des Netzwerkverkehrs ermöglicht.

Last updated