某些 Android 应用程序无法通过 fiddler 连接

问题描述 投票:0回答:1

我已按照有关如何使用 nox 和 memu 模拟器以及运行 Marshmallow 的 Android 手机在 Android 模拟器上添加 fiddler 证书的说明进行操作,我将 WiFi 代理设置为通过本地网络指向我的电脑,当我打开使用网络浏览器访问网站,一切正常,我收到警告,我选择继续,连接已成功隧道化并使用 fiddler 解密。

但是,当我尝试使用其他应用程序时,连接失败!我看到隧道连接,然后连接失败。我敢打赌,这是由于 HTTPS 证书无效,所以我的问题是,有没有办法让我将 fiddler 安装到受信任的机构,以便连接到它时不会出现警告?所以我终于可以调试这些应用程序之间的 HTTPS 流量了。

我在这里发现了类似的问题,但没有一个与我的完全相同,也没有正确的答案,所以我不确定这个问题实际上是否符合重复的条件。

谢谢

android debugging https ssl-certificate fiddler
1个回答
15
投票

在现代 Android 设备上,使用为目标 API 级别 24 (Android 7) 或更高级别开发的应用程序进行嗅探流量不再那么简单。应用程序的目标 API 级别在条目

AndroidManifest.xml
中的
<uses-sdk android:targetSdkVersion="??"/>
文件中定义。

主要问题是,如果您在 Android 中安装 Fiddler 根 CA 证书,它会被标记为

user certificate
(而不是
system certificate
)。除非在应用程序中明确配置,否则这些 用户证书不受信任。

Chrome 是尊重用户 CA 证书的罕见应用程序之一。因此,使用 Chrome 来测试代理和安装的根 CA 证书是否有效是一个坏主意,因为它可能只在 Chrome 中有效,但不适用于应用程序。

请注意,某些应用程序进一步使用证书固定(叶或根 CA 固定)。因此,即使 Fiddler 根 CA 证书作为系统证书安装,应用程序也不会信任该证书,因为它在证书固定上失败。

证书固定也是一种网站功能,因此某些网站会在网络浏览器缓存中保存证书哈希,将网站固定到某个证书。在这种情况下,清除浏览器缓存通常会删除那些固定数据。

已 Root 的设备

如果您的设备已root,您可以尝试安装Fiddler根CA证书作为系统证书。 Mitmproxy 文档包含如何

手动安装 mitmproxy 证书

如果您使用Magisk对手机进行了root,有一个Magisk模块似乎能够自动安装用户证书作为系统证书:

https://github.com/NVISO-BE/MagiskTrustUserCerts

您也可以安装 Magisk + Edxposed +

TrustMeAlready Xposed 模块。这允许在系统范围内禁用证书检查 - 警告:这会消除手机上所有应用程序针对主动攻击的 SSL/TLS 安全性。因此,只能在您仅用于黑客攻击的设备上执行此操作!

编辑 2024-02:

现在,如果应用程序发生了一些变化,则使用大量插件来信任所有证书。现在 Zygisk 模式下的 Magisk + Lspond + TrustMeAlready 可以使用了。

还可以在设备上安装并运行

Frida-Server 并连接到您感兴趣的应用程序,以在运行时修改 SSL/TLS 证书检查。 AFAIK 基于 Frida 的框架Objection 有一些脚本可以做到这一点。

未 root 的设备

在未 root 的设备上,在将应用程序安装到设备上之前,只能选择修改应用程序。请注意,某些应用程序会检测到它们已被修改并拒绝工作。

要让应用程序信任用户证书,您必须修改应用程序中包含的

network_security_config.xml

(参见例如
此处)。您可以使用 apktool 反编译/重新编译应用程序。不要忘记重新签名重新编译/重新打包的应用程序,例如使用 Android SDK 中的 apksigner

有一些工具可以自动进行反编译、修改和签名,例如

apk-mitm

还可以通过将适用于 Android 的 Frida 小工具包含到应用程序中来修改应用程序。这将允许在非 root 设备上使用 Frida 来运行此特定应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.