捕获单个应用程序的网络流量?

捕获单个应用程序的网络流量?

我正在寻找一种方法/黑客/内核模块来捕获 PID 及其所有分支/子进程的网络流量。

我有一个 Firefox 应用程序,它可以打开一些网页并开始使用 Flash 流、WMV 或任何其他流协议进行流式传输,以及“简单”下载 img、js 和其他“静态”内容。

我感兴趣的是捕获这些流量并最终隔离这些流。

Wireshark 不支持通过进程 ID 进行捕获,但我认为这可以解决(这是我的问题的核心)。显然,设置一个完整的虚拟机并只运行带有 wireshark 的 Firefox 就可以了,但我对更轻量级的解决方案更满意,也许基于 chroot?结合 iptables 所有者模块。

因此,我们将非常感激您提出的想法或完整的解决方案。

- 编辑:

人们正确地猜测我正在使用的操作系统:该问题主要针对 Linux 操作系统,但如果在 Windows / OpenSolaris / MacOSX 或任何其他合理的黑客可访问的操作系统上找到可行的解决方案,则该答案将被接受。

答案1

查看 iptables 的 ULOG 目标,结合所有者匹配模块。它并不完全符合您的要求,但如果您专门为测试创建一个用户,并以该用户身份运行您尝试监视的应用程序,那么您应该非常接近了。

据我所知,ULOGD 至少会将原始数据包写入文件。我自己没有这样做过,所以我不能保证,但它看起来会做你想做的事。

答案2

理想情况下,您可以通过向您的机器添加另一个 IP 地址来分离 Firefox 流量,并让 Firefox 在打开出站连接时使用该 IP 地址。

这是可能的,例如使用 OpenSSH:

ssh -b 192.0.2.64 [...]

但是我在 Firefox 中找不到任何命令行选项或首选项条目。

相反,您可以使用简单的(本地)HTTP 代理,例如tinyproxy,同样,代理使用唯一的 IP 地址来传输出站流量。使用中的设置tinyproxy执行此操作,例如:Bindtinyproxy.conf

Bind 192.0.2.64

最后,您可以研究一些比完整虚拟机更轻量级的东西。您提到过,iptables所以我假设您使用的是 Linux 主机;有几种解决方案,例如龙芯开放VZ如果 HTTP 代理不适合您,那么这可能会有所帮助。

答案3

您可以设置一个 http 代理,并让 Firefox 通过它,然后进行分析。如果您通过另一台不执行任何操作的机器(甚至是虚拟机)运行代理,则可以将 Wireshark 放在该机器上...我认为这足以隔离流量。

答案4

安装HTTP监视在您的桌面上,然后在开始浏览之前单击“记录”。

相关内容