Dump-Netzwerkverkehr einer einzelnen Anwendung (strace-like)

11

Ich suche nach einer Möglichkeit, pcap von Netzwerkdaten, die von einer Anwendung generiert wurden, auf ähnliche Weise zu stracesichern, indem Syscalls usw. ausgegeben werden, z. B.:

net-strace somecommand -args

somecommandwürde etwas über das Netzwerk tun und net-straceeinen PCAP-Speicherauszug des gesamten von dieser App generierten Datenverkehrs speichern (+ Antworten und zugehöriger Datenverkehr).

Kann das erreicht werden?

gesti
quelle
Das Problem ist, dass Anwendungen keine Pakete senden (außer solche, die Raw-Sockets wie Ping verwenden), sondern eine Netzwerk-API verwenden, die den Kernel veranlasst, Pakete in ihrem Namen zu senden (und verwandte zu empfangen).
Stéphane Chazelas
Ja, aber es gibt Anwendungen (z. B. Proxy-Ketten - proxychains.sourceforge.net ), die alle Anwendungsdaten über einen Proxy ausführen. Ich weiß nicht, wie sie es machen, aber sie können es erfassen und über einen Proxy senden. Wenn es einen einfachen Proxy gibt (lokal ausgeführt), der pcap sichern kann, kann möglicherweise die Kombination proxychains + proxy verwendet werden, um den Speicherauszug zu erhalten.
Gesti
Es ist wahrscheinlicher, dass sie die API (mit LD_PRELOAD) entführen als die Pakete. Allerdings kann man möglicherweise einige Setsockopt (SO_MARK) in Anwendungen einfügen und Netfilter verwenden, um die Pakete in ulog zu protokollieren.
Stéphane Chazelas
3
Erstellen Sie einen neuen Netzwerk-Namespace für die Anwendung und erfassen Sie den gesamten Datenverkehr. Dies kann auch für einige Anwendungsfälle ein akzeptabler Ansatz sein.
Stéphane Chazelas

Antworten:

3

Wie wäre es mit strace selbst?

strace -f -e trace=network -o output_file -s 10000 somecommand -args
Christian Long
quelle
In der von Ihnen angegebenen Befehlszeile werden nur DNS-Anforderungen angezeigt. Die -eOption von strace wählt häufig nicht aus, was Sie tatsächlich möchten.
Robin Green
2

Sie können den von Anwendungen generierten Datenverkehr mit verschiedenen Methoden sichern:

Wenn Sie die von der Anwendung verwendeten Ports kennen, können Sie sie ausführen tcpdump oder wireshark mit bestimmten Filterregeln für diese Ports ausführen .

Wenn dies keine Option ist, können Sie Anwendungspakete mithilfe einer iptables- Regel markieren , die dem Eigentümer des Prozesses entspricht. Möglicherweise müssen Sie ein neues Benutzerkonto erstellen, um den Prozess vollständig zu isolieren. Dann können Sie den Verkehr erfassen, der nur der Regel entspricht.

Weitere Informationen zu diesem verwandten Thema finden Sie unter: /ubuntu/11709/how-can-i-capture-network-traffic-of-a-single-process

Möglicherweise finden Sie dieses Programm auch interessant, wie im vorherigen Thema angegeben. http://mutrics.iitis.pl/tracedump

Almlys
quelle