我有一些想要研究的恶意软件,拦截它的“电话回家”连接,嗅探它试图连接的位置和方式,然后以某种方式假装我是他正在连接的主机,答复并从而尝试了解它的“协议”。
我认为 VirtualBox 将是解决方案的一部分。但我还注意到,我需要采取特别的预防措施,以便我的LAN 不会暴露。
我的问题是:
如何配置 VirtualBox 客户机,使其无法以任何方式访问我的 PC(主机)文件或 LAN?根据我之前的问题,我认为我需要禁用客户机中的网络。但是然后...
我如何(在主机或客户机上)嗅探他试图建立的所有连接?主机名、IP、端口、内容等?安装 Wireshark 了吗?在哪里,在主机还是客户机上?如何安装?
一旦我知道了 IP/主机名,我该如何(再次,无论是在客户机还是主机)向恶意软件假装我是该主机名并回复其连接,与其通信?安装 Apache 并使用 cgi/php 脚本等?在哪里以及如何操作?
我知道这是一个复杂的问题,因此简化一下:我真正需要的是大纲解决方案,战略满足目标的工具列表、工具的适用性以及工具如何工作的一般描述。
例如:“将 VirtualBox 网络设置为 xxx 模式,在客户机上安装 wireshark 进行嗅探,进行编辑,/etc/yyyy
以便所有连接都重定向到守护进程 zzz,后者将依次调用您的脚本,以便您可以回复恶意软件”
有用信息:
- 主机是Ubuntu 12.04
- 恶意软件是 Java
jar
,因此 guest 可以是任何东西 - 大多数连接都是普通的 HTTP/HTTPS 请求(但可能还有更多我不知道的)
答案1
.class
我认为反编译压缩包中的文件并检查源代码会更容易.jar
。或者直接使用 javap 检查字节码。如果您需要检查 jar 中的本机库,则不适用此方法。
回答您的问题:将虚拟机的网络模式设置为内部网络,并让它与另一个虚拟机共享内部网络,该虚拟机要么具有 Squid 并充当代理的角色,要么具有 Apache/nc 并假装是远程机器。
如果您想要访问互联网,请在代理上安装 2 个网络控制器:一个在内部网络上,另一个作为桥接或 NAT。但您会再次遇到该问题,网络模式不会区分您的 LAN 和互联网的其余部分。
要监控连接,您可以使用netstat
,也可能与结合使用watch
。
要嗅探数据包,您可以在代理上使用 Wireshark。
要伪造低级连接,请查看 netcat ( nc
)。要伪造 HTTP 连接,请在代理上设置静态 IP,或更改受感染的 VM/etc/hosts
以将连接重定向到代理 IP。
编辑:为了模拟连接和服务,有一个名为网络模拟,可从以 Bionic 开头的 Ubuntu 存储库获取(https://packages.ubuntu.com/search?keywords=inetsim)。