Tcpdump

Aus Foxwiki

tcpdump ist eine freie Software zur Überwachung und Auswertung von Netzwerkverkehr.

Aufgabe

  • Kann TCP-Pakete, UDP- und ICMP-Pakete mitschneiden.
  • Auswertung von vorher in Dateien gespeicherten Paketen.
  • Fehlersuche in Programmen, die über das Netzwerk kommunizieren.
  • Fehlersuche im Netzwerkaufbau selbst.
  • Aufzeichnung und Darstellung der Kommunikation anderer Benutzer und Computer.
  • Kommunikation zwischen Teilnehmern des Netzwerkes überwachen und mitschneiden.
  • Passwörter und Benutzerdaten aus dem Netzwerk zu erhalten (durch unverschlüsselte Protokoll Übertragungen).

Allgemeines

  • Arbeitet im Textmodus und wird über die Kommandozeile gesteuert.
  • Mitgeschnittenen Pakete können alternativ in der grafischen Oberfläche von Wireshark analysiert werden.
  • Aufgrund des direkten Zugriffs auf Hardware, meistens Root-Rechte benötigt.

Betriebssysteme

  • Verfügbar für die meisten Unix-Systeme und Unix-Derivate.
  • Für Windows steht die Portierung WinDump zur Verfügung.

Entwicklung

  • Wurde von Van Jacobson, Craig Leres und Steven McCanne geschrieben.
  • Wird mittlerweile von vielen anderen weiterentwickelt.

Installation

apt install tcpdump

Benutzung

Wird in einem Terminal mit folgendem Befehl gestartet:

tcpdump [FLAGS] [FILTER-OPTIONEN]
Hinweis

Muss unter Linux mit Root-Rechten ausgeführt werden bzw. das Setuid-Bit gesetzt sein, damit es Pakete mitschneiden kann.

Flags

  • Alle Flags sind optional.
  • Eine vollständige Liste kann man in der Man-Page von tcpdump finden.
Flags von tcpdump
Flag Bedeutung
-D Liste aller sniffbaren Netzwerkinterfaces, wenn gesetzt ignoriert es andere Flags.
-i Interface Welche Netzwerkschnittstelle gesnifft werden soll, falls nicht gesetzt sucht sich tcpdump eine aus (meist die erste LAN-Karte).
-n Keine Hostnamen auflösen, Portnummern nicht durch ihre Dienste ersetzen.
-c Anzahl Nachdem es die angegebene Anzahl Pakete mitgeschnitten hat, beendet sich tcpdump automatisch.
-e Ethernet-Header mitschneiden.
-q Weniger Protokoll-Informationen loggen, Ausgabe wird kleiner.
-v, -vv, -vvv Je mehr v's, desto mehr Information über Pakete werden gespeichert.
-S Absolute statt relative Sequenznummer der Pakete.
-A Inhalt als ASCII-Ausgabe.
-x, -xx Inhalt als Hex-Ausgabe, mit einem x wird der TCP-Header ignoriert.
-X, -XX Inhalt als Hex- und ASCII-Ausgabe, mit einem X wird der TCP-Header ignoriert.
-s Anzahl Anzahl der Bytes pro Paket, die gesnifft werden sollen. Standard sind 65535, wird durch -s 0 gesetzt.
-w Dateiname Schreibt Pakete in die angegebene Datei, diese Pakete sind unformatiert (raw-packets).
Dadurch nicht mit cat oder less lesbar.
Jedoch mit -r Flag einlesbar.
-r Dateiname Liest, formatiert und gibt die Pakete, die mit -w geschrieben wurden, in der Konsole aus.
-Z Benutzer Im Namen eines anderen Benutzers sniffen.

Filteroptionen

  • Eine vollständige Liste kann man in der Man-Page von pcap-filter finden.
  • Mehrere Filterangaben können mit and (alternativ &&), or (alternativ ||) und not (alternativ !) miteinander verknüpft werden
  • Ohne angegebene Optionen wird immer alles mitgeschnitten
    • Keine Hostangabe = alle Hosts.
    • Keine Portangabe = alle Ports.
Filteroptionen von tcpdump
Option Werte Bedeutung
host IP-Adresse (oder auch Hostname) Nur Pakete mitschneiden, die entweder als Quelle oder als Ziel die angegebene IP-Adresse besitzen.
Es kann auch ein Hostname angegeben werden (aber nur, wenn nicht das -n Flag benutzt wird).
net Netzwerk-Bereich in CIDR-Schreibweise Nur Pakete mitschneiden, die entweder als Quelle oder als Ziel eine IP-Adresse aus dem angegebenen Netzwerk-Bereich besitzen.
port eine Zahl von 0 bis 65535 Nur Pakete mitschneiden, die entweder auf Quell- oder auf Ziel-Seite den angegebenen Port besitzen.
portrange 0-65535 Nur Pakete mitschneiden, die entweder auf Quell- oder auf Ziel-Seite einen Port in dem angegebenen Portbereich besitzen.
src host, net, port oder portrange Nur Pakete mitschneiden, die als Quelle den angegebenen Wert besitzen.
dst host, net, port oder portrange Nur Pakete mitschneiden, die als Ziel den angegebenen Wert besitzen.
proto ether, fddi, tr, wlan, ip, ip6,
arp, rarp, decnet, tcp und udp
Netzwerkprotokoll, in dem Pakete mitgeschnitten werden sollen

Beispiele

Netzwerkschnittstellen ausgeben, welche tcpdump sniffen kann:

tcpdump -D

Ersten 68 Bytes von sämtlichen Paketen, die die Netzwerkschnittstelle wlan0 passieren, mitschneiden:

tcpdump -i wlan0 

Alle UDP-Pakete, welche 10.231.11.7 als Ziel haben, mitschneiden:

tcpdump -i wlan0 udp and dst 10.231.11.7 

DNS-Requests und deren Antworten mitschneiden. Die Ausgabe ist dabei auf minimal gestellt:

tcpdump -i wlan0 -q udp port 53

Sowohl HTTP-, als auch HTTPS-Pakete:

tcpdump -i wlan0 -q '(tcp port 80) or (tcp port 443)'

Vorheriges Beispiel raw in die Datei output.dump schreiben:

tcpdump -i wlan0 -q -w output.dump '(tcp port 80) or (tcp port 443)' 

Vorherige Ausgabedatei parsen und Inhalt formatiert ausgeben:

tcpdump -r output.dump

Links

Interne Links

  1. ip
  2. Wireshark

Weblinks

  1. https://www.xinux.net/index.php/Tcpdump_grundlagen
  2. https://www.xinux.net/index.php/Tcpdump_beispiele
  3. http://mikiwiki.org/wiki/tcpdump
  4. https://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/examples-tcpdump.html
  5. https://wiki.ubuntuusers.de/tcpdump/
  6. https://de.wikipedia.org/wiki/Tcpdump
  7. https://hackertarget.com/tcpdump-examples/
  8. https://www.howtoforge.com/linux-tcpdump-command/
  9. https://www.howtoforge.de/anleitung/linux-tcpdump-command-tutorial-fr-anfnger-8-beispiele/