绕过 Android SSL Pinning

转载请注明出处。请前往 Tiga on Tech 查看原文以及更多有趣的技术文章。

SSL Pinning 指的是,对于 target sdk version > 23 的 Android App,App 默认指信任系统的根证书或 App 内指定的证书,而不信任用户添加的第三方证书。这会导致我们在对 App 做逆向分析的时候,使用 Charles 无法抓 https 包(如图):

针对 SSL Pinning,常见的绕过方法有两种:

1.重打包 APK,修改 AndroidManifest 的配置:优点是一次重打包永久有效,在其他手机/电脑上抓包时不需要重复搭建环境,而且也不需要手机有 root 权限。缺点是因为重打包后 APK 签名被改了,容易被检测出来,可能需要进一步绕过签名校验。

2.使用 injection + hook 的办法绕过 client 端的证书校验,常见的 native 注入框架 xposed, frida 和 objection 都有相关的工具:优缺点和重打包恰好相反。

重打包

重打包是绕过 SSL Pinning 比较常见且实用的办法。因为在 APK 的 target sdk version <= 23 时,默认是信任用户添加的第三方证书的,因此我们的目标是修改 AndroidManifest 里的 target sdk version 为 23(APK 当前设置的是 29)。

1. 使用 apktool 直接重打包

  • 第一步:解包。因为我们只需要修改 AndroidManifest 的配置,因此不需要 decode source,只需要 decode resource,因此使用的命令是:apktool d -s origin.apk

  • 第二步:修改 AndroidManifest 的 targetSdkVersion

  • 第三步:重打包。命令 apktool b <decode output directory>

在对某个 App 做实验的时候,第三步重打包时出现了以下 error。搜索了一下,大概知道是 apktool 编译资源文件时的问题,并且没有找到相应的解决办法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值