Network Capture

Aus MyWiki
Version vom 22. März 2025, 12:23 Uhr von Rueling (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Aufzeichnung = Um Netzwerktraffic bzw. Datenverkehr oder Pakete aufzuzeichnen gibt es verschiedene Optionen.<br> Bei den hier genannten Varianten geht es eigentlich nur darum den Network Traffic mit seiner Größe zu ermitteln. D.h. die Paket Inhalte sind uninteressant<br> === Wireshare/Tshark === Die bekannteste Option ist Wireshark mit NPCap Treiber.<br> NPCap hat allerdings einen Haken, nämlich bei Kommerzieller Anwendung. Das ist nicht oder nur…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Aufzeichnung

Um Netzwerktraffic bzw. Datenverkehr oder Pakete aufzuzeichnen gibt es verschiedene Optionen.
Bei den hier genannten Varianten geht es eigentlich nur darum den Network Traffic mit seiner Größe zu ermitteln. D.h. die Paket Inhalte sind uninteressant


Wireshare/Tshark

Die bekannteste Option ist Wireshark mit NPCap Treiber.
NPCap hat allerdings einen Haken, nämlich bei Kommerzieller Anwendung. Das ist nicht oder nur eingeschränkt (5 Installationen von NpCAP) erlaubt.

Wireshark liefert das CLI Tool TShark mit, um Aufzeichnungen in eine Datei zu speichern und später damit zu analysieren.
Der Capture Aufruf ist folgender:
tshark.exe -i 8 -w C:\temp\tsharktrace.pcapng -f "tcp port 445" -s 128 -b filesize:512000000 -b files:1 -q
-i 8 ist das Netzwerk Interface. Die Automatische Ermittlung scheint nicht so gut zu funktionieren
Mit tshark.exe -D kann man sich die Interfaces anzeigen lassen. Ich musste das “Ethernet” wählen.
-f “tcp port 445” schränkt die Aufzeichnung auf SMB Pakete ein.
-b files:1 legt fest, dass nur in eine Datei geschrieben werden soll. Normalerweise würde thsark nach erreichen der angegebene filesize in eine neue Datei schreiben. So aber überschreibt er die eigene Datei wieder, womit sichergestellt werden kann, dass nicht zu viel Speicherplatz auf dem Datenträger benutzt wird
-s 128 gibt an, dass die Pakete nach 128 Byte abgeschnitten werden sollen. Damit soll erreicht werden, dass nur Header aufgezeichnet werden.
Die minimale TCP/IP Header Größe beträgt 54 Byte. IP und TCP Header können aber jeweils noch Optionen enthalten, was die Header vergrößert. Mit 128 Byte ist man auf der sicheren Seite

Powershell NetEventSession

Powershell bietet auch die Möglichkeit Pakete aufzuzeichnen. Die Möglichkeiten für Filter und Einstellungen sind aber im Vergleich zu Wireshark stark eingeschränkt.
Hier ein Beispiel, wie man TCP Sessions aufzeichnen kann. Eine Einschränkung auf bestimmte Ports ist nicht möglich

New-NetEventSession -Name "HeaderOnlySession" -LocalFilePath "C:\temp\PSTrace.etl" -MaxFileSize 512000
Add-NetEventPacketCaptureProvider -SessionName "HeaderOnlySession" -TruncationLength 128 -IpProtocols 6
Start-NetEventSession -Name "HeaderOnlySession"
Stop-NetEventSession -Name "HeaderOnlySession"

-TruncationLength 128 gibt an, dass die Pakete nach 128 Byte abgeschnitten werden sollen.
-IpProtocols 6 gibt an, dass nur TCP Pakete aufgezeichnet werden sollen

Die Aufzeichnung wird in ETL Dateien geschrieben. Diese konnte man “früher” mit dem Microsoft Netzwerk Analyse Tool öffnen. Das gibt es aber nicht mehr.
Um die Daten in Wireshark zu verwenden, muss man die in pcapng Dateien umwandeln. Dafür gibt es von Microsoft einen Konverter “etl2pcapng”

netsh trace

netsh trace kann ebenfalls Pakete aufzeichnen und ist direkt in Windows integriert (ist das Powershell NetEventSession aber auch)
Eine Aufzeichnung geht mit netsh trace start capture=yes tracefile=c:\temp\nettrace.etl maxsize=512000 protocol=TCP
gestoppt wird das ganze dann mit netsh trace stop
Gegenüber der Powershell Variante hat es zwei Nachteile.
1. Man kann die Paketgröße nicht einschränken
2. Beim stoppen wird ein Merge in eine neue Datei erstellt. Diese wird vermutlich genauso groß, wie die aufgezeichnete Datei. Man benötigt also bei Aufzeichnungen den doppelten Speicherplatz
Es hat damit keine Vorteile gegenüber Powershell


Analyse

Die Analyse wird mit tshark durchgeführt.
Es gibt dabei verschiedenen Möglichkeiten

  1. tshark -r C:\Temp\tsharktrace.pcapng -q -z conv,ip -Y “tcp.port == 445”
    Zeigt eine Übersicht mit Datenmenge pro IP Adresse für hier als Beispiel SMB
    Die Ausgabe zeigt leider keine Ports an, daher sollte auf den Port gefiltert werden
    Das Ergebnis sieht das so aus:
                                        |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                        | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
    192.168.1.1 <-> 192.168.1.2         1067249 1196 MB    766444 144 MB     1833693 1341 MB       1,832898000      1920,9941

  2. tshark -r C:\Temp\tsharktrace.pcapng -q -z conv,tcp
    Zeigt eine Übersicht mit Datenmenge pro Port an. Hier ohne Einschränkung auf den Port. Da der Quellport i.d.R. dynamisch ist, sieht man hiermit keine Gesamtübersicht sondern nur pro Verbindung
    Das Ergebnis sieht das so aus:
                                                     |       <-      | |       ->      | |     Total     |    Relative    |   Duration   |
                                                     | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |      Start     |              |
    192.168.1.1:54172  <-> 192.168.1.2:445           369680 551 MB     211039 13 MB      580719 564 MB        2,721871000      1462,5293
    192.168.1.1:54172  <-> 192.168.1.2:445           2075 568 kB       2066 606 kB       4141 1175 kB      1472,621295000       451,8065

  3. tshark.exe -r C:\Temp\tsharktrace.pcapng -T fields -e ip.src -e ip.dst -e ip.len -e tcp.srcport -e tcp.dstport -E separator=“,”
    Ideal für die Weiterverarbeitung mit Powershell. Hiermit werden die Pakete einzeln ausgegeben mit den notwendigen Informationen, getrennt durch Komma


Bei der Analyse der Powershell Trace (NetEventSession) und nettrace Daten gibt es etwas zu beachten.
Ich bin mir nicht sicher, ob es daran liegt, dass die Pakete abgeschnitten sind, aber nach der Konvertierung der ETL Dateien nach PCAPNG mit etl2pcapng funktioniert die Analyse mittels tshark -r C:\Temp\tsharktrace.pcapng -q -z conv,ip -Y "tcp.port == 445" nicht.
Es werden dabei immer alle Pakete ausgegeben, auch wenn die nicht dem Filter entsprechen.
Für die Analyse mit Powershell (über tshark.exe -r C:\temp\tsharktrace.pcapng -T fields -e ip.src -e ip.dst -e ip.len -e tcp.srcport -e tcp.dstport -E separator=",") ist das kein Problem.
Möchte man aber eine Analyse mit “conv,ip” muss man vorher alle Pakete mit dem entsprechenden Port in eine extra Datei rausschreiben: tshark.exe -r .\PSTrace.pcapng -Y "tcp.port == 445" -w .\PSTrace_445_.pcapng
Danach kann man die Analyse auf die neue Datei machen