使用Frida绕过Android SSL Re-Pinning
在Android应用中可以找到两种SSL Pinning的实现:
自己实现的和官方推荐的。
自己实现:通常使用单个方法,执行所有证书检查(可能使用自定义库),返回一个布尔值来判断是否正常。这意味着我们可以通过识别进行判断的关键函数,然后hook它的返回值来轻松地绕过此方法。针对这种检测方法,可以使用Frida JavaScript脚本,hook关键函数,使他永远返回True, 绕过检查。
官方推荐: 当SSL Pinning是根据Android的官方文档实现时,事情变得更加艰难。不过现在还是有很多优秀的解决方案,比如定制的Android图像,底层框架,使socket.relaxsslcheck = yes等等。几乎每个尝试绕过SSL Pinning的方案都是基于操纵SSLContext。我们可以用Frida操纵SSLContext吗?我们想要的是一个通用的方法,我们想用Frida JavaScript脚本来实现这个目的。
本次使用的APP为之前项目遇到的一个无法抓包的蛇皮apk(可反编译)。借此,防止下次再遇到。(https://app.taibi.io/down)
绕过第一种情况
1 | /* |
adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt adb shell "/data/local/tmp/frida-server &" frida -U -f **it.app.mobile** -l frida-android-repinning.js --no-pause
如下图:
但是
初始化
首先对一个app进行破解抓包,逆向其代码必不可少。
参考:
https://www.anquanke.com/post/id/86507
除此之外:
virtualxposed值得推荐:https://xposed.appkg.com/tag/virtualxposed