前言
开发打的预发部环境debug.apk包,在安卓7.0以上通过fidder、charles代理抓取不到https请求;
参考各博主分析的关键点,后得到以下结论:
- 观察安卓的版本,"安卓7以上客户端CA证书授信凭证不走‘用户凭证’,走‘系统凭证’;
- 判断app是使用那种认证方式:单项认证、双向认证、 证书锁定(SSL/TLS Pinning);
- 验证自己的判断结论:使用反编译工具jadx将apk反编译查看源码,搜索源码的相关资料是否隔离了用户、系统证书凭据;使用低版本的安卓7尝试抓包;
解决方案
环境:
1、charles + 夜神模拟器(安卓7.0.5.5) + adb + jdk + openssl + jadx
2、charles + 小米 (安卓13)
环境1的抓包步骤
思路清晰的情况下,先判断app使用的那种认证方式;使用排除法,先使用安卓低版本抓包;
- 1、下载charles + 夜神模拟器(安卓7.0.5.5) + adb + jdk + openssl;
- 2、安装charles授信证书到本地根目录,导出charles的pem证书;
- 3、使用openssl 执行对应命令,根据证书生成对应的hash值,以.0后缀,copy到本地;
- 4、打开夜神模拟器后开启root指令,打开代理,将apk 安装到夜神模拟器;adb命令连接到模拟器,将证书导入到系统证书目录下;
- 5、charles观察是否能抓到包;
环境2的抓包步骤
本人是通过这种方式1抓到了,然后想在app上抓,用了其他方案;
- 手机上安装charles的cre凭证;
- 通过一偏博文,让开发修改了预发布环境的几段代码,大致意思就是这个app可以走用户凭证,然后就能抓到了;
参考文献
(*´∇`*)~ 小白如何在三天一步步逆向app,找到私钥 | Hexo (m01ly.github.io)
(97条消息) 信任用户证书(CA),实现Android7及以上HTTPS抓包_trust-anchors_一碗单炒饭的博客-CSDN博客
adb连接安卓模拟器 - 前端大兵 - 博客园 (cnblogs.com)
(96条消息) 安卓APP渗透—HTTPS证书校验绕过_双向证书认证 绕过_zkzq的博客-CSDN博客
如何将CA证书安装到Android的System下 - 绍荣 - 博客园 (cnblogs.com)
(96条消息) OpenSSL 最新版 快速安装 v3.0.2 v1.1.1n Windows系统_openssl for windows 64位 完整安装包_身价五毛的博客-CSDN博客