如何使用Fiddler4从Android应用程序捕获HTTPS(TLS 1.0)通信?

时间:2015-10-28 04:23:34

标签: android ssl https apk fiddler

我在Fiddler4选项中启用了HTTPS,它可以捕获我机器上大多数Android应用程序的HTTPS通信(使用Android模拟器,通过WIFI代理设置)。

但对于某些应用程序,它总是失败。例如Kayak。 它总是说“糟糕!连接到互联网时出现问题。请稍后再试。”

我注意到Kayak App使用TLS 1.0(参见下面的屏幕截图,它来自Microsoft Network Monitor 3.4),我想这可能与它有关。 enter image description here

我还尝试将协议设置为“tls1.0”(参见下面的屏幕截图),但没有效果。 enter image description here

欣赏你的想法。

1 个答案:

答案 0 :(得分:3)

更新进一步调查显示,如果该字段编码为SubjectCN,某些Android应用程序将不接受证书“BMPString字段中的通配符。 makecert生成器使用BMPString,因此您可以取消选中Use wildcards框或切换到工具>中的CertEnroll生成器。提琴手选项> HTTPS>证书生成者。

以下文字仍适用于实施固定的应用。

TLS1.0可能是Fiddler中最受支持的HTTPS协议。如果发生故障,您还没有显示Fiddler的Web Sessions列表或Log标签中的内容,但我的猜测是Web会话列表可能只显示CONNECT和{{{ 1}}标签有类似的内容:

Log

这是对的吗?如果是这样,最可能的解释是相关的Android应用已启用 certificate pinning

来自Fiddler book

  

证书固定

     

极少数HTTPS客户端应用程序支持该功能   客户端应用程序称为“证书固定”   硬编码只接受一个特定证书。即使是   connection使用链接到root的证书   完全受操作系统信任,此类应用程序将拒绝   接受意外的证书。

     

迄今为止,一些Twitter和   Dropbox应用程序包含此功能,Windows 8 Metro应用程序可能会选择加入   需要特定证书而不是依赖于   系统的受信任的根存储。 Firefox的自动浏览器更新   当Fiddler解密其流量时,功能将无声地失败。该   名为EMET的Microsoft Security工具包可以在任何版本中启用固定   申请某些“高价值”网站(包括Windows Live)。   Chrome浏览器支持固定,但它可以免除本地信任   像Fiddler的根。

     

当证书固定应用程序执行时   HTTPS握手通过CONNECT隧道到Fiddler,它将进行检查   响应证书并拒绝发送任何进一步的请求   当它发现Fiddler生成的证书时。不幸,   解决这个问题没有通用的解决方法;最好的你   可以做的是免除该应用程序的流量来解密   HTTPS选项卡或通过设置x-no-decrypt会话标志   连接隧道。该标志将阻止Fiddler解密   在隧道中的交通,它将不间断地流经Fiddler。

     

极少数HTTPS客户端应用程序支持该功能   客户端应用程序称为“证书固定”   硬编码只接受一个特定证书。即使是   connection使用链接到root的证书   完全受操作系统信任,此类应用程序将拒绝   接受意外的证书。到目前为止,一些Twitter和   Dropbox应用程序包含此功能,Windows 8 Metro应用程序可能会选择加入   需要特定证书而不是依赖于   系统的受信任的根存储。 Firefox的自动浏览器更新   当Fiddler解密其流量时,功能将无声地失败。该   名为EMET的Microsoft Security工具包可以在任何版本中启用固定   申请某些“高价值”网站(包括Windows Live)。   Chrome浏览器支持固定,但它可以免除本地信任   像Fiddler的根。当证书固定应用程序执行时   HTTPS握手通过CONNECT隧道到Fiddler,它将进行检查   响应证书并拒绝发送任何进一步的请求   当它发现Fiddler生成的证书时。

     

不幸的是,   解决这个问题没有通用的解决方法;最好的你   可以做的是免除该应用程序的流量来解密   HTTPS选项卡或通过设置!SecureClientPipeDirect failed: System.IO.IOException Authentication failed because the remote party has closed the transport stream. for pipe (CN=*.kayak.com, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com)会话标志   x-no-decrypt隧道。该标志将阻止Fiddler解密   在隧道中的交通,它将不间断地流经Fiddler。

如果你非常认真地规避钉扎,你可以越狱设备并使用任何一些第三方工具包来禁用钉扎代码。