25

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

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

我在考虑什么:

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

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

4

6 回答 6

16

Fiddler做你想做的事吗?

什么是提琴手?

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

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

于 2009-07-02T08:37:36.940 回答
10

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

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

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

假设您可以满足上述约束,“Follow SSL Stream”右键单击命令效果很好。

于 2012-09-09T21:42:38.667 回答
5

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

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

于 2009-07-02T08:40:56.840 回答
3

您还应该考虑查尔斯。从这个答案时的产品描述:

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

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

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

于 2009-07-02T08:42:40.220 回答
-1

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

于 2009-07-02T08:47:54.187 回答