我正在寻找一种方法来转储应用程序生成的网络数据的pcap,以类似的方式strace
转储syscalls等,例如:
net-strace somecommand -args
somecommand
会在网络上执行某些操作,并net-strace
保存该应用程序生成的所有流量的pcap转储(+回复和相关流量)。
能做到吗?
问题在于,应用程序不发送数据包(使用诸如ping之类的原始套接字的数据包除外),而是使用网络API来使内核代表它们发送数据包(并接收相关的数据包)。
—
斯特凡Chazelas
是的,但也有应用(例如proxychains - proxychains.sourceforge.net),它是通过代理运行的所有应用程序数据。不知道他们是如何做到的,但是他们可以捕获它并通过代理发送它。也许如果有一个简单的代理(在本地运行)可以转储pcap,则可以使用proxychains + proxy组合来获取转储。
—
gesti 2014年
他们比数据包更有可能劫持API(使用LD_PRELOAD)。话虽这么说,也许可以将一些setsockopt(SO_MARK)注入应用程序并使用netfilter将数据包记录到ulog中。
—
斯特凡Chazelas
为应用程序创建一个新的网络名称空间,并捕获其中的所有流量。对于某些用例,也可以采用一种可接受的方法。
—
斯特凡Chazelas