【问题标题】:debugging https from android emulator从 android 模拟器调试 https
【发布时间】:2013-01-11 13:21:33
【问题描述】:

我有一个使用 https 与 web 服务对话的 android(4.2) 应用程序。我想调试/记录每一个出去的 https。我有 fiddler 和 wireshark 来调试它们,但一切看起来都是加密的。可以使用模拟器和 fiddler/wireshark 设置中间人攻击来解码和显示 http url 及其参数吗?

【问题讨论】:

  • “https (...) 看起来已加密”。这就是它的作用。 https 将事物加密,因此没有嗅探器可以读取它。您可以做的是设置一个代理来拦截协商并用您的证书替换证书,但android会拒绝它,因为它与主机不匹配。
  • 另外,你知道你在问什么吗?如果那么容易,后果如何?
  • 但是,如果您正在研究调试,我假设它是您的应用程序,这里有 3 个选项:A/ 仅从 http 开始,当一切正常时切换到 https。 B/ 在服务器端调试。 C/ 使用调试器 (!)
  • Fiddler 能够充当中间人代理。您只需启用“解密 HTTPS”选项并按照 Nikolay 的说明继续操作。
  • 我无法执行上述操作,因为我无法控制。

标签: android https fiddler wireshark man-in-the-middle


【解决方案1】:

您可以使用 MITM 代理,例如 Burp。在设备/模拟器上安装受信任的 CA 证书后,您将能够解密 SSL 流量。

此外,如果您有服务器私钥(即,它是您自己的服务器),如果确实需要低级信息,您可以解密使用 Wireshark 拦截的流量。

【讨论】:

  • 我没有这台服务器的证书,也找不到在安卓模拟器中安装自签名证书的方法。
  • 与设备相同:设置->安全->从存储安装。如果您将 Burp 证书复制到外部存储(SD 卡),它会拾取它并为您提供安装选项。
【解决方案2】:

我曾经也有同样的需求。

可以在这里找到很好的解释:https://security.stackexchange.com/questions/8145/does-https-prevent-man-in-the-middle-attacks-by-proxy-server

事实证明,一些公司会这样做,尤其是在移动浏览器(Opera、Nokia)的情况下——为了节省带宽,他们通过自己的代理服务器传递所有流量并对其进行压缩。有趣的是,它们还可以与支持 HTTPS 的站点一起使用。他们将他们的(有点假的)证书安装在您的本地可信存储中,并且代理返回使用该假证书签名的压缩响应,以便浏览器不会抱怨潜在的攻击。

我还没有找到任何有助于创建这样一个代理的工具,所以最后(因为我控制了 web 服务和它运行的服务器)我在开发过程中启用了纯 HTTP。这可能节省了我几个小时的工作时间;)

【讨论】:

  • 您可以使用FiddlerBurp作为网络代理来拦截和解密https流量。
【解决方案3】:

我发现的最简单的选择是使用 mitmproxy。此处列出的简单步骤:

【讨论】:

    【解决方案4】:

    是的,您只需使用 Fiddler 即可。您需要在Tools -> Options 中启用“解密 HTTPs 流量”选项。 Fiddler 为 SSL 通信提供 CA 证书。您所要做的就是在您的 Android 设备上安装相同的内容。您可以通过从浏览器转到以下 URL 来获取证书

    http://machinesIPAddress:8888/FiddlerRoot.cer

    其中machinesIPAddress 是运行fiddler 的机器的地址。安装后你可以在下面看到相同的

    设置 -> 安全 -> 可信凭据 -> 用户选项卡

    我已经用截图列出了整个过程。希望对您有所帮助-

    Intercepting Android network calls using Fiddler Web Proxy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 2023-03-05
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多