Praktische Tcpdump-Beispiele?

30581
LanceBaynes

Ich möchte möglichst viele tcpdump-Beispiele sammeln!

ZB: wie man FTP-Passwörter auf eth0 filtert; ODER wie Sie HTTP 404-Fehler filtern usw.

6

5 Antworten auf die Frage

4
shiftycow

Es wird keine Filterung durchgeführt, aber in diesem Beispiel wird ein praktischer kontinuierlicher Paket-Sniffer erstellt:

tcpdump -n -C 128 -W 100 -z /home/user/compress_logs.pl -i br0 -w /home/user/packetlogs/packetlog.pcap & 
  • -n IP-Adressen nicht umkehren, Portnummern nicht in Textbeschreibungen konvertieren, MAC-Adressen nicht in Namen usw. konvertieren.
  • -C 128 Drehen Sie die Erfassungsdateien alle 128.000.000 Bytes
  • -W 100Begrenzen Sie die Anzahl der rotierten Capture-Dateien (siehe -C) auf 100
  • -z /home/user/compress_logs.plSkript compress_logs.plfür jede gedrehte Capture-Datei ausführen
  • -i br0 auf Schnittstelle erfassen br0
  • -w /home/user/packetlogs/packetlog.pcap Dateiname verwenden /home/user/packetlogs/packetlog.pcap
  • &dies wird von bash analysiert; gibt an, dass der Befehl im Hintergrund (asynchron) ausgeführt werden soll

Setzen Sie es in /etc/rc.local, um es beim Booten auszuführen. Es erfasst alle Pakete auf der Schnittstelle br0, bei der es sich um zwei Schnittstellen handeln kann, die als Tap oder zwei mit einem passiven Tap verbundene Schnittstellen oder eine Schnittstelle mit einem gespiegelten Switch-Port verbunden sind (in der Praxis habe ich alle drei verwendet).

Es schreibt ~ 128 MB-Dateien und dreht bis zu 100 davon automatisch. Wenn 128 MB Daten erfasst werden, wird die Datei geschlossen, eine neue geöffnet und der angegebene Befehl mit dem alten Dateinamen als Argument verknüpft - in diesem Fall ein kleines Perl-Skript, das die vorherige Erfassungsdatei komprimiert, um die IDS schneller zu übertragen Server.

Ich verwende dies, wenn ich eine Verbindung längere Zeit überwachen muss (wie ein oder zwei Tage) und zurückgehen muss, um ein Ereignis zu finden, das zu einer bestimmten Zeit aufgetreten ist. Die kleinen Dateien sind in Wireshark viel einfacher zu handhaben als eine große pcap-Datei.

diese sind die besten bis jetzt :) LanceBaynes vor 13 Jahren 0
4
Code Bling

Erfassen Sie nur HTTP-POST-Daten:

tcpdump tcp[2:2] = 80 and \(tcp[20:4] = 1347375956  or tcp[24:4] = 1347375956  or tcp[28:4] = 1347375956  or tcp[32:4] = 1347375956  or tcp[36:4] = 1347375956  or tcp[40:4] = 1347375956  or tcp[44:4] = 1347375956  or tcp[48:4] = 1347375956  or tcp[52:4] = 1347375956  or tcp[56:4] = 1347375956  or tcp[60:4] = 1347375956\) 

Ein bisschen unhandlich, aber sicherlich nützlich. tcp[2:2]erfasst ab Position 2 des TCP-Headers 2 Byte (Port, Port 80 für HTTP-Verkehr).

Dann wollen wir die ersten 4 Byte TCP-Daten mit 'POST' vergleichen. Der TCP-Header besteht aus mindestens 20 (dezimalen) Bytes. Da die TCP-Optionen jedoch von variabler Länge sind (von 0 bis 40 Bytes (bis zu einer 32-Bit-Grenze aufgefüllt und beginnend bei), müssen alle 4 Bytes von 20 bis 60 getestet werden ( Dezimal). Schließlich 1347375956ist die big-endian-Binärdarstellung des ASCII-Textes 'POST' in base10. Verwenden Sie die folgenden Werte für andere HTTP-Typen:

  • GET 1195725856(enthält den Platz nach 'GET', der benötigt wird, weil wir mit 4 Bytes vergleichen)
  • POST 1347375956
  • PUT 1347769376(enthält Leerzeichen)
  • DELETE 1145392197(eigentlich nur "DELE")

Für andere Typen konvertieren Sie die 4 ASCII-Zeichen in Hexadezimalzeichen (Sie müssen genau 4 Zeichen verwenden), behandeln dann die Hexadezimalzeichen als eine Zahl und konvertieren sie in Dezimalzahlen. Zum Beispiel ist POST 50 4f 53 54. 504f5354konvertiert in dezimal ist 1347375956.

1
Spiff

Erfassen Sie alles in einer Datei (damit Sie es später mit Wireshark oder etwas anderem analysieren können):

sudo tcpdump -i en0 -s0 -w ~/capture.pcap 
  • -i en0 auf Schnittstelle erfassen en0
  • -s0 benutze das ganze Paket (nicht abschneiden - snarf 0)
  • -w ~/capture.pcap in die Paketaufzeichnungsdatei schreiben ~/capture.pcap
1
Code Bling
Wireshark hat ein sehr nützliches Tool zum Erstellen von Filtern bereitgestellt: https://www.wireshark.org/tools/string-cf.html NathanChristie vor 9 Jahren 0
0
LanceBaynes

Wenn Sie Client-DNS-Anforderungen auf einem OpenWRT-Router überwachen möchten:

tcpdump -n -i br-lan dst port 53 
  • -n IP-Adressen nicht umkehren, Portnummern nicht in Textbeschreibungen konvertieren, MAC-Adressen nicht in Namen usw. konvertieren.
  • -i br-lan auf Schnittstelle erfassen br-lan
  • dst port 53 filtern Sie den Zielport 53, den Port für den DNS-Dienst