明确捕获HTTPS流量?

时间:2009-07-02 08:30:07

标签: ssl https man-in-the-middle

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

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

我正在考虑的事情:

  1. 通过黑客攻击我的主机文件(或设置备用DNS)来重定向网站。
  2. 使用自签名(但受信任)的证书在该站点上安装HTTPS服务器。
  3. 显然,如果您将私钥提供给它,WireShark可以看到HTTPS中的内容。我从未尝试过这个。
  4. 不知何故,将此流量代理到真实服务器(即,它是一个全面的中间人“攻击”)。
  5. 这听起来合情合理吗? WireShark能否真正看到HTTPS流量中的内容?任何人都可以指向合适的代理(并配置相同的代理)吗?

6 个答案:

答案 0 :(得分:13)

Fiddler能做你想做的吗?

  

Fiddler是什么?

     

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

     

Fiddler是免费软件,可以调试   来自几乎所有的交通   应用程序,包括Internet   资源管理器,Mozilla Firefox,Opera和   还有数千人。

答案 1 :(得分:8)

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

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

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

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

您还应该考虑Charles。从本回答时的产品说明:

  

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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