【发布时间】:2022-08-02 16:37:41
【问题描述】:
我在尝试对我的实验对象执行“中间人”攻击时遇到了一些困难:https://tiktok.en.uptodown.com/android
我在我的电脑上设置了代理,我通过它传递我的手机的流量。当然,我已经在我的根手机上安装了这个代理的证书作为系统一,我已经解密了 ssl 流量,但不是来自我的应用程序。
我认为有 SSL-pinning,或者这个应用程序使用了一个特定的内置证书。我尝试使用 frida 并使用这些脚本运行应用程序,这些脚本应该禁用 ssl-pinning 和 root 检查(不成功):
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/ https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/ https://codeshare.frida.re/@dzonerzy/fridantiroot/
还有一些我现在找不到的。
在此应用程序的互联网安全配置中,我没有看到任何我需要的东西(见下文)。我认为,当不在可调试模式下(在生产中)时,这应该使用系统证书传递流量
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<network-security-config>
<base-config cleartextTrafficPermitted=\"true\">
<trust-anchors>
<certificates overridePins=\"true\" src=\"system\" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src=\"user\" />
</trust-anchors>
</debug-overrides>
</network-security-config>
我还尝试使用 apktool 反编译应用程序并将我的证书添加到此配置中,但无法将其重新构建(即使没有更改,它也无法编译,可能是 apktool 错误)。
最有趣的是在模拟器上运行应用程序时,我可以看到 SSL 流量被解密。但是这个解决方案对我不起作用,因为这个应用程序的工作方式不同(例如,我在设置中没有“内容偏好”按钮)。
我的问题是,我只想知道我也可以深入研究的任何事情,也许是一些有做过类似事情经验的人(逆向工程师或安卓开发人员)的案例。或者他们只是有一些想法可能会帮助我找到解决方案。也许还有其他一些我不知道也没有在互联网上找到的防止 MITM 攻击的方法。谢谢。
-
所以取消固定脚本只有在应用程序没有被混淆的情况下才有效。例如,如果使用 OkHttp 库并且它是 cert pinner,则在混淆后很难识别 pinning。我是你我会在 Jadx 中反编译应用程序并尝试识别与网络相关的方法并使用
frida-trace挂钩它们。比较使用和不使用活动 mitm 代理的跟踪以查看差异,然后逐步了解类和方法。 -
在 Jadx 中,我会检查以
java.security.cert.Certificate或javax.security.cert.X509Certificate作为参数的方法。希望这将限制要查看的方法的数量。 -
您是看到加密流量还是根本看不到流量?
标签: android ssl proxy reverse-engineering frida