我尝试使用 PolarProxy 解密恶意软件的流量并将流量转发到虚假服务器。我遵循 PolarProxy + INetSim 教程。我在 Ubuntu VM 上使用 PolarProxy,在 Windows VM 上使用带有 TLS 的应用程序。https: //www.netresec.com/ ?page=Blog&month=2019-12&post=Installing-a-Fake-Internet-with-INetSim-and-PolarProxy
从教程中,对于具有 PolarProxy 的虚拟机,我使用以下命令:
$ sudo iptables -t nat -A PREROUTING -i <Ex. enp0s8> -p tcp --dport 443 -j REDIRECT --to 10443
$ sudo ./PolarProxy_1-0-0_linux-x64/PolarProxy -v -p 10443,80,80 -x polarproxy.cer --certhttp 10080 --pcapoverip 57012 -o . --terminate --connect <IP for Fakenet VM> --nosni nosni.polarproxy
然后,在受害者机器上使用如下命令,PolarProxy 即可解密流量并将其发送到 fakenet VM 并正常工作。
$ curl.exe --insecure --resolve hello.com:443:<IP for PolarProxy VM> https://hello.com
但是,我意识到 PolarProxy 通过检查 SNI 字段来找出要重定向流量的服务器。因此,当受害机器直接与 IP 通信而不指定服务器名称时,它会给出如下命令的错误:
$ curl.exe --insecure https://<IP for PolarProxy VM>
错误示例:
<4>[10443] Transparent TLS proxy System.IO.IOException (0x80131620) : Cannot determine the frame size or a corrupted frame was received.
<4>[10443] Transparent TLS proxy Socket error code HostNotFound System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (0x00000005) : Name or service not known
所以我想知道是否有工具/方法可以绕过不使用 DNS/服务器名称并直接使用指定 IP 进行通信的应用程序的这个问题?想知道是否有办法让 PolarProxy 将所有解密和固定的流量转发到指定的 IP。
不知道我是否需要可以添加 SNI 之类的工具。(此外,对于 VMware 上的 Windows 受害机器,直接修改 PolarProxy VM 的默认网关会导致一些网络问题,因此这对我来说似乎不是一个解决方案。)
谢谢!
--nosni
感谢您报告此问题!PolarProxy 在处理与 结合使用时似乎存在错误--terminate
。我们正在研究如何在下一版本中修复此问题。更新(2025 年 2 月 10 日)我们现已发布 PolarProxy 1.0.2,此错误已得到解决。 如果您希望使用旧版本的 PolarProxy(1.0.0 或 1.0.1)终止没有 SNI 的 TLS 连接,请参阅下面之前提供的解决方法。
建议的解决方法是改用规则集。规则集提供了一种更明确的方法来控制 PolarProxy 的操作。使用
--ruleset tls-termination.json
命令行开关让 PolarProxy 加载规则集。JSON 文件的内容应如下:这需要 PolarProxy 1.0.0 或更高版本。
此规则集定义了终止操作以及 www 服务器的 IP,因此您在使用此规则集时无需提供
--terminate
,--connect
甚至--nosni
参数。不过,您需要将 JSON 中的 127.0.0.1:80 替换为您的 FakeNet www 服务器正在运行的任何 IP 和端口。以下是您可以使用的示例命令:
./PolarProxy -v -p 10443,80,80 --pcapoverip 57012 -o . --ruleset tls-termination.json