Tcpdump grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Optionenübersicht=
+
=Benutzung=
 +
Standartmäß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:
  
{| class="wikitable"
+
Da tcpdump viel zuviele Pakete aufzeichnet um in Echtzeit etwas damit anfangen zu können muss man es über Optionen steuern.
! Option !! Beschreibung !! Beispiel
+
 
 +
==Optionen==
 +
{| Border=1 Cellpadding=2
 +
|'''-s'''
 +
|'''s'''ize
 +
|Legt die Maximale Größe der abgefangenen Pakete fest. Empfohlener Wert is 1500 bytes, das entspricht der maximalen Paketgröße eines IP-Pakets
 +
|-
 +
|'''-c'''
 +
|'''c'''ount
 +
|Bestimmt die Anzahl an Paketen die abgefangen werden sollen
 +
|-
 +
|'''-w'''
 +
|'''w'''rite
 +
|Speichert die Ausgabe in einer Datei. Da tcpdump eine Menge Daten abfängt, ist es oft ratsam die Daten in einer Datei unterzubringen
 +
|-
 +
|'''-r'''
 +
|'''r'''ead
 +
|Liest mit tcpdump erstellte Dateien
 
|-
 
|-
| -i || Interface angeben || tcpdump -i eth0
+
|'''-n'''
| -D || Verfügbare Interfaces auflisten || tcpdump -D
+
|'''n'''umeric
| -n || Keine DNS-Auflösung (schneller) || tcpdump -n
+
|Versucht nicht IP-Adressen in Hostnamen umzuwandeln, das '''beschleunigt die Ausgaberate erheblich'''
| -s 0 || Ganze Pakete erfassen || tcpdump -s 0
+
|-
| -c 100 || Nach 100 Paketen abbrechen || tcpdump -c 100
+
|'''-t'''
| -w DATEI || Mitschnitt speichern || tcpdump -w capture.pcap
+
|'''t'''ime
| -r DATEI || Mitschnitt aus Datei lesen || tcpdump -r capture.pcap
+
|Entfernt den Zeitstempel am Anfang jedes Pakets. Steigert die Übersichtlichkeit fals man nicht an Zeitstempeln interessiert ist
| -A || ASCII-Daten anzeigen || tcpdump -A port 80
+
|-
| -v / -vv / -vvv || Detailtiefe (Verbose) erhöhen || tcpdump -vvv -i eth0
+
|'''-i'''
| -e || Ethernet-Header mit anzeigen || tcpdump -e
+
|'''i'''nterface
| -t || Zeitstempel unterdrücken || tcpdump -t
+
|Hört das angegebene Interface ab.
 +
|-
 +
|'''-A'''
 +
|'''A'''SCII
 +
|Zeigt die Pakete ohne ihre Header in ASCII an
 +
|-
 +
|'''-D'''
 +
|'''D'''evices
 +
|Zeigt eine Liste der Netwerkschnittstellen an auf denen tcpdump laufen könnte
 +
|-
 +
|'''-e'''
 +
|'''e'''thernet
 +
|Zeigt den Ethernet Header jedes Pakets an
 +
|-
 +
|'''-i'''
 +
|'''i'''nterface
 +
|Tcpdump benutzt das angegebene Interface ( -i eth0 )
 +
|-
 +
|'''-p'''
 +
|'''p'''romiscuous
 +
|Tcpdump fängt nur Pakete ab die auch für den Rechner bestimmt sind
 +
|-
 +
|'''-q'''
 +
|'''q'''uick
 +
|Zeigt weniger Protokoll-Informationen
 +
|-
 +
|'''-v'''
 +
|'''v'''erbose
 +
|Zeigt mehr Informationen an, steigerbar bis '''-vvv'''
 
|}
 
|}
  
=Filterübersicht (BPF Syntax)=
+
==Filter==
  
{| class="wikitable"
+
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:
! Filterausdruck !! Beschreibung
+
 
 +
==Optionen==
 +
{| border=1 cellpadding=2
 +
!Filter
 +
!Match
 +
|-
 +
|host IP
 +
|IP-Adresse
 +
|-
 +
|port PORT
 +
|Port-Nummer
 +
|-
 +
|net NET/CIDR
 +
|Netz und Netznummer in CIDR Schreibweise
 
|-
 
|-
| host 192.168.1.100 || Alle Pakete zu/von Host
+
|src <nowiki>(host IP|port PORT|net NET/CIDR)</nowiki>
| src host 192.168.1.100 || Nur Pakete vom Host
+
|Quellen IP-Adresse, Port-Nummer oder Netz
| dst host 192.168.1.100 || Nur Pakete zum Host
+
|-
| port 80 || Pakete mit Port 80 (TCP/UDP)
+
|dst <nowiki>(host IP|port PORT|net NET/CIDR)</nowiki>
| src port 443 || Quellport 443
+
|Ziel IP-Adresse,Port-Nummer oder Netz
| dst port 22 || Zielport 22
+
|-
| net 192.168.1.0/24 || Pakete im Subnetz
+
|! oder not
| portrange 1000-2000 || Portbereich
+
|Negation
| tcp || Nur TCP-Verkehr
+
|-
| udp || Nur UDP-Verkehr
+
|&& oder and
| icmp || Nur ICMP-Verkehr (Ping etc.)
+
|Und Verknüpfung
| and, or, not || Logische Filterverknüpfung
+
|-
| 'tcp[tcpflags] & tcp-syn != 0' || Nur TCP-SYN-Pakete
+
|<nowiki>||</nowiki> oder or
| 'ip[8] = 128' || Pakete mit TTL = 128
+
|Oder Verknüpfung
 
|}
 
|}
 
=Beispielbefehle für Analyse mit tcpdump=
 
 
*Alle Pakete auf eth0 erfassen:
 
tcpdump -i eth0
 
 
*Verkehr zu/von 192.168.1.100:
 
tcpdump host 192.168.1.100
 
 
*Nur Verkehr zu Port 443:
 
tcpdump dst port 443
 
 
*Nur ICMP-Pakete (Ping etc.):
 
tcpdump icmp
 
 
*Verkehr von Subnetz 192.168.1.0/24:
 
tcpdump net 192.168.1.0/24
 
 
*Nur TCP-Pakete mit gesetztem SYN-Flag:
 
tcpdump 'tcp[tcpflags] & tcp-syn != 0'
 
 
*Nur Pakete mit TTL = 128:
 
tcpdump 'ip[8] = 128'
 
 
*Verkehr von 192.168.1.100 auf Port 80 oder 443:
 
tcpdump src host 192.168.1.100 and \( port 80 or port 443 \)
 
 
*Verkehr ohne ICMP:
 
tcpdump not icmp
 
 
*Mitschnitt in Datei schreiben:
 
tcpdump -i eth0 -s 0 -w traffic.pcap
 
 
*Mitschnitt aus Datei lesen:
 
tcpdump -r traffic.pcap
 
 
*HTTP-Verkehr sichtbar machen (ASCII):
 
tcpdump -A port 80
 
 
*Verkehr von/zu MAC-Adresse:
 
tcpdump ether host 11:22:33:44:55:66
 
 
*Nur Pakete mit gesetztem PSH-Flag:
 
tcpdump 'tcp[tcpflags] & tcp-push != 0'
 
 
*Pakete mit TCP-ACK:
 
tcpdump 'tcp[tcpflags] & tcp-ack != 0'
 
 
*TCP-Verkehr mit Sequenznummer 12345678:
 
tcpdump 'tcp[4:4] = 12345678'
 
 
*TCP-Verkehr mit ACK-Nummer 87654321:
 
tcpdump 'tcp[8:4] = 87654321'
 
 
*TCP-Quellport im Bereich 1024–65535:
 
tcpdump 'tcp[0:2] > 1023 and tcp[0:2] < 65536'
 
 
*TCP-Zielport im Bereich 1024–65535:
 
tcpdump 'tcp[2:2] > 1023 and tcp[2:2] < 65536'
 

Aktuelle Version vom 10. Mai 2025, 08:55 Uhr

Benutzung

Standartmäß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