我已经按照说明如何在Android模拟器上添加fiddler证书,使用nox和memu模拟器,以及我的Android手机运行棉花糖,我设置了WiFi代理指向我的PC通过本地网络,当我打开一个网站使用网络浏览器,一切正常,我收到警告,我选择继续和连接成功隧道和解密使用fiddler.
但是,当我尝试使用其他应用程序时,连接失败了!我看到了隧道连接,然后连接失败了。我敢打赌,这是由于无效的HTTPS证书,所以我的问题是,有没有办法让我安装fiddler到可信机构,使连接到它将通过没有警告?这样我就可以最终调试HTTPS流量进出这些应用程序。
我在SO上找到了类似的问题,但没有一个和我的完全一样,也没有正确的答案,所以我不确定这个问题是否真的有资格重复。
谢谢
1条答案
按热度按时间ujv3wf0j1#
在现代Android设备上,使用针对目标API级别24(Android 7)或更高级别开发的应用嗅探流量不再那么简单。应用的目标API级别定义为条目
<uses-sdk android:targetSdkVersion="??"/>
中的AndroidManifest.xml
文件。主要的问题是,如果你在Android中安装Fiddler根CA证书,它会被标记为
user certificate
(而不是system certificate
)。Chrome是尊重用户CA证书的罕见应用之一。因此,使用Chrome来测试代理和安装的根CA证书是否有效是一个坏主意,因为它可能只在Chrome中有效,而不适用于应用。
请注意,一些应用还使用证书绑定(叶CA或根CA绑定)。因此,即使Fiddler根CA证书作为系统证书安装,应用也不会信任此证书,因为它无法绑定证书。
证书绑定也是网站的一项功能,因此某些站点会在Web浏览器缓存中保存证书哈希,以将站点绑定到某个证书。在这种情况下,清除浏览器缓存通常会删除这些绑定数据。
根设备
如果您的设备是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对手机上所有应用程序的主动攻击的安全性。2因此,只在你用于黑客攻击的设备上执行此操作!
也可以在设备上安装并运行Frida-Server,然后连接到您感兴趣的应用程序,以便在运行时修改SSL/TLS证书检查。AFAIK基于Frida的框架Objection有一些脚本可以完成此操作。
非根设备
在非root设备上,只有在安装应用程序之前修改应用程序的选项。请注意,一些应用程序会检测到它们已被修改,并拒绝工作。
要让应用信任用户证书,您必须修改应用中包含的
network_security_config.xml
(例如,请参阅here)。您可以使用apktool反编译/重新编译应用。不要忘记对重新编译/重新打包的应用进行重新签名,例如,使用Android SDK中的apksigner
。有一些工具可以自动反编译、修改和签名,比如apk-mitm。
还可以通过将适用于Android的Frida小工具包含到应用程序中来修改应用程序。这将允许在非根设备上将Frida用于此特定应用程序。