Android安全-绕过证书绑定篇

admin 2023年12月20日09:17:36评论78 views字数 1975阅读6分35秒阅读模式

-------------------------------------------------------

0x00 前言

之前写到了安卓端手机进行抓包,但是很多时候APP是存在证书绑定的,其中大概可以分成是SSLPinning、双向校验两种情况。本文针对SSLPinning情况来进行绕过实现。
SSLPinng是Google官方推荐的校验方式,原理是在客户端中预先设置好证书信息,握手时与服务端返回的证书进行比较,以确保服务端返回的证书的真实性。
0x01 JustTrustMe模块
绕过SSLPinning的方式有两种一种是使用XP的JustTrustMe模块、一种是使用frida,先介绍第一种。前文中介绍了安装Magisk的方式,现在要介绍将LSPosed模块安装到Magisk中。
安装LSPosed
Github仓库地址如下:https://github.com/LSPosed/LSPosed
首先打开Magisk,在设置中找到Zygisk选项并勾选。

Android安全-绕过证书绑定篇

勾选Zygisk选项,勾选之后手机会要求重启。

Android安全-绕过证书绑定篇

这个时候去到LSPosed的Github仓库下载新版本的zip安装包。需要选择zygisk版本的。

Android安全-绕过证书绑定篇

下载完成之后将zip包push到手机的/sdcard/Download目录下

Android安全-绕过证书绑定篇

按照之前安装Magisk模块的方式安装该模块即可。

Android安全-绕过证书绑定篇

直接选择该模块并安装。

Android安全-绕过证书绑定篇

安装好之后手机会需要重启。重启完成,手机下拉通知栏的话就会看到LSPosed已加载。之后我们找到LSP也是从这里找到,首次点击进入的话会提示新建一个桌面图标,之后可以在桌面找到LSP了就。

Android安全-绕过证书绑定篇

Android安全-绕过证书绑定篇

安装JustTrustMe模块

在Github仓库中下载:https://github.com/Fuzion24/JustTrustMe

Android安全-绕过证书绑定篇

现在我的LSP模块中还是空的,没有一个模块。

Android安全-绕过证书绑定篇

然后将下载的模块使用adb install安装到手机上。

Android安全-绕过证书绑定篇

就可以看到添加了一个新的模块

Android安全-绕过证书绑定篇

来尝试对一个APP进行抓包,但是可以看到这一串提示,包括charles中的一个红色的报错,以及手机上会显示“网络不给力”或者无网络等等的其他提示。都可以判断是存在SSLPinning的。

Android安全-绕过证书绑定篇

将我们要抓包的APP在模块中勾选上。

Android安全-绕过证书绑定篇

重新抓包即可抓取到数据包,不会提示无网络。

Android安全-绕过证书绑定篇

0x02 frida绕过

但是对于存在Root检测的APP来说,常用的绕过root检测的方式就是配置排除列表。一般来说在排除列表中的APP就不会检测到手机已经root了。但是这种方式有弊端就是配置了排除列表之后APP就不能使用LSP模块了。

Android安全-绕过证书绑定篇

可以看到这里会提示“在排除列表内”

Android安全-绕过证书绑定篇

这种情况就可以使用frida来进行绕过,那么有两种方式,一种是objection使用、一种是使用frida脚本。

使用objection

frida环境配置

在frida的官方仓库中。下载好frida-server

仓库地址:https://github.com/frida/frida
因为我们是安卓手机的arm64版本所以要下载对应的版本

Android安全-绕过证书绑定篇

下载好之后是一个xz文件,对其进行解压,并push到安卓手机的/data/local/tmp目录下

Android安全-绕过证书绑定篇

使用adb shell进入安卓手机,之后为其添加执行权限并执行

Android安全-绕过证书绑定篇

这样frida的服务端就配置好了。之后需要配置PC端

pip3 install fridapip3 install frida-tools

执行完这两条执行安装好frida之后运行frida --version看看是否安装成功。注意这里的版本号,PC端跟安卓端一定要对应。

Android安全-绕过证书绑定篇

安装objection的话可以使用pip3来安装一下

pip3 install objection

执行objection version可以看到如下输出即是安装成功

Android安全-绕过证书绑定篇

那么在手机端将frida-server启动,然后执行

objection -g com.xxx(APP包名) explore

Android安全-绕过证书绑定篇

如图所示即是注入成功,至于获取APP的包名的方法,可以使用frida-ps -Ua。将要注入的APP运行起来,然后执行命令。根据APP的名字可以找到对应的包名。

Android安全-绕过证书绑定篇

在使用完objection注入之后,执行android sslpinning disable就可以直接尝试进行抓包了。

Android安全-绕过证书绑定篇

使用frida脚本

使用脚本https://github.com/scopion/frida-ssl-pinning

这里我们需要将charles的证书下载下来,具体的下载证书的方法就不赘述了百度上有很多种,然后将下载的书修改名称后放置到android测试机的/data/local/tmp/cert.crt

Android安全-绕过证书绑定篇

然后开始注入脚本即可

Android安全-绕过证书绑定篇

这个时候就可以愉快的进行抓包了。

0x03 后记

后续简单介绍下使用frida进行动态Hook,以及解密数据的Hook。


原文始发于微信公众号(ElysiumSec):Android安全-绕过证书绑定篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月20日09:17:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android安全-绕过证书绑定篇http://cn-sec.com/archives/2318495.html

发表评论

匿名网友 填写信息