Networking Packet Sniffer für Linux, die die Anwendungsnamen erfasst?

Ich habe Wireshark ausprobiert. Es zeigt die Quell-und Ziel-IP-Adresse, die Portnummer und den Paketinhalt an, aber nichts darüber, welche Anwendung die Pakete verwendet.

Anscheinend ist tcpdump ähnlich; Netzwerkdaten, aber keine Informationen zu welcher Anwendung.

Wireshark zeigte viel mehr Aktivität als ich erwartet hatte (einschließlich Ziel-IPs außerhalb meines Heimnetzwerks), als Browser, E-Mail und andere bekannte internetbezogene Programme geschlossen wurden und andere Computer off. Aber ohne zu wissen, welches Programm sendet oder empfängt, ist es schwierig, etwas dagegen zu tun.

Ich benutze Ubuntu 11.04.

Ich suche keinen allgemeinen Netzwerk-Sniffer; Ich möchte nur sehen, was in und aus demselben Computer läuft, auf dem der Sniffer läuft.

Gibt es so etwas unter Linux? Auch wenn es Geld kostet? Oder weiß ich nicht, wie oder wo ich in Wireshark nach dem Anwendungsnamen suchen soll?

Author: Mike Rowave, 2011-06-22

2 answers

Ich denke, die meisten Sniffer geben sich nicht die Mühe zu versuchen festzustellen, ob der aktuelle Computer, auf dem sie ausgeführt werden, der Endpunkt für einen der Verkehrsströme ist, die sie sehen (im Gegensatz zum Anzeigen der Frames anderer Computer über einen Hub oder einen Spiegelport auf einem Switch oder auf einem drahtlosen Kanal oder zum Anzeigen von Frames, die der aktuelle Computer nur überbrückt/Routing/NAT-Gatewaying). Die meisten Sniffer kümmern sich also nicht darum, ob der Prozess - oder Anwendungsname gefunden werden kann, da dies nur gefunden werden kann, wenn der lokale Computer ist der Endpunkt des Datenverkehrs.

Dies ist nicht so praktisch wie ein Sniffer es für Sie tun zu lassen, aber hier ist sowieso eine Problemumgehung:
Da Sie wissen, welche Adressen zu Ihrem lokalen Computer gehören, können Sie, sobald Sie die lokale Portnummer gefunden haben, den Namen des Prozesses mit dieser Portnummer mit lsof wie folgt nachschlagen:

sudo lsof +c15 -i :$PORT

...wobei "$PORT " die Portnummer ist, die Ihnen wichtig ist.

 3
Author: Spiff,
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
2011-06-22 04:51:43

Ich hatte mir das vor einiger Zeit angesehen und nichts gefunden.
Es gibt eine grobe Skripttechnik, die Sie basierend auf tun können netstat.

Es beruht auf dem Detail (wie Sie beobachtet haben), dass es nicht notwendig ist, den gesamten Verkehr zu schnüffeln - was Sie sehen möchten, ist die connection table und die zugehörige Programm-ID.

Netstat -npt

So funktionieren die Optionen,

- n -- zeigt einfache Netzwerkadressen ohne Auflösung an Namen (macht die Dinge schneller)
-p -- gibt die PID für das zugehörige Programm
-t -- beschränkt sich auf die Betrachtung von TCP-Verbindungen

Dies funktioniert ziemlich schnell und kann durch ein - Skript geloopt werden, um die Daten weiterhin zu protokollieren (an cron angeschlossen?).
Sie können diese Daten filtern, um eine Datenbank von

{Programmname, Programm-ID, IP 5-Tupel, Zeitfenster}

Der Nachteil ist, da es keinen UDP-Verbindungseintrag gibt (wie TCP 2), wird es wirklich Sniffing für UDP-Anwendungen nehmen.

Ich würde wirklich gerne wissen, ob es ein Werkzeug, dies zu tun :-) ein schönes Projekt.
Ich glaube, ich habe irgendwann ein Python-Skript in diesen Zeilen geschrieben.

 3
Author: nik,
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
2011-06-22 04:55:51