objection绕过SSL Pinning
起因
随着移动端安全逐渐加强,现在越来越多的app已经无法抓到包,或者提示网络相关错误。其实根本原因在于客户端发包时对于服务端的ssl证书进行了校验。 使用Burp抓APP包时已经不能简单的在手机上安装burp的证书来实现了。
SSL Pinning原理
证书锁定(SSL/TLS Pinning)即将服务器提供的SSL/TLS证书内置到APP客户端中,当客户端发请求时,通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性。 所以,ssl pinning需要开发人员将APP代码内置仅接受指定CA或域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性。但是CA签发证书都存在有效期问题,所以缺点是在证书续期后需要将证书重新内置到APP中。
准备
我的手机提前root了
- 在电脑上安装adb用来连接手机,手机需要开启开发者模式,使用
adb devices
看是否能识别自己手机(具体的安装方法百度一下,比较简单) - 安装frida(objection包含在frida里)分为两个部分,客户端和服务端(客户端在电脑上安装,服务端安装在手机里)
- 客户端的安装:需要用到Python3环境,
pip install objection
,安装objection时会连带frida客户端一起安装 - 服务端的安装:1)使用
adb shell getprop ro.product.cpu.abi
查看手机的版本,之后在(https://github.com/frida/frida/releases) 找到对应的server压缩包,下载到电脑上(我的手机是arm64-v8a的,所以下载的是frida-server-15.2.2-android-arm64.xz这个文件),进行解压
- 使用
adb push C:xxxfrida-server-15.2.2-android-arm64 /data/local/tmp
电脑上把解压后的server文件传到手机里 - 使用
adb shell
进入手机,使用su
切换为root用户,进入到server传入的目录使用chmod 777 /data/local/tmp/frida-server-15.2.2-android-arm64
更改文件权限,使用./frida-server-15.2.2-android-arm64 &
启动frida服务
objection绕过
说的简单些是实现中间人攻击,绕过他的验证机制,这个方法比较方便 接下来就是在电脑上操作
- 启动APP,使用
objection -g <app package name> explore
,这里需要知道应用的包名,使用包名来启动APP,比如小米主题壁纸APP的包名就是com.android.thememanager
- 上一步命令执行后会进入一个 objection 的 shell,执行命令
android sslpinning disable
即可绕过APP的SSL Pinning - 最后就可以正常使用burp抓APP的包了
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=367sba6afgkk8
Q.E.D.