找出哪些 IP 来自程序,哪些 IP 来自插件

找出哪些 IP 来自程序,哪些 IP 来自插件

我有一个程序(合法地调用作者)和同样调用作者的插件(不那么合法)。我想运行程序的原始版本并收集它试图连接的 IP。应该在 100 到 1000 个 IP 之间。
然后我想一次添加一个插件来查找间谍检查它调用的位置并通过 iptables 阻止访问。最简单的方法是什么?Wireshark+IPtables?

GUI 是首选,但不是必需的,只要我不必手动将 1000 个 ips 添加到 iptables 即可。这是一个在 vmplayer Windows 客户机下运行的带有附加组件的游戏。
提前致谢,

答案1

我想到两种方法可以实现这一点:

  1. 运行该应用程序的控制并strace记录所有系统调用,包括连接尝试。

假设你想运行firefox并查看它连接到什么:

# Start the process under the control of strace, logging only network-related calls:
strace -e trace=network -o network_calls -f firefox

# After finishing working with firefox, print the IPs it tried to communicate with:
grep -o -P '(\d+\.){3}\d+' network_calls | sort -u

这可以编写脚本,以便 strace 持续运行,日志文件定期轮换等,但是如果您想让应用程序运行更长时间并避免编写脚本,则下面的方法更合适。

  1. 以不同的用户身份运行应用程序,并添加基于进程所有者 UID 匹配的 iptables 规则并采取相应措施。

丢弃 UID 为 5555 的用户的网络流量的示例:

iptables -A OUTPUT -m owner --uid-owner 5555 -j DROP

您可以用 LOG 替换 DROP,做任何您想做的事情,比如限制连接、选择您想要拒绝的端口等等。

如果您希望我扩展特定方法,请添加评论,这样我就能够更新我的答案。

相关内容