it-swarm.com.de

Wie erfasse ich Bestätigungs- oder Syn-Pakete mit Tcpdump?

Ich möchte eine Filterregel verwenden, um nur Bestätigungs- oder Syn-Pakete zu erfassen. Wie mache ich das?

53
larry

Die für tcpdump verwendete pcap-Filtersyntax sollte beim Wireshark-Capture-Filter genauso funktionieren.

Mit tcpdump würde ich einen Filter wie diesen verwenden.

tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"

Schauen Sie sich die tcpdump-Manpage an und achten Sie genau auf die tcpflags.

Lesen Sie auch die Abschnitte im Wireshark-Wiki über Erfassungs- und Anzeigefilter. Leider verwenden die beiden Filtertypen eine völlig unterschiedliche Syntax und unterschiedliche Namen für dieselbe Sache.

Wenn Sie einen Anzeigefilter anstelle eines Erfassungsfilters wünschen, müssen Sie wahrscheinlich einen Ausdruck erstellen, der tcp.flags.ack und tcp.flags.syn kombiniert. Ich bin jedoch mit Capture-Filtern weitaus besser vertraut, daher müssen Sie das selbst herausfinden.

86
Zoredache

Während die Antwort von @ Zoredache Nizza und vollständig ist, beachten Sie, dass diese Syntax alle Pakete liefert, für die das Flag TCP SYN oder TCP ACK) gesetzt ist, einschließlich der Pakete, die sind nicht nur reine "TCP SYN" - oder "TCP ACK" -Pakete, da für sie auch andere Flags gesetzt sind. Dies kann oder kann nicht das sein, was Sie (oder zukünftige Leser) beabsichtigt haben. Zum Beispiel das Die Syntax erfasst auch TCP SYN-ACK-Pakete, TCP FIN-ACK usw. Wenn Sie möchten nur TCP SYN oder TCP ACK-Pakete (dh NUR eines dieser Flags)) lautet die richtige Syntax für den Erfassungsfilter:

'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'

Gleichwertig:

'tcp[13] == 2 or tcp[13] == 16'

Prost!

16
JJC
tcpdump 'tcp[13] = 3'

http://danielmiessler.com/study/tcpdump/

Erweitert

Sie können auch nach bestimmten Teilen eines Pakets filtern und mehrere Bedingungen zu Gruppen zusammenfassen. Ersteres ist nützlich, wenn Sie beispielsweise nur nach SYNs oder RSTs suchen, und letzteres, um die Verkehrsisolation noch weiter zu verbessern.

UAP RSF

[Hinweis: Ein Anagramm für die TCP Flags: Ungelernte Angreifer belästigen echte Sicherheitsleute]

ihr Memo: ...

Zeig mir alle DRINGENDEN (URG) Pakete ...

tcpdump 'tcp[13] & 32 != 0'

Zeigen Sie mir alle ACKNOWLEDGE (ACK) -Pakete ...

tcpdump 'tcp[13] & 16 != 0'

Zeig mir alle Push (PSH) Pakete ...

tcpdump 'tcp[13] & 8 != 0'

Zeig mir alle RESET (RST) Pakete ...

tcpdump 'tcp[13] & 4 != 0'

Zeigen Sie mir alle SYNCHRONIZE (SYN) -Pakete ...

tcpdump 'tcp[13] & 2 != 0'

Zeig mir alle FINISH (FIN) Pakete ...

tcpdump 'tcp[13] & 1 != 0'

Zeigen Sie mir alle SYNCHRONIZE/ACKNOWLEDGE (SYNACK) -Pakete ...

tcpdump 'tcp[13] = 18'

[ Hinweis: Nur die PSH, RST, SYN und FIN Flags werden in der Flag-Feldausgabe von tcpdump angezeigt. URGs und ACKs werden angezeigt, aber sie werden an anderer Stelle in der Ausgabe und nicht im Feld flags angezeigt.]

12
castet

Ich habe ein Skript erstellt, um die besten "Synner" zu sehen. Dafür betrachte ich nur das anfängliche Syn-Paket (das erste Paket des Handshakes mit drei Paketen). Das heißt, syn = 1, ack = 0

while :; do
  date; 
  tcpdump -i eth1 -n -c 100 \
  'tcp[tcpflags] & (tcp-syn) != 0' and 
  'tcp[tcpflags] & (tcp-ack) == 0' 2> /dev/null \
  | awk '{ print $3}' \
  | sort | uniq -c | sort | tail -5;
  echo;
  sleep 1
done
9
edward

Ich wollte selbst nur SYN-Pakete erhalten und habe den folgenden Befehl verwendet:

tcpdump -i eth7 'tcp[13] & 2 != 0'

Dies sollte sofort für Sie funktionieren.

4
Sidharth

es sollte sie ohne Filter oder Argumente anzeigen.

1
Ablue