本文最后更新于 2022年08月08日 已经是 413天前了 ,文章可能具有时效性,若有错误或已失效,请在下方留言。
需要准备的设备
- 一台已经获取 Root 权限的手机/虚拟机 (如果需要抓取一些对服务器证书有特别验证的APP你可能还需要安装好 Xposed 框架)最好是有 Magisk
- Charles 软件 具体获取方式劳烦百度
自签名CA证书安装
首先我们需要将 Charles 为我们生成的 CA证书 给导出
安卓 7.0 以后默认不信任用户安装的证书,需要将证书安装在系统目录中
如果是安卓7.0以下版本只需要将该证书复制到手机目录,在手机设置中安装即可,安装后请跳过下面步骤到,#代理设置
接着我们需要获取到证书的 hash 值来重命名证书名称,由于安卓系统限制,如果不这样会导致系统不信任该证书
openssl x509 -inform PEM -subject_hash_old -in CA_Name.crt | head -1
root@s1:/home/docker# openssl x509 -inform PEM -subject_hash_old -in charlesCA.pem | head -1
68cc8d46
这时将证书 charlesCA.pem 重命名为 68cc8d46.0 后面我们会通过制作 Magisk 模块的方式,将证书写入系统目录,下载模板文件 ,或者你直接将该文件复制到目录 /system/etc/security/cacerts/ 中
模板文件目录:
CHARLES
│ module.prop
│ post-fs-data.sh
│ sepolicy.rule
│ service.sh
│ system.prop
│ uninstall.sh
│
└─system
└─etc
└─security
└─cacerts
68cc8d46.0
你需要将 68cc8d46.0 文件替换为你的 证书文件,使用 magisk 安装,重启即可
代理设置
我们需要将电脑和手机连接在一个局域网中(不管使用什么方法,两个设备可以互相访问就行)
设置代理端口
设置 ssl 代理
获取电脑 IP
记下这个 IP 后面会用到,接着在手机设置中设置代理
填入IP和端口确认即可
开始抓包
点击开始抓包
虽然是https流量,但我们还是可以查看内容,抓取成功
对于APP对证书有特殊验证
使用Xposed模块将客户端证书验证给Hook掉
原理分析
这里其实使用了中间人攻击(Man-in-the-middle attack)的原理进行抓包
如何对中间人攻击进行防御呢?这里请查看
如果有其他疑问,请留言
test