使用charles嗅探https请求,你的API并不安全

安卓 root 手机

1、准备 root 过的 android 手机,关于自己手机root方法,自行查找解决。

adb root
adb disable-verity

2、并重新挂载分区,使系统根目录可写入

adb shell "mount -o rw,remount /system"

制作并上传证书

使用charles嗅探https请求,你的API并不安全

根据图示菜单选择 “Save Charles Root Certificate”,导出证书的后缀为 .pem

2、查看证书的 hash 值

$ openssl x509 -inform PEM -subject_hash_old -in ~/Downloads/charles-proxy-ssl-proxying-certificate.pem |head -1

26f93358

3、证书重命名为 {hash}.0

mv ~/Downloads/charles-proxy-ssl-proxying-certificate.pem 26f93358.0

4、上传证书到手机里的 /system/etc/security/cacerts 目录下

adb push 26f93358.0 /system/etc/security/cacerts

adb shell "chmod 664 /system/etc/security/cacerts/26f93358.0"

5、重启手机

charles 左侧选中域名,开启 SSL代理(Enable SSL Proxying)

使用charles嗅探https请求,你的API并不安全

最后说明

iOS 只需要手动安装证书,并授权即可,比 Android 要简单。

从 android 10 开始,针对 /system 分区多了一层保护,不能直接写入,暂时还没有找到解决方案,如果有知情的大牛欢迎给出解决方案。

更新 android 10 以后破解 /system 防护的方法

下载 Magisk App:
magiskmanager.com/downloading-magi...

点击 Install 会重新刷 bootloader(注意自担风险哦,手机变砖或丢失数据,自行承担)。

使用charles嗅探https请求,你的API并不安全

本作品采用《CC 协议》,转载必须注明作者和本文链接
不住念,无名无相
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

如果客户端是手机app的话,那么api通常会做对称加密的

3年前 评论

这是数抓包么 还是啥意思

3年前 评论

@liuqiang_007 对,就是http(s) 代理中间人攻击,所以中间人需要在 系统里植入受信任的签名证书。

3年前 评论

安卓植入证书这一步,如果是一般的APP,不需要adb,手机设置好代理之后访问chls.pro/ssl下载并安装证书就可以了

不过这个方式倒是新颖,不知道能不能对付阿里系的APP抓包API,他们似乎不接受用户自行安装的CA

3年前 评论

@Tsukasa_Kanzaki 你说的这个早期安卓(大概android 6之前吧)可以,支持用户手动安装证书。后期安卓必须植入到系统里(/system/etc/security/cacerts/)才可以。所以我这个方法是针对系统目录的植入,但android 10又增强防护了,目前真机上还无解。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!