我有一个应用程序(通过 QEMU 运行的 Google Android 模拟器)在 Ubuntu 上的 Docker 实例中运行。我想要:
- 捕获来自 QEMU 内部运行的 VM 的所有网络流量(数据包)。
- 阻止该虚拟机的流量进入互联网,同时保持实例的其余部分保持连接
- 欺骗该虚拟机向其他服务器发出的请求的响应,假装我是这些服务器
- 以自动化无头方式完成所有这些操作(无需用户输入,只需脚本)
在研究这个问题时,我发现https://github.com/mandiant/flare-fakenet-ng,这正是我需要的。问题是它似乎在我的设置中不起作用(每当 Fakenet 的网络驱动程序加载时,它都会禁用所有网络流量,无论任何配置,我都会失去对 docker 实例的控制)。我在这里问了一个问题(在 Ubuntu Linux 上的 fakenet-ng 中启用分流器将禁用所有网络流量),但没有得到答复。
由于我至今尚未成功修复此问题,因此我正在寻找其他方法来实现此目的。我应该使用哪些工具和方法?它们的优点和缺点是什么?
答案1
Android Emulator 本身包含 tcpdump 的实现以及将数据包转储到文件的选项。使用方法如下emulator -tcpdump {path_to_dump}.pcap {other_options}
。
至于阻止它访问互联网并欺骗响应,可以在单独的用户组中启动模拟器,并根据进程的 GID 进行 iptables 过滤,将来自特定 GID 的所有流量重定向到本地服务器,在那里实施欺骗响应。例如https://pypi.org/project/spoof/或者https://pypi.org/project/fake-server/可能适用于这种用例。