在安卓7.0+上用charles抓https

一说起charles抓https,大家可能要笑我了,这还用得着你教?证书往手机上一装不就行了?

然而事情并没有这么简单,很多时候你会发现,即使你配置正确,在手机上也装好了charles证书,仍然无法抓到https,如下图所示,这是为什么呢?

Charles提示Received fatal alert: certificate_unknown,你还以为是你证书没配正确,折腾半天也找不到正确姿势,其实这都是安卓系统搞的鬼。

话说回来,并不是安卓要搞鬼,而是安卓专门为了防抓包防监听而设置的新的安全策略,详情可以参见这里:https://developer.android.com/training/articles/security-config

简言之,7.0以前,安卓系统默认是选择信任系统证书及用户证书的,我们安装的charles证书就是用户证书,然而到了7.0以后,安卓决定默认不信任用户自己安装的证书了(可能Google觉得用户都是小白,瞎几把装证书,所以一刀切了),所以我们现在即使装了证书系统也不信任,自然也抓不到包了。

有什么办法解决呢?这才是这篇文章主要内容,我们分情况看下:

一、我是开发者,我要抓自己app的包

这种情况参考官方文档就行了,可以在app里配置信任用户证书,不多说

二、我想研究别人的app

这种就比较麻烦了,我整理了下资料,大致有以下一些方法来绕过安卓的限制:

1. 反编译

反编译后用官方的方法绕过,至于反编译的难度,这个不好说,有的app反破解做得好,会很难。方法还是说一下,使用apktool反编译应用程序,完成该过程后,在resources目录中建好网络安全配置文件,设置成信任用户证书。完成后,使用apktool重新编译应用程序,并使用Java JDK提供的jarsigner工具对生成的APK文件进行签名。

2. 运行时hook

利用动态二进制插桩技术,在程序运行时动态插入额外代码,改变安卓的网络安全配置行为。类似的hook软件比如frida,在参考资料中有其使用方法, 可以自行查阅

3. 把charles证书装成系统证书

这大概是最一劳永逸的方法了,你不是只信任系统证书,不信任用户证书吗?那我就把charles证书装成系统证书,就这么简单粗暴!然而虽然简单粗暴,但方法依然很复杂,你是不是以为root完,把证书往系统证书目录一拷贝就行了?行是行,但是不妥,因为系统证书在system目录,这表示你得将system目录设为可写的,但这个方法实在太粗暴了,以至于安卓的反root算法很容易就检测出来,然后你的手机从此以后就各种幺蛾子了,什么app启动不了啊七七八八的事。不过没关系,我这里还有一种不需要root的方法:

  • 解锁手机 Bootloader
  • 刷入第三方 Recovery(例如 TWRP)
  • 下载官方 Magisk 包,然后通过第三方 Recovery 刷入
  • 下载AlwaysTrustUserCerts.zip (这是一个Magisk模块)
  • 通过Magisk安装上面这个模块
  • 正常途径安装好charles证书(这时候安装,charles证书还在用户证书下)
  • 重启
  • 你会发现charles证书已经自动变成了系统证书,完

4. 换iPhone

我说这是最省事的方式你应该没意见吧?

参考资料:

https://developer.android.com/training/articles/security-config

https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2017/november/bypassing-androids-network-security-configuration/

https://blog.nviso.be/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/

https://github.com/NVISO-BE/MagiskTrustUserCerts

https://www.jianshu.com/p/393f5e51716e

http://www.oneplusbbs.com/thread-4077732-1-1.html

http://www.oneplusbbs.com/thread-3903166-1-1.html

https://www.imooc.com/article/49265

https://www.jianshu.com/p/310d930dd62f

猜你喜欢

转载自blog.csdn.net/xiaocszn/article/details/86081055
今日推荐