Tcpdump
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.
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.
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 | Schneidet Pakete mit, die entweder auf Quell- oder auf Ziel-Seite den angegebenen Port besitzen. |
portrange | 0-65535 | Schneidet Pakete mit, 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
Weblinks
- https://www.xinux.net/index.php/Tcpdump_grundlagen
- https://www.xinux.net/index.php/Tcpdump_beispiele
- http://mikiwiki.org/wiki/tcpdump
- https://mirrors.deepspace6.net/Linux+IPv6-HOWTO-de/examples-tcpdump.html
- https://wiki.ubuntuusers.de/tcpdump/
- https://de.wikipedia.org/wiki/Tcpdump
- https://hackertarget.com/tcpdump-examples/
- https://www.howtoforge.com/linux-tcpdump-command/
- https://www.howtoforge.de/anleitung/linux-tcpdump-command-tutorial-fr-anfnger-8-beispiele/