so finden Sie TCP-Streams ohne endgültige ack/fin-Sequenz in einer riesigen Paketerfassungsdatei

Ich habe eine riesige PCAP-Datei, die eine große Anzahl einzelner TCP-Streams enthält.Aber von diesen gibt es einige ungültige Streams, die nicht die endgültige fin/ack-Sequenz haben. Gibt es eine Möglichkeit, nur diese Streams mit Wireshark zu finden ? Gibt es andere Tools, mit denen ich pcaps auf diese Weise durchsuchen kann?

Jede Hilfe wäre willkommen.

Author: woodstok, 2012-03-19

2 answers

Der folgende Befehl druckt jede unvollständige halbe Verbindung.

tcpdump -r pcap-file 'tcp[tcpflags] & (tcp-syn|tcp-fin) > 0' | 
sed -r 's/^.*IP (.*) > (.*):.*$/\1 \2/'|sort|uniq -u

Der Ansatz geht davon aus, dass jedes Socket-Paar während des gesamten Trace nur einmal verwendet wird.

Erklärung

Für eine Verbindung zwischen

IP_A:PORT_A <--> IP_B:PORT_B

Ein tcpdump enthält die Hälften

IP_A:PORT_A > IP_B:PORT_B, and
IP_B:PORT_B > IP_A:PORT_A

Für jede Hälfte muss der Speicherauszug zwei Segmente mit einem SYN-oder FIN-Flag enthalten. Also, was der Comand tut, ist:

  1. Sammle die Segmente, die das SYN oder FIN tragen flag

    tcpdump -r pcap-file 'tcp[tcpflags] & (tcp-syn|tcp-fin) > 0

  2. Aggregieren Sie das Ergebnis durch halbe Verbindung, unabhängig vom tatsächlichen Flag (SYN oder FIN)

    2.1. Sortieren nach halber Verbindung

    sed -r 's/^.*IP (.*) > (.*):.*$/\1 \2/'|sort

    2.2. Zählen Sie die Segmente, die an jeder Halbverbindung beteiligt sind, und filtern Sie alle Halbverbindungen heraus, an denen zwei Segmente korrekt beteiligt sind

    uniq -u

 0
Author: wnrph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-06-29 09:28:35

Hier ist eine andere Möglichkeit, es mit tshark zu tun. Die Idee ist die gleiche wie die Antwort von @artistoex - der Unterschied besteht darin, dass nicht jede halbe Verbindung für sich betrachtet wird und die Ausgabe eine TCP-Stream-Nummer (von Wireshark/Tshark) ist, mit der Sie möglicherweise einfacher arbeiten können, wenn Sie diesen Stream in Wireshark öffnen und dort weiterverarbeiten möchten.

tshark -r pcap_file.pcap -R "tcp.flags & 0x03" -Tfields -etcp.stream | 
sort -n | uniq -c | awk -F ' ' '{ if ($1<4) print $1," ", $2 }'

Der Anzeigefilter macht dasselbe wie der Erfassungsfilter aus der anderen Antwort, er verwendet die Tatsache, dass die SYN-und FIN-Bits sind zwei der am wenigsten signifikanten Bits im TCP-Flags-Feld, also wenn beide gesetzt sind, wäre das 0b11 oder 0x3. UND-ing das tcp.flags - Feld mit 0x3 geben würde, die nicht-null-Werte, wenn entweder-flag gesetzt ist.

tshark gibt hier die TCP-Stream-Nummer für jedes Paket aus. Wir sortieren sie und zählen die eindeutigen Zahlen. Der letzte Schritt druckt nur die Zeilen, in denen die Anzahl der Pakete für diesen Stream kleiner als 4 ist (1 SYN und 1 FIN für jede halbe Richtung).

Dann können Sie Wireshark öffnen mit

wireshark -r pcap-file -R "tcp.stream eq 1234"

Wobei 1234 vom vorherigen Befehl stammt.

Hübsch? Ich schätze nicht. Schnell? Nein...

 0
Author: bytesinflight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-02-13 14:17:34