android - 某些 androids 应用程序无法通过 fiddler 连接

标签 android debugging https ssl-certificate fiddler

我已按照说明如何在 android 模拟器上添加 fiddler 证书,同时使用 nox 和 memu 模拟器,以及我的 android 手机运行 marshmallow,当我打开一个网站时,我将 WiFi 代理设置为通过本地网络指向我的 PC使用网络浏览器,一切正常,我收到警告,我选择继续,连接成功隧道并使用 fiddler 解密。
但是,当我尝试使用其他应用程序时,连接失败!我看到隧道连接,然后连接失败。我敢打赌,这是由于 HTTPS 证书无效,所以我的问题是,有没有办法让我将 fiddler 安装到受信任的机构,以便连接到它时不会发出警告?所以我终于可以调试来自和去往这些应用程序的 HTTPS 流量。
我在 SO 上发现了类似的问题,但没有一个与我的完全相同,也没有正确的答案,所以我不确定这个问题是否真的有资格作为重复问题。
谢谢

最佳答案

在使用为目标 API 级别 24 (Android 7) 或更高级别开发的应用程序的现代 Android 设备上,嗅探流量不再那么简单。应用程序的目标 API 级别定义为 AndroidManifest.xml条目中的文件 <uses-sdk android:targetSdkVersion="??"/> .
主要问题是,如果您在 Android 中安装 Fiddler 根 CA 证书,它会被标记为 user certificate。 (不是 system certificate )。除非在应用程序中明确配置,否则 user certificates are not trusted.
尊重用户 CA 证书的少数应用程序之一是 Chrome .因此,使用 Chrome 测试代理和安装的根 CA 证书是否有效是一个坏主意,因为它可能只适用于 Chrome,但不适用于应用程序。
请注意,某些应用程序进一步使用证书固定(叶或根 CA 固定)。因此,即使 Fiddler 根 CA 证书作为系统证书安装,应用程序也不会信任此证书,因为它在证书固定时失败。
证书固定也是一个网站功能,因此一些网站在网络浏览器缓存中保存一个证书哈希,将网站固定到某个证书。在这种情况下,清除浏览器缓存通常会删除那些固定数据。
根设备
如果您的设备已 Root ,您可以尝试将 Fiddler 根 CA 证书安装为系统证书。 Mitmproxy 文档包含 manually installing the mitmproxy certificate 的操作方法.
如果您使用 Magisk 将手机 Root ,则有一个 Magisk 模块似乎能够自动安装用户证书作为系统证书:https://github.com/NVISO-BE/MagiskTrustUserCerts
或者,您可以安装 Magisk + Edxposed + TrustMeAlready Xposed module .这允许在系统范围内禁用证书检查 - 警告:这消除了 SSL/TLS 对手机上所有应用程序主动攻击的安全性。因此,只能在仅用于黑客攻击的设备上执行此操作!
也可以安装和运行Frida - 设备上的服务器并连接到您感兴趣的应用程序,以在运行时修改 SSL/TLS 证书检查。 AFAIK 基于 Frida 的框架 Objection有一些脚本可以这样做。
没有开启Root的设备
在非 root 设备上,只有在将应用程序安装到设备之前修改应用程序的选项。请注意,某些应用程序会检测到它们已被修改并拒绝运行。
要让应用信任用户证书,您必须修改 network_security_config.xml (参见例如 here )包含在应用程序中。您可以使用apktool反编译/重新编译应用程序。不要忘记重新签署重新编译/重新打包的应用程序,例如使用 apksigner来自 Android SDK。
有一些工具可以自动进行反编译、修改和签名,例如 apk-mitm .
还可以通过在应用程序中包含适用于 Android 的 Frida 小工具来修改应用程序。这将允许在非 root 设备上将 Frida 用于此特定应用程序。

关于android - 某些 androids 应用程序无法通过 fiddler 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68764316/

相关文章:

android - 现有库可重现 Foursquare android 应用程序的放大 imageView 效果?

android - MediaCodec - 如何处理屏幕方向?

android - iOS中的 Activity 生命周期相当于什么?

flash - 如何启用Flash调试器?

debugging - Windbg 条件断点忽略条件本身

Python Mechanize 模块加密

android - 如何将 .p12 证书添加到 Android 设备?

java - JBoss 线程等待随机监视器

ssl - 签发自签名证书

c# - 使用 WebRequest 和 WebResponse 登录 Https 网站不起作用 C#