我正在寻找一种方法/黑客/内核模块来捕获 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
执行此操作,例如:Bind
tinyproxy.conf
Bind 192.0.2.64
最后,您可以研究一些比完整虚拟机更轻量级的东西。您提到过,iptables
所以我假设您使用的是 Linux 主机;有几种解决方案,例如龙芯和开放VZ如果 HTTP 代理不适合您,那么这可能会有所帮助。
答案3
您可以设置一个 http 代理,并让 Firefox 通过它,然后进行分析。如果您通过另一台不执行任何操作的机器(甚至是虚拟机)运行代理,则可以将 Wireshark 放在该机器上...我认为这足以隔离流量。
答案4
安装HTTP监视在您的桌面上,然后在开始浏览之前单击“记录”。