Wenn Sie ein Unix- oder Unix-ähnliches Betriebssystem (Linux, Mac OS) haben, können Sie mit tcpdump den Netzwerkverkehr untersuchen. Das Programm tcpdump ist ein Befehlszeilenprogramm, das kostenlos installiert werden kann. Es wird normalerweise nicht in Betriebssysteme integriert, daher müssen Sie es von der tcpdump GitHub-Registrierung oder von der offiziellen tcpdump-Website installieren.
Elemente von tcpdump
Das von tcpdump verwendete Dienstprogramm zur Paketerfassung wird von libpcab bereitgestellt, einer C / C ++ – Bibliothek von Prozeduren. Das Hauptprogramm tcpdump ist die Schnittstelle für den Paketerfassungsprozess. Beim Ausführen wird der libcap-Prozess gestartet, um Pakete zu erfassen und deren Inhalt auf dem Bildschirm anzuzeigen. Sofern beim Programmstart keine Begrenzung für die Anzahl der zu erfassenden Pakete festgelegt wurde, wird das Programm für immer ausgeführt. Die Bearbeitung wird dann durch ein Interrupt-Signal (Control-C) beendet.
Das Programm wird in der Befehlszeile ausgeführt und enthält eine Reihe von Optionen, die durch Flags gekennzeichnet sind. Diese Flags ändern das Verhalten des Programms, um Pakete auszuwählen, die einem bestimmten Muster entsprechen, die Laufzeit zu begrenzen oder gespeicherte Pakete aus einer Datei und nicht von der Netzwerkschnittstelle zu lesen.
Tcpdump-Format
Der Befehl tcpdump kann für sich selbst oder mit Optionen, Parametern und / oder regulären Ausdrücken ausgegeben werden. Keines dieser Elemente ist obligatorisch und die Reihenfolge ist nicht wichtig.
tcpdump <-option_identifier>
Tcpdump-Optionen
Auf den Befehl tcpdump folgen Optionen, die auch als bezeichnet werden Flaggen. Jedes dieser Elemente wird durch einen Bindestrich gefolgt von einem Buchstaben gekennzeichnet. Nachfolgend finden Sie eine Liste dieser Flags.
-EIN Drucken von Paketen in ASCII ohne die Header auf Verbindungsebene
-b Zeigen Sie, dass die AS-Nummer im ASDOT-Format vorliegt
-B Puffergröße in Einheiten von KiB (1024 Byte)
-c Anzahl – das Limit der zu erfassenden Pakete
-C Dateigröße – Der Prozess erstellt eine neue Datei, sobald diese Dateigrößenbeschränkung erfüllt ist. Die Größe beträgt x 1 Million Bytes
-d Sichern Sie den kompilierten Paketvergleichscode in ASCII
-dd Paket-Matching-Code sichern als C Programmfragment
-ddd Sichern Sie den Paket-Matching-Code als Dezimalzahlen, denen eine Zählung vorangestellt ist
-D Alle zugänglichen Schnittstellen auflisten
-e Drucken Sie den Link-Level-Header in jeder Dump-Zeile
-E spi @ ipaddr algo: geheim – zum Entschlüsseln von IPsec-ESP-Paketen:
spi ist der Sicherheitsparameterindex
ipAdr ist die Zieladresse des Pakets
algo ist der Standardalgorithmus des-cbc und das Feld ist optional.
Mögliche Werte sind:
- des-cbc
- 3des-cbc
- Blowfish-cbc
- rc3-cbc
- cast128-cbc
Geheimnis ist der ASCII-Text für den geheimen ESP-Schlüssel. Wenn 0x vorangestellt ist, handelt es sich um einen Hex-Wert
-f Geben Sie “fremde” IPv4-Adressen numerisch und nicht symbolisch aus
-F Datei – verwenden Datei als Eingabe für den Filterausdruck
-G drehen_sekunden – Wenn Sie die Datei mit der Option -w drehen, wird dem Namen ein Zeitstempel hinzugefügt
-h Drucken Sie die Zeichenfolgen tcpdump und libpcap, drucken Sie eine Verwendungsmeldung und beenden Sie das Programm
-H Erkennen von 802.11s-Entwurfs-Mesh-Headern
-ich Schnittstelle – Die Schnittstelle, auf der abgehört werden soll, wird standardmäßig alphabetisch mit dem niedrigsten Namen angegeben
-ich Monitor-Modus | Sofortmodus – Entfernt die Pufferung
-j tstamp_type – Setzen Sie den Zeitstempeltyp für die Aufnahme auf tstamp_type
-J tstamp_precision – Stellen Sie die Genauigkeit des Zeitstempels ein (Mikro oder Nano) Standard ist micro. Wenn tstamp_precision ist null, liste Zeitstempeltypen auf und beende
-K Überprüfen Sie die Prüfsummen nicht
-l Standardzeile gepuffert. Z.B. tcpdump -l | tee dat oder tcpdump -l > dat & Schwanz -f dat
-L Listen Sie die bekannten Datenverbindungstypen für die Schnittstelle im angegebenen Modus auf und beenden Sie sie
-m Modul – Laden Sie die SMI-MIB-Moduldefinitionen aus der Datei Modul.
-M Geheimnis – Gemeinsamer geheimer Wert für die Überprüfung mit der TCP-MD5-Option
-n Konvertieren Sie keine Adressen (d. H. Hostadressen, Portnummern usw.) in Namen
-N Geben Sie die Domainnamen-Qualifikation der Hostnamen nicht aus
-# Geben Sie eine optionale Paketnummer am Anfang der Zeile aus
-Ö Führen Sie den Code-Optimierer für die Paketanpassung nicht aus
-p Versetzen Sie die Benutzeroberfläche nicht in den Promiscuous-Modus
-Q. Richtung – Richtung senden / empfangen. Kann sein im, aus, oder inout
-q Weniger Protokollinformationen drucken
-r Datei – Pakete von lesen Datei. Angeben – für Standardeingabe
-S Gibt absolute TCP-Sequenznummern aus
-s schnappen – Snarf schnappen Bytes aus jedem Paket, nicht die Standard 262144 Bytes
-T Art – interpretiere Pakete wie angegeben Art. Optionen sind:
- aodv Ad-hoc-Distanzvektorprotokoll auf Abruf
- Karpfen Common Address Redundancy Protocol
- cnfp Cisco NetFlow-Protokoll
- lmp Link Management Protocol
- pgm Pragmatisches General Multicast
- pgm_zmtp1 ZMTP / 1.0 innerhalb von PGM / EPGM)
- bzw REdis Serialization Protocol
- Radius RADIUS
- rpc Remote Procedure Call
- rtp Echtzeit-Anwendungsprotokoll
- rtcp Steuerungsprotokoll für Echtzeitanwendungen
- snmp Simple Network Management Protocol
- tftp Trivial File Transfer Protocol
- MwSt Visual Audio Tool
- wb verteilte White Board
- zmtp1 ZeroMQ Message Transport Protocol 1.0
- vxlan Virtuelles erweiterbares lokales Netzwerk
-t Drucken Sie keinen Zeitstempel auf jede Dump-Zeile
-tt Drucken Sie den Zeitstempel als Offset seit dem 1. Januar 1970 auf jeder Speicherauszugszeile
-ttt Gibt ein Delta (Mikrosekundenauflösung) zwischen der aktuellen und der vorherigen Zeile aus
-tttt Drucken Sie einen Zeitstempel: Datum, Stunde, Minute, Sekunde auf jeder Dump-Zeile
-ttttt Drucken Sie ein Delta (Mikrosekundenauflösung) zwischen der aktuellen und der ersten Zeile
-u Undekodierte NFS-Handles drucken
-U Paket gepuffert
-v Etwas ausführlichere Ausgabe
-vv Ausführlichere Ausgabe
-vvv Die ausführlichste Ausgabe
-V Datei – Lesen Sie eine Liste der Dateinamen aus Datei. Standardeingabe wird verwendet, wenn Datei ist –
-w Datei – Ausgabe schreiben an Datei
-W Grenze – Die maximale Anzahl von Dateien, die von der -C und -G Optionen
-x Drucken Sie die Daten jedes Pakets abzüglich seines Link-Level-Headers in hexadezimaler Form
-xx Drucken Sie die Daten jedes Pakets, einschließlich Der Link Level Header in hex
-X Drucken Sie die Daten jedes Pakets abzüglich seines Link-Level-Headers in Hex und ASCII
-XX Drucken Sie die Daten jedes Pakets, einschließlich den Link Level Header in hex und ASCII.
-y Datentyp – Legen Sie den Datenverbindungstyp fest, der beim Erfassen von Paketen verwendet werden soll Datentyp
-z postrotate-befehl – Speichern von Dateien in der Regel mit Komprimierung verarbeiten, z -z gzip
-Z Benutzer – Ändern Sie die Benutzer-ID in Benutzer und die Gruppen-ID der primären Gruppe von Benutzer
Tcpdump-Parameter
Die Parameter für tcpdump sind auch bekannt als Primitive. Diese geben an, ob die Paketerfassung nur Daten von bestimmten Hosts erhalten soll. Diese Parameter können auch mit den Booleschen Operatoren als Bedingungen ausgedrückt werden und, oder, und nicht. Sie brauchen kein Gleichheitszeichen (=) zwischen dem Parameternamen und seinem Wert zu setzen, und Sie müssen keine Parameter mit Interpunktion setzen. In jedem Fall brauchen Sie nur ein Leerzeichen.
Der am häufigsten verwendete dieser Parameter ist Host, mit dem Sie die Erfassung auf Übertragungen von nur einer Quelle beschränken können. In jedem Fall kann ein Gerätename als Parameterwert durch seine Adresse ersetzt werden. Wo ein Parameter a hat dst Diese Variante beschränkt die Ausgabe auf Pakete, die dieses Attribut für das Ziel haben. Parameter, die enthalten src Suchen Sie nach Paketen mit dem angegebenen Wert in Daten, die sich auf ihren Ursprung beziehen.
Hier sind die Parameteroptionen:
Wirt Hostname – ebenfalls dst Host oder src host.
Kann auch mit vorangestellt werden ip, arp, oder rarp
Äther ehost – Wert aus / etc / ether oder einer Zahl. Ebenfalls ether src und Äther dest.
Tor Wirt – Pakete abrufen, die das Gateway durchlaufen haben Wirt
Netz network_num – Quell- oder Ziel-IP enthält network_num Ebenfalls dst net und src net
Hafen Nummer | Name – ebenfalls dst port und src port. Kann sein mit tcp oder udp Protokoll zu begrenzen
ip proto Protokoll – IP-Pakete des genannten Protokolls erfassen. Der Name muss in / etc / protocols stehen
Äther Proto Protokoll – Erfassen eines Pakets des Ether-Protokolltyps. Optionen für Protokoll sind eine Zahl oder:
- ip
- ip6
- arp
- rarp
- ein Gespräch
- atalkarp
- decnet
- decdts
- decdns
- Lanbridge
- lat
- mopdl
- moprc
- Welpe
- sca
- Sprite
- stp
- vexp
- vprod
- xns
Übertragung Erfasst Ethernet-Broadcast-Pakete. Auch geschrieben als Äther ausgestrahlt
ip sendung Erfasst IP-Broadcast-Pakete
Multicast Erfasst Ethernet-Multicast-Pakete. Auch als Ether Multicast geschrieben
IP-Multicast Erfasst IP-Multicast-Pakete
Decnet-Host Hostname – Wenn entweder die DECNET-Quelle oder das DECNET-Ziel ist Hostname
decnet src Hostname – erfassen, ob DECNET-Quelle ist Hostname
decnet dst Hostname – erfassen, ob DECNET-Ziel ist Hostname
WLAN-Host ehost – Wenn die erste, zweite, dritte oder vierte IEEE 802.11-Adresse lautet ehost
wlan addr1 ehost – Erfassen, ob die erste IEEE 802.11-Adresse lautet ehost
wlan addr2 ehost – Erfassen, ob die zweite IEEE 802.11-Adresse lautet ehost
wlan addr3 ehost – Erfassen, ob die dritte IEEE 802.11-Adresse lautet ehost
wlan addr4 ehost – Wenn die vierte IEEE 802.11-Adresse lautet ehost. Wird nur für WDS verwendet
Art Art – Erfassen, ob der Rahmentyp IEEE 802.11 ist Art, das ist eine Zahl oder:
- Daten
- mgt
- ctl
Untertyp Untertyp – Erfassen, ob der IEEE 802.11-Frame ist Untertyp, das ist eine Zahl oder:
- Assocreq
- assocresp
- Neuordnung
- reassocresp
- probereq
- proberesp
- Leuchtfeuer
- atim
- disassoc
- auth
- deauth
- Daten
dir dir – Erfassen, ob die IEEE 802.11-Frame-Richtung ist dir, das ist eine Zahl oder:
- nickt
- tods
- fromds
- dstods
Tcpdump Ausdruck
Das Expressions-Segment eines tcpdump-Befehls gibt Ihnen die Möglichkeit, Ihre Paketauswahl ein wenig zu programmieren. Im Gegensatz zu einem normalen Programm muss dieser Befehlssatz jedoch in einer Zeile geschrieben werden. Wenn Sie häufig mit Unix oder Linux arbeiten, sind Sie an die regulären Ausdrücke von Shell-Skripten gewöhnt und sollten keine Probleme haben, das Format dieser Filter zu verstehen.
Pakete, die den durch den Ausdruck festgelegten Test erfüllen, werden erfasst. Das Ergebnis jedes Ausdrucks muss also “wahr” sein.
Es gibt einige Ausdrucksbedingungen, die in Shell-Skripten im Allgemeinen nicht vorkommen. Diese sind nachfolgend aufgeführt:
len
Dies gibt die Länge eines Pakets zurück. Anwendungsbeispiel: len! = 5.
proto [Ausdruck: Größe]
In diesem Objekt:
proto ist der Name einer Protokollschicht. Es kann sein:
- Äther
- fddi
- ip
- arp
- rarp
- tcp
- udp
- icmp
ausdr ist der Byte-Offset. Dies muss eingeschlossen werden, kann aber mit 0 angegeben werden, um den Wert vom Anfang des Objekts zu übernehmen.
Größe ist optional und gibt die Anzahl der Bytes in der Option an. Der Standardwert ist 1, er kann aber auch 2, 3 oder 4 sein.
Anwendungsbeispiele:
Äther [0] & 1! = 0 gilt für den gesamten Multicast-Verkehr.
ip [0] & 0xf! = 5 gilt für alle IP-Pakete mit Optionen.
ip [6: 2] & 0x1fff = 0 gilt für unfragmentierte Datagramme und Fragment Null fragmentierter Datagramme.
Tcpdump-Beispiele
In all diesen Fällen werden die Ergebnisse des Befehls auf dem Bildschirm angezeigt, es sei denn, eine dateibezogene Option ist enthalten oder der Befehl wird mit einer Stand-Ausgabeumleitung oder einer Pipe zu einer Datei gestartet.
Zeigen Sie Pakete an, die von oder zu dem Computer gesendet werden, der als lab1 identifiziert wurde:
tcpdump host lab1
Zeigen Sie alle IP-Pakete an, die zwischen lab1 und einem anderen Knoten als dem Empfang übertragen werden:
tcpdump ip host lab1 und nicht empfang
Zeigen Sie den gesamten FTP-Verkehr über das Internet-Gateway styx an:
tcpdump “Gateway styx und (Port ftp oder ftp-Daten)”
Zeigen Sie die SYN- und FIN-Pakete jeder TCP-Konversation an, an der ein nicht lokaler Host beteiligt ist:
tcpdump ‘tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 und nicht src und dst net localnet
Anzeigen von IP-Broadcast- oder Multicast-Paketen, die nicht über Ethernet-Broadcast oder Multicast gesendet wurden:
tcpdump ‘ether [0] & 1 = 0 und ip [16] >= 224 “
Tcpdump Ausgabeformat
Das zum Schreiben von Paketen in Dateien verwendete Aufzeichnungsformat ist zu einem Standard geworden, der von vielen neueren Paketsniffern und Verkehrsanalysatoren übernommen wurde.
Der Standard ist nicht einfach und wird für jedes Protokoll angepasst. Diejenigen Anwendungen, die das Format übernommen haben, berücksichtigen jedoch auch diese Abweichungen. Das Format wird aufgerufen pcap, Dies ist der Name des Paketerfassungsprozesses, der von tcpdump verwendet wird. Dateien in diesem Format haben normalerweise die .pcap Erweiterung.
Tcpdump für Windows
Es gibt eine Anpassung von tcpdump, die unter Windows ausgeführt wird. Das nennt man WinDump und es verlässt sich auf WinPcap Für die Paketerfassung wird auf die gleiche Weise wie bei tcpdump die pcap-Funktion von libpcap verwendet. WinPcap gehört zur Riverbed Technology. Dieselbe Firma ist der Hauptfinanzierer von Wireshark, dem wahrscheinlich bekanntesten und am weitesten verbreiteten Paketschnüffler der Welt. Es gibt eine drahtlose Version von WinPcap, die aufgerufen wird AirPcap. Sie können WinDump, WinPcap und AirPcap kostenlos von der WinPcap-Website herunterladen.
Paket-Sniffer verwenden
Das Befehlszeilendienstprogramm tcpdump ist nützlich für Benutzer, die mit dem Befehl vertraut sind Unix und Linux Betriebssysteme und genießen Sie das Schreiben von Shell-Skripten. Diejenigen, die nicht so erfahren darin sind, Befehle mit regulären Ausdrücken in der Befehlszeile zusammenzusetzen, werden es schwierig finden, dieses Programm zu verwenden.
Sie haben andere Möglichkeiten, da viele Paket-Sniffer verfügbar sind, wie z. B. Wireshark, das oben erwähnt wurde. Weitere Informationen zu Alternativen zu tcpdump finden Sie in diesem Test von Packet Sniffers.
Hast du einen Lieblingspaketschnüffler? Sind Sie ein Fan von tcpdump oder bevorzugen Sie benutzerfreundlichere Alternativen? Hinterlassen Sie eine Nachricht in der Bemerkungen Abschnitt unten und teilen Sie Ihre Erfahrungen.
Bild: tcpdump Packet Capture von Linux Screenshots über Flickr. Lizenziert unter CC BY 2.0
Als AI-Sprachmodell kann ich keine persönliche Erfahrung mit Unix- oder Unix-ähnlichen Betriebssystemen teilen. Allerdings kann ich sagen, dass tcpdump ein nützliches Werkzeug für die Untersuchung des Netzwerkverkehrs ist. Es ist großartig, dass es kostenlos installiert werden kann, obwohl es normalerweise nicht in Betriebssysteme integriert ist. Die Optionen und Parameter von tcpdump bieten eine Vielzahl von Möglichkeiten, um den Netzwerkverkehr zu analysieren und zu filtern. Es ist auch interessant zu erfahren, dass das Dienstprogramm zur Paketerfassung von libpcap bereitgestellt wird. Insgesamt scheint tcpdump ein leistungsstarkes Werkzeug für die Netzwerkanalyse zu sein.