Netzaktivität eines einzelnen Programms überwachen?

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
xoexlepox
Beiträge: 4814
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Netzaktivität eines einzelnen Programms überwachen?

Beitrag von xoexlepox »

Ich möchte gerne ermitteln, welche Netzwerk-Aktivität von einem einzelnen Programm ausgeht. Klar kann ich mittels "tcpdump" oder "wireshark" die gesamte Kommunikation des Systems mitlesen. Nur auf dem System (Debian) laufen etliche Applikationen, und es ist sehr mühsam, die Aktivität eines einzelnen Programms da herauszulesen. Mein erster Gedanke dazu wäre, das Programm mittels "proxychains" zu isolieren. Dazu bräuchte ich dann noch einen transparenten Proxy und ein paar "verdrehte" Einträge im Routing. Geht das mglw. auch einfacher, oder gibt es bereits Applikationen, die genau auf meine Problemstellung zugeschnitten sind? Hat sich schon mal jemand mit ähnlichen Aufgabenstellungen herumgeschlagen, und kann mir ein paar Hinweise geben? Ich hoffe mal, diese Anfrage ist nicht zu "PC-lastig"...

Edit: Typo in Betreff
Zuletzt geändert von xoexlepox am Fr 3. Apr 2020, 19:41, insgesamt 1-mal geändert.
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Netzaktivität eines enzelnen Programms überwachen?

Beitrag von Hightech »

Ach, es geht ja um ein einzelnes Programm.
Das müsste man aber über die Systemprogramme rausfiltern können.
Kainit
Beiträge: 156
Registriert: So 11. Aug 2013, 16:05
Wohnort: Thüringen

Re: Netzaktivität eines enzelnen Programms überwachen?

Beitrag von Kainit »

Ich habe vor Jahren "ntop" verwendet. Weiss aber nicht ob es für Deine Zwecke
das Richtige ist.
berlinerbaer
Beiträge: 1062
Registriert: Di 22. Aug 2017, 05:19
Wohnort: Berlin

Re: Netzaktivität eines enzelnen Programms überwachen?

Beitrag von berlinerbaer »

Hier gibt es ein paar Optionen:

https://alternativeto.net/software/litt ... form=linux

Leider keine persönliche Erfahrung damit, auf MacOS machen sowohl Little Snitch wie auch HandsOff! einen guten job.
sysconsol
Beiträge: 4059
Registriert: Fr 8. Jul 2016, 17:22

Re: Netzaktivität eines enzelnen Programms überwachen?

Beitrag von sysconsol »

Ist denn bekannt, welches Protokoll das Programm spricht und wohin es eine Verbindung aufbaut?
Benutzeravatar
xoexlepox
Beiträge: 4814
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von xoexlepox »

Das müsste man aber über die Systemprogramme rausfiltern können
Jaaaa, aber nur "per Hirn", was doch etwas umständlich ist ;) Ich kann zwar z.B. sehen, daß eine Nameserver-Anfrage gestellt wird, aber nicht, von welchem Programm die kommt. An dieser Stelle ist der einzige Bezug zwischen dem Paket und der Applikation nur noch die Portnummer. Und die kann sehr bald auch wieder von einem anderen Programm verwendet werden.

Ich habe vor Jahren "ntop" verwendet.
Soweit ich es bisher gesehen habe, kann "ntop" zwar die "geschwätzigsten" Programme auflisten, jedoch nicht die Pakete einer einzelne Applikation.

... auf MacOS machen sowohl Little Snitch wie auch HandsOff! einen guten job.
Das ist schon ziemlich genau das, was ich suche! Nur leider ist "Little Snitch" nur für MAC verfügbar, und das ähnliche "OpenSnitsch" wurde eingestellt. Aber ich habe einen guten Suchbegriff gefunden: "Application Firewall".

Ist denn bekannt, welches Protokoll das Programm spricht und wohin es eine Verbindung aufbaut?
Nein, wenn diese Information bekannt wäre, dann wäre die Filterung der mitgelesenen Pakete relativ einfach, und ich könnte mich schon damit beschäftigen, heraus zu finden, was dort kommuniziert wird.


Genau genommen möchte ich herausfinden, ob ein bestimmtes Programm irgendwelche "Spyware" (oder Schlimmeres) enthält. Da auf dem System so einige Applikationen/Services laufen, gibt es auch eine Menge "normalen" Traffic. Die Aufgabe ist es nun, nur die Datenpakete auszufiltern/anzuzeigen, die von/zu einem bestimmten Programm laufen. Bleibt dieses Log leer (oder enthält
nur bekannte/erwünschte Kommunikation), ist das Programm "sauber", und ich brauche mir keine weiteren Gedanken zu machen. Mein Ansatz besteht nun darin, diese Applikation in einer "Sandkiste" laufen zu lassen, und zu überwachen, mit was und wem dieses Ding denn kommuniziert.
TDI
Beiträge: 2608
Registriert: Fr 28. Jun 2013, 09:43
Wohnort: plattdeutsches Nordland

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von TDI »

Kann „ZoneAlarm“ sowas nicht? Hab das allerdings schon länger nicht mehr genutzt.
Benutzeravatar
xoexlepox
Beiträge: 4814
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von xoexlepox »

Kann „ZoneAlarm“ sowas nicht?
Meinen Recherchen zufolge scheint da (u.a.) ein Firewall drin zu stecken. Ob das eine Filterung (und Aufzeichnung!) der Aktivität eines einzelnen Programms zulässt, scheint mir recht fragwürdig. Das Programmpaket sieht mir mehr nach einer "rundrum glücklich Lösung ausschließlich für Windows-User" aus, als nach einem Analyse-Tool.
Benutzeravatar
Durango
Beiträge: 635
Registriert: Mi 14. Aug 2013, 00:42

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von Durango »

Das Programm ProcMon mit all seinen unterprogrammen deckt wohl alle Anforderungen ab.
Und es ist umsonst. Den passenden Filter muß man selbst definieren.
So kommte bislang jeder Übeltäter erkannt werden.

73 Manfred
berlinerbaer
Beiträge: 1062
Registriert: Di 22. Aug 2017, 05:19
Wohnort: Berlin

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von berlinerbaer »

xoexlepox hat geschrieben: Fr 3. Apr 2020, 19:51 Genau genommen möchte ich herausfinden, ob ein bestimmtes Programm irgendwelche "Spyware" (oder Schlimmeres) enthält. Da auf dem System so einige Applikationen/Services laufen, gibt es auch eine Menge "normalen" Traffic. Die Aufgabe ist es nun, nur die Datenpakete auszufiltern/anzuzeigen, die von/zu einem bestimmten Programm laufen. Bleibt dieses Log leer (oder enthält
nur bekannte/erwünschte Kommunikation), ist das Programm "sauber", und ich brauche mir keine weiteren Gedanken zu machen.
Du solltest dabei auch nicht aus den Augen verlieren, daß Programme nicht unbedingt selbst übers Netz kommunizieren, sondern das auch an andere Programme, die "freien Zugang" haben, wie etwa Browser, delegieren können.

Da kann es dann notwendig werden, entsprechende domains über einen Eintrag in /etc/hosts auf localhost umzuleiten, um seine Ruhe zu haben.
Robby_DG0ROB
Beiträge: 4619
Registriert: Do 19. Mai 2016, 21:13
Wohnort: Regensburg

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von Robby_DG0ROB »

Am schnellsten und einfachsten schaut man unter Windows im Konsolenfenster mit netstat an. Will man das zyklisch haben, einfach eine Ziffer für die Sekunden dahinter setzen.
sirell
Beiträge: 606
Registriert: Mi 8. Apr 2015, 13:38
Wohnort: DE/Herzogenaurach

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von sirell »

Kein Problem:

Kennst du die PID dann:

Code: Alles auswählen

strace -p $PID -f -e trace=network -s 10000
alternativ den Prozess über strace starten:

Code: Alles auswählen

strace -f -e trace=network -s 10000 <cmd>
Generell kann man das auch ausweiten falls man IPC vermutet. Ich hab so schon diverse Sachen gefunden.

Die andere Möglichkeit ist über namespaces den Prozess zu isolieren.
Vorher würde ich aber lieber einen klassischen tcpdump machen, im zweifel mit entsprechendem gefiltere.
Und bevor ich (manuell) mit Namespaces anfange würde ich wahrscheinlich den Prozess in eine VM packen und das ausgehende Interface überwachen.

Grüße
Micha
Benutzeravatar
xoexlepox
Beiträge: 4814
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von xoexlepox »

Erst einmal vielen Dank für die vielen hilfreichen Antworten.
Das Programm ProcMon mit all seinen unterprogrammen deckt wohl alle Anforderungen ab.
Das werde ich mir noch einmal näher ansehen, das scheint mir recht brauchbar zu sein.

Du solltest dabei auch nicht aus den Augen verlieren, daß Programme nicht unbedingt selbst übers Netz kommunizieren, sondern das auch an andere Programme, die "freien Zugang" haben, wie etwa Browser, delegieren können.
Guter Einwand! Ich werde mal ausprobieren, ob auch ggf. Child-Programme von proxychains "eingefangen" werden. Aber du hast schon recht, es gibt ja auch noch "unix-sockets" und ähnliche Späße ;)

Am schnellsten und einfachsten schaut man unter Windows im Konsolenfenster mit netstat an.
"netstat" ist auch unter Linux vorhanden, und zeigt aktive Netwerkverbindungen an. Aber damit komme ich m.E. nicht an die Inhalte der Kommunikation.

alternativ den Prozess über strace starten
Jau, "strace" ist auch eine schöne Idee! Die hatte ich gar nicht mehr "auf dem Schirm". Es wird zwar etwas umständlich, die Dumps dann auszuwerten, aber das sollte funktionieren.

Vorher würde ich aber lieber einen klassischen tcpdump machen, im zweifel mit entsprechendem gefiltere.
Die Filterei wird schwierig, wenn man weder IPs noch Ports kennt.

würde ich wahrscheinlich den Prozess in eine VM packen und das ausgehende Interface überwachen
Das war auch eine meiner ersten Ideen, jedoch hätte ich dann das Gesabbel aller Tasks in der VM im Log.


Letzte Nacht habe ich mich etwas intensiver mit der Verwendung von (im Debian-Repository) verfügbaren Tools beschäftigt. Und hier meine (vielleicht etwas umständliche) Lösung:

Bild

Die zu untersuchende Applikation wird mittels "proxychains" gestartet, welches sämtliche Netzaktivität (incl. Namensauflösung) abgreift, und mit dem Protokoll "socks5" an den lokalen Teil von "shadowsocks" (sslocal) weiterreicht. Von dort aus gehen die Anfragen (verschlüsselt) weiter zum "entfernten Teil" von shadowsocks (ssserver), wo sie wieder entschlüsselt und in das Netzwerk eingespeist werden. Die Applikation sollte nichts von diesem Umweg mitbekommen. Aber nun gibt es eine Stelle, an der sämtliche Anfragen der Anwendung (isoliert von den sonstigen Aktivitäten anderer Applikationen) entlanglaufen. An dieser Stelle lauscht "wireshark", und zeichnet die Aktivität auf. Dank des eingebauten Decoders für "socks5"-Pakete lässt sich nun auch herausbekommen, was (und mit welchen IPs) die Applikation denn so alles kommuniziert.

Interessantes Ergebnis der ersten Versuche: "proxychains" selber verwendet anscheinend den (fest codierten?) Nameserver "4.2.2.2"(b.resolvers.Level3.net) anstatt der "systemeigenen" Namesauflösung. Naja, das kann man ja ggf. auch verhindern/umleiten ;)
Benutzeravatar
Bastelbruder
Beiträge: 11481
Registriert: Mi 14. Aug 2013, 18:28

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von Bastelbruder »

Ich hasse es wenn Wireshark immer falsch verdächtigt wird.

Das pöhse Programm welches Netzwerkaktivitäten, unter Anderem Passwörter und Schlüsselaustausch mitschreibt, läßt sich auch ohne Wireshark per selbstgeschriebener batch auswerten. Und ich denke daß Mitschreiben des gesamten Verkehrs die einzig zuverlässige Methode ist um unanständige Aktivitäten zu erwischen. Man muß in der Zeit schließlich nicht mit aller Gewalt unnötigen traffic verursachen.

Allerdings ist den Spionen bekannt, daß hochsporadische Datenburstübertragungen allgemein am schwersten zu finden sind.

Wireshark ist lediglich DIE klicki-bunti-GUI, die es sogar script-kiddies und anderen Ahnungslosen wie mir erlaubt, den mitgelauschten Datenhaufen zu selektieren und auszuwerten.
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Netzaktivität eines einzelnen Programms überwachen?

Beitrag von Fritzler »

Bastelbruder hat geschrieben: Mo 6. Apr 2020, 12:43 Allerdings ist den Spionen bekannt, daß hochsporadische Datenburstübertragungen allgemein am schwersten zu finden sind.
Zudem erkennt sone boshafte Software ob sie in einer VM läuft oder nicht.
Antworten