我遵循了如何在android模拟器上添加fiddler证书的说明,使用nox和memu模拟器,以及我的运行棉花糖的android手机,我将WiFi代理设置为通过本地网络指向我的PC,当我使用web浏览器打开网站时,一切正常,我收到警告,我选择继续,连接成功通过隧道和使用fiddler解密。
但是,当我尝试使用其他应用程序时,连接失败!我看到隧道连接,然后连接失败。我敢打赌,这是由于无效的HTTPS证书造成的,所以我的问题是,有没有一种方法可以让我在可信的机构上安装fiddler,这样连接到它时就不会出现警告?这样我就可以调试进出这些应用程序的HTTPS流量了。
我在SO上找到了类似的问题,但没有一个和我的完全相同,也没有正确的答案,所以我不确定这个问题是否真的是重复的。
谢谢
发布于 2020-07-05 00:09:31
在现代Android设备上,使用为目标API Level 24 (Android 7)或更高版本开发的应用程序,嗅探流量不再那么简单。应用程序的目标应用程序接口级别是在入口<uses-sdk android:targetSdkVersion="??"/>
中定义的它的AndroidManifest.xml
文件。
主要的问题是,如果你在安卓系统中安装Fiddler root CA证书,它会被标记为user certificate
(而不是system certificate
)。除非在应用程序中显式配置,否则这些用户证书是不受信任的。
请注意,一些应用程序进一步使用证书固定(叶或根CA固定)。因此,即使Fiddler根CA证书被安装为系统证书,应用程序也不会信任此证书,因为它无法锁定证书。
证书锁定也是网站的一项功能,因此一些网站会在web浏览器缓存中保存一个证书散列,该散列会将网站固定到某个证书。在这种情况下,清除浏览器缓存通常会删除这些固定数据。
根设备
如果您的设备是根设备,您可以尝试将Fiddler根CA证书安装为系统证书。Mitmproxy文档包含manually installing the mitmproxy certificate的使用方法。
如果你已经使用Magisk在手机上建立了根,有一个Magisk模块似乎能够自动安装用户证书作为系统证书:https://github.com/NVISO-BE/MagiskTrustUserCerts
或者,您可以安装Magisk + Edxposed + TrustMeAlready Xposed module。这允许在系统范围内禁用证书检查。
也可能是在设备上安装并运行Frida-Server,并将其挂钩到您感兴趣的应用程序中,以便在运行时修改SSL/TLS证书检查。AFAIK,基于Frida的框架Objection有一些脚本可以做到这一点。
非根设备
在非根设备上,只有在将应用程序安装到设备上之前修改它的选项。请注意,一些应用程序会检测到它们已被修改,并将拒绝工作。
要让应用程序信任用户证书,您必须修改应用程序中包含的network_security_config.xml
(参见here)。您可以使用apktool来反编译/重新编译应用程序。不要忘记对重新编译/重新打包的应用程序进行重新签名,例如使用Android SDK中的apksigner
。
也有可能通过在应用程序中包含用于Android的Frida小工具来修改应用程序。这将允许在非根设备上对此特定应用程序使用Frida。
https://stackoverflow.com/questions/62730978
复制相似问题