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了

  1. 在电脑上安装adb用来连接手机,手机需要开启开发者模式,使用adb devices看是否能识别自己手机(具体的安装方法百度一下,比较简单
  2. 安装frida(objection包含在frida里)分为两个部分,客户端和服务端(客户端在电脑上安装,服务端安装在手机里)
  3. 客户端的安装:需要用到Python3环境,pip install objection ,安装objection时会连带frida客户端一起安装
  4. 服务端的安装: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这个文件),进行解压版本
  5. 使用adb push C:\xxx\frida-server-15.2.2-android-arm64 /data/local/tmp电脑上把解压后的server文件传到手机里
  6. 使用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绕过

说的简单些是实现中间人攻击,绕过他的验证机制,这个方法比较方便
接下来就是在电脑上操作

  1. 启动APP,使用objection -g <app package name> explore,这里需要知道应用的包名,使用包名来启动APP,比如小米主题壁纸APP的包名就是com.android.thememanagerssl
  2. 上一步命令执行后会进入一个 objection 的 shell,执行命令 android sslpinning disable 即可绕过APP的SSL Pinning
  3. 最后就可以正常使用burp抓APP的包了

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=367sba6afgkk8

Q.E.D.