Gibt es eine Möglichkeit, einen TCP / SSL stream basierend auf einer bestimmten Prozess-ID mit Wireshark zu filtern/zu verfolgen?
Ich sehe nicht wie. Die PID schafft es (normalerweise) nicht auf den Draht. Außerdem können Sie mit Wireshark sehen, was sich auf dem Draht befindet - möglicherweise alle - Maschinen, die über den Draht kommunizieren. Prozess-IDs sind ohnehin auf verschiedenen Maschinen nicht eindeutig.
Für den Fall, dass Sie nach einem alternativen Weg suchen und die Umgebung, die Sie verwenden, Windows ist, ist Microsoft Network Monitor 3.3 eine gute Wahl. Es hat die Spalte für den Prozessnamen. Sie können es einfach über das Kontextmenü zu einem Filter hinzufügen und den Filter anwenden. Wie üblich ist die GUI sehr intuitiv ...
Sie könnten die Portnummern von Wireshark bis zu Portnummern von netstat angeben, die Ihnen die PID eines Prozesses mitteilen, der diesen Port überwacht.
Verwenden Sie Microsoft Message Analyzer v1.4
Navigieren Sie in der Feldauswahl zu ProcessId.
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
Rechtsklick und Als Spalte hinzufügen
Unter Windows gibt es einen experimentellen Build, der dies ausführt, wie in der Mailingliste beschrieben, Nach lokalem Prozessnamen filtern
Dies ist eine wichtige Maßnahme, um zu überwachen, wo bestimmte Prozesse versuchen, eine Verbindung herzustellen, und es scheint, dass es unter Linux keine bequeme Möglichkeit gibt, dies zu tun. Es sind jedoch mehrere Problemumgehungen möglich, und ich denke, es lohnt sich, sie zu erwähnen.
Es gibt ein Programm namens nonet , mit dem ein Programm ohne Internetzugang ausgeführt werden kann (ich habe die meisten Programmstarter auf meinem System damit eingerichtet). Es verwendet setguid, um einen Prozess in der Gruppe nonet auszuführen, und legt eine iptables -regel fest, um alle Verbindungen dieser Gruppe abzulehnen.
Update: Mittlerweile verwende ich ein noch einfacheres System, mit ferm kann man leicht eine lesbare iptables-Konfiguration haben und einfach das Programm sg
verwenden, um ein Programm mit einer bestimmten Gruppe auszuführen. Mit Iptables können Sie auch den Verkehr umleiten, sodass Sie diesen sogar zu einer separaten Schnittstelle oder einem lokalen Proxy an einem Port routen können, mit dem Sie in Wireshark filtern oder die Pakete direkt von iptables aus protokollieren können, wenn Sie nicht das gesamte Internet deaktivieren möchten Verkehr auschecken.
Es ist nicht sehr kompliziert, es so anzupassen, dass ein Programm in einer Gruppe ausgeführt wird und der gesamte andere Datenverkehr mit iptables während der Ausführungsdauer reduziert wird. Anschließend können Sie nur den Datenverkehr dieses Prozesses erfassen.
Wenn ich jemals zum Schreiben komme, werde ich hier einen Link posten.
In einem anderen Hinweis können Sie immer einen Prozess in einer virtuellen Maschine ausführen und die richtige Schnittstelle ausfindig machen, um die Verbindungen zu isolieren, die hergestellt werden, aber das wäre eine ziemlich minderwertige Lösung ...
Wenn Sie einer Anwendung folgen möchten, die noch gestartet werden muss, ist dies durchaus möglich:
docker run -t -i ubuntu /bin/bash
(ändere "ubuntu" in deine Lieblingsdistribution, dies muss nicht dasselbe sein wie in deinem realen System)any
, wlan0
, eth0
, ... wählen Sie stattdessen die neue virtuelle Schnittstelle docker0
aus.Möglicherweise haben Sie Zweifel, ob Sie Ihre Software in einem Container ausführen. Hier finden Sie die Antworten auf die Fragen, die Sie wahrscheinlich stellen möchten:
In einigen Fällen können Sie nicht nach Prozess-ID filtern. In meinem Fall musste ich zum Beispiel den Datenverkehr eines Prozesses erfassen. Aber ich habe in seiner Konfig-Zielmaschine IP-Adresse gefunden, Filter ip.dst==someip
und voila hinzugefügt. Es wird auf keinen Fall funktionieren, aber für einige ist es nützlich.
Rufen Sie die Portnummer mit netstat
ab:
netstat -b
Und dann den Wireshark-Filter verwenden:
tcp.port == portnumber