2009-07-02 60 views
21

我有一个与远程Web服务交谈的本地应用程序(我没有写,也无法更改)。它使用HTTPS,我想看看流量中有什么。以明文方式捕获HTTPS流量?

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

我正在考虑:

  1. 通过黑客攻击我的hosts文件(或设置备用DNS)重定向的网站。
  2. 在该站点上安装HTTPS服务器,使用自签名(但受信任)的证书。
  3. 显然,WireShark可以看到HTTPS中有什么,如果你给它私钥。我从来没有试过这个。
  4. 不知何故,将这个流量代理到真实的服务器(即它是一个全面的中间人“攻击”)。

这听起来明智吗? WireShark能真正看到HTTPS流量中的内容吗?任何人都可以指向我一个合适的代理(和相同的配置)?

回答

11

Fiddler做你想要的吗? :

什么是提琴手?

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

提琴手是免费软件,可以从几乎任何应用程序 ,包括互联网 浏览器,Mozilla Firefox,歌剧调试 流量,并 数千人。

+1

是的,它可以作为一个人在这方面的中间人HTTPS请求代理 - 请注意,它提供了一个未签名的证书,因此,如果您的应用程序需要信任的证书,你就必须停用这个要求,或者不信任证书 - 这提琴手也不建议:http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp – 2009-07-02 08:55:06

+0

我知道了观看HTTPS从Internet Explorer和Chrome的流量;现在找出它是否适用于有问题的应用程序... – 2009-07-02 09:23:11

+0

...除了所讨论的应用程序仅以管理员权限运行,Fiddler似乎并不想在我的管理员帐户下安装HTTPS证书(我大部分时间都在运行LUA)。 – 2009-07-02 09:29:45

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

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

0

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

7

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

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

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

假设你能满足上面的约束,“跟随SSL流”右击命令的工作相当出色。

2

你也应该考虑Charles。从这个答案的时候,产品说明:

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