Charles抓包Android的App

2022.08.29 分享 3275 人浏览 留言

因工作原因,偶尔需要对安卓网页的请求进行抓包,之前都是通过正常安装证书来实现对浏览器的https进行抓包,这块没什么大问题。

但最近需要对App进行抓包,由于Android7+(貌似)之后的版本进行限制,普通方式的证书只能对部分App生效(浏览器),找了一圈发现需要把证书装到系统级别去,方法如下:

  1. 证书重命名,先通过 openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem 得到Hash值($hash),然后把这个文件重命名成 $hash.0 我这里得到的是4aa133f9.0, 加入系统证书里面有同名的hash的话(虽然很少见),后缀就改成$hash.1。
  2. 把这个目标文件移动到 /system/etc/security/cacerts/ 这个文件夹
  3. 设置-安全-高级设置-加密与凭据-信任的凭据-系统 然后拉到底就可以看到新装的证书了(由于命名未知,所以可以和前面安装到用户级别的证明命名比对)

 

那么问题来了,我的安卓测试手机是pixel4 Android12,装了Magisk,带了root权限,我先连接手机,然后adb进手机的shell adb shell,接着获取root权限su,然后把文件复制过去cp 4aa133f9.0 /system/etc/security/cacerts/ 这时候确得到了Read-only file system这个报错

然后各种google 百度,找到的无非就是 mount -o remount rw /system 或者 mount -o remount rw / 可能是以为系统版本问题都没有用,最终花了不少时间才搞定,记录如下

 

  1. Superuser (Grant permission to shell on your phone)
$ adb shell
$ su
# whoami
root
  1. Create a separate temp directory, to hold the current certificates
mkdir -m 700 /sdcard/Download/files/
  1. Copy the existing certificates
cp /system/etc/security/cacerts/* /sdcard/Download/files/
  1. Create an in-memory mount
mount -t tmpfs tmpfs /system/etc/security/cacerts
  1. Copy the existing certs back into the tmpfs mount
mv /sdcard/Download/files/* /system/etc/security/cacerts/
  1. Copy the new certificate, the cert file should be named in the hash.0 format (See @gcaillet 's comment)
cp /sdcard/Download/cert/4aa133f9.0 /system/etc/security/cacerts/ 
  1. Update the perms & selinux context labels, so everything is as readable as before
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
  1. Don't reboot

 

最终挂上charles代理后,打开Youtube App测试,成功抓到完整的内容,踩坑结束。

 

补充:

以上流程操作后,每次重启会重置系统证书,可以通过安装Magisk模块解决,见 https://github.com/NVISOsecurity/MagiskTrustUserCerts

  1. 正常安装charles证书到user目录
  2. 安装MagiskTrustUserCerts模块
  3. 重启即可

 

参考链接

  1. https://blog.csdn.net/weixin_42962924/article/details/123546242
  2. https://gist.github.com/pwlin/8a0d01e6428b7a96e2eb?permalink_comment_id=3499340
  3. https://blog.nviso.eu/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/

文章地址:https://huilang.me/charles-zhua-bao-android-di-app/

回复本文

您的电子邮箱地址不会被公开。 必填项已用 * 标注

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif