【问题标题】:How to capture HTTPS(TLS 1.0) communications from Android App with Fiddler4?如何使用 Fiddler4 从 Android 应用程序捕获 HTTPS(TLS 1.0) 通信?
【发布时间】:2015-10-28 04:23:33
【问题描述】:

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

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

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

我也尝试将协议设置为“tls1.0”(见下面的截图),但没有效果。

欣赏您的想法。

【问题讨论】:

    标签: android ssl https apk fiddler


    【解决方案1】:

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

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


    TLS1.0 可能是 Fiddler 中最受支持的 HTTPS 协议。如果发生故障,您还没有显示 Fiddler 的 Web Sessions 列表或 Log 选项卡中的内容,但我的猜测是 Web 会话列表可能只显示 CONNECT 并且 Log 选项卡具有以下内容:

    !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)

    正确吗?如果是这样,最可能的解释是有问题的 Android 应用启用了 certificate pinning

    来自Fiddler book

    证书固定

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

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

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

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

    不幸的是, 没有通用的解决方法来解决这个问题;最好的你 可以做的是免除该应用程序的流量使用解密 HTTPS 选项卡或通过设置x-no-decrypt 会话标志 CONNECT 隧道。该标志将阻止 Fiddler 解密 隧道中的流量,它将不间断地流经 Fiddler。

    如果您非常认真地想绕过固定,您可以越狱设备并使用任意数量的第 3 方工具包来禁用固定代码。

    【讨论】:

    • 谢谢。是的,只是一个连接。日志内容是“08:45:36:3975 Assembly 'C:\Program Files (x86)\Fiddler2\CertMaker.dll' was not found. Skipping load of Certificate Generation module. 08:45:36:4092 /Fiddler. CertMaker> 使用 Fiddler.DefaultCertificateProvider+CertEnrollEngine 生成证书”
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多