我有一个与远程 Web 服务通信的本地应用程序(不是我编写的,也无法更改)。它使用 HTTPS,我想看看流量中有什么。

我有什么办法可以做到这一点吗?我更喜欢 Windows 系统,但我很乐意在 Linux 上设置代理,如果这能让事情变得更容易的话。

我正在考虑的是:

  1. 通过破解我的主机文件(或设置备用 DNS)来重定向网站。
  2. 使用自签名(但受信任)证书在该站点上安装 HTTPS 服务器。
  3. 显然,如果您向 WireShark 提供私钥,它就可以看到 HTTPS 中的内容。我从来没有尝试过这个。
  4. 以某种方式将此流量代理到真实服务器(即这是一次成熟的中间人“攻击”)。

这听起来合理吗?WireShark 真的可以看到 HTTPS 流量中的内容吗?谁能给我指出合适的代理(以及相同的配置)?

有帮助吗?

解决方案

提琴手 做你想做的事?

什么是提琴手?

Fiddler是一个Web调试代理,可在计算机和Internet之间记录所有HTTP(S)流量。Fiddler允许您检查所有HTTP流量,设置断点和使用传入或传出数据的“小提琴”。提琴手包括一个强大的基于事件的脚本子系统,可以使用任何.NET语言扩展。

Fiddler是免费软件,几乎可以从任何应用程序中调试流量,包括Internet Explorer,Mozilla Firefox,Opera等。

其他提示

Wireshark 绝对可以将 TLS/SSL 加密流显示为纯文本。但是,您肯定需要服务器的私钥才能执行此操作。私钥必须作为首选项下的 SSL 选项添加到 Wireshark。请注意,只有当您可以从一开始就遵循 SSL 流时,这才有效。如果重复使用 SSL 连接,它将不起作用。

对于 Internet Explorer,可以通过使用“Internet 选项”对话框清除 SSL 状态来避免这种情况(SSL 会话重用)。其他环境可能需要重新启动浏览器,甚至重新启动系统(以避免 SSL 会话重用)。

另一个关键限制是必须使用 RSA 密码。Wireshark 无法解码使用 DFH (Diffie-Hellman) 的 TLS/SSL 流。

假设您可以满足上述约束,“跟随 SSL 流”右键单击命令效果相当好。

您需要为本地应用程序设置代理,如果它不支持代理设置,请放置一个透明代理并在外出之前将所有 https 流量路由到其中。像这样的东西可以是中间的“人”: http://crypto.stanford.edu/ssl-mitm

另外,这里有关于如何使用wireshark存档此文件的简要说明: http://predev.wikidot.com/decrypt-ssl-traffic

你还应该考虑 查尔斯. 。从回答这个问题时的产品描述来看:

Charles 是一个 HTTP 代理/HTTP 监视器/反向代理,使开发人员能够查看其计算机与 Internet 之间的所有 HTTP 和 SSL/HTTPS 流量。这包括请求、响应和 HTTP 标头(其中包含 cookie 和缓存信息)。

我会推荐 WireShark,它是跟踪不同流量的最佳工具。不过,我不确定打开 SSL 后你能看到什么。也许,如果你提供证书的话?

  1. 对于使用https代理进行监控,取决于握手的类型。如果您的本地应用程序没有通过您无法伪造的 CA 签名检查服务器的证书,并且服务器也没有检查您本地应用程序的证书(或者如果您在 https 代理上设置了一个证书),那么您可以设置一个 https 代理监控 https 流量。否则,我认为不可能用https代理来监控流量。

  2. 您可以尝试的另一种方法是在客户端程序的例程中添加检测探针,在客户端程序中从其 https 库发送和接收消息。它需要一些逆向工程工作,但应该适用于所有情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top