我有一个程序(合法地调用作者)和同样调用作者的插件(不那么合法)。我想运行程序的原始版本并收集它试图连接的 IP。应该在 100 到 1000 个 IP 之间。
然后我想一次添加一个插件来查找间谍检查它调用的位置并通过 iptables 阻止访问。最简单的方法是什么?Wireshark+IPtables?
GUI 是首选,但不是必需的,只要我不必手动将 1000 个 ips 添加到 iptables 即可。这是一个在 vmplayer Windows 客户机下运行的带有附加组件的游戏。
提前致谢,
答案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 持续运行,日志文件定期轮换等,但是如果您想让应用程序运行更长时间并避免编写脚本,则下面的方法更合适。
- 以不同的用户身份运行应用程序,并添加基于进程所有者 UID 匹配的 iptables 规则并采取相应措施。
丢弃 UID 为 5555 的用户的网络流量的示例:
iptables -A OUTPUT -m owner --uid-owner 5555 -j DROP
您可以用 LOG 替换 DROP,做任何您想做的事情,比如限制连接、选择您想要拒绝的端口等等。
如果您希望我扩展特定方法,请添加评论,这样我就能够更新我的答案。