如何通过 SSL 模糊专有协议?

信息安全 加密 tls 中间人 模糊测试 线鲨
2021-09-04 18:32:15

我正在对使用通过SSL(端口 443)发送的自定义专有协议的客户端/服务器架构进行漏洞研究。我需要能够拦截流量,并能够以明文形式在Wireshark中查看流量,修改流量,然后将其发送到服务器。“客户端”是 Microsoft Office 插件。我的最终目标是能够模糊未加密的网络通信。

我尝试使用 OpenSSL 生成自签名证书并将私钥作为“数据”协议导入 Wireshark,但没有运气。我仍然将数据视为"Encrypted Application Data"

我试过关注这两个链接:

但他们为HTTP. 我不确定是否有任何区别,因为这是一个专有协议(仍然通过端口 443 发送)。

我的最终目标是能够使用诸如Sulley之类的 fuzzer来探测服务器的漏洞。有没有人推荐一个很好的方法来完成这个?

3个回答

有两种方法可以解密传输中的 SSL 流量:

首先是拥有服务器的私钥。如果你有这个,你可以把它喂给wireshark,剩下的就交给你了。也有一些专用工具可以做到这一点。但是没有服务器的私钥就无法完成。

第二个是MITM的连接。如前所述,Fiddler 将执行此操作,并且有几个工业级工具也可以执行此操作。问题是您需要有一个客户会信任的证书。如果它使用标准的 Windows CA 存储,那么将您的签名证书添加为客户端计算机上的 CA 就足够了。

第二个选项听起来更像您想要做的,而 Fiddler 听起来非常像您所追求的工具,因为“摆弄”连接正是您想要做的。

请注意,如果您正在使用自定义协议,那么您尝试做的可能涉及编写一些自定义代码。但这是可能的。

您可以尝试 HTTP 代理调试器,例如fiddlerBurp Suite,因为 HTTPS 也通过 SSL 层发送数据,这与您在 SSL 层上的自定义协议相同。代理调试器使用中间人方法,因此您必须将 Fiddler 的证书设置为受客户端信任。您不需要使用此方法生成证书。

试试tcpcatcher(免费,Java),或查看我对What's an easy way to perform a man-in-the-middle attack on SSL 的回答?获取其他工具和方法的简短列表。

如果您能够让服务器使用您的自签名证书,那么您应该能够使用 Wireshark,但您必须限制密码以便不使用 EDH 密钥交换(没有PFS,并查看答案为什么 ssl 密钥交换有不同的密钥交换技术?)。您发布的第一个链接是指在“方法二”中使用 EDH 来防止 Eve 拥有 RSA 私钥时的窃听。