如何将抓包工具证书(cer,crt, pem)写入到Android系统内置根证书目录中实现 HTTPS 抓包

本文详细介绍了在Android7及以上版本中,由于系统仅信任内置根证书导致无法使用BurpSuite、Charles、Fiddler等工具抓取HTTPS请求的问题。通过导出Charles证书,使用openssl将其转换为系统根证书格式,并通过adb连接安卓模拟器,将证书写入系统根证书目录,最终实现HTTPS抓包。文中还提供了设置代理和测试HTTPS抓包的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x01 前言:

在 Android 6 之前, 手机系统既信任系统内置的证书, 也信任用户自己安装的证书, 但是在 Android 7 之后,却发生了变化, 手机系统只信任系统内置的根证书。当然了,这是为了手机系统更安全, 但是这样一来, 我们就无法使用 burpsuite, charles, fidder 抓包 app 的 HTTPS 请求。这里我将以 Charles 抓包工具的证书来演示如何讲抓包证书写入到系统根证书目录下。
在这里插入图片描述


0x02 前提准备:

windows 已安装 openssl (也可以使用 linux, 其自带 openssl)
已获得 root 的手机 (可以是模拟器如:夜神,雷电、逍遥)
windows 已安装 adb 驱动 (安装过程请参考:https://blog.csdn.net/sinat_41870148/article/details/123089861)


0x03 导出 Charles 证书:

在这里插入图片描述
在这里插入图片描述


0x04 使用 openssl 将 pem 证书转成系统根证书 (.0 结尾文件):

在这里插入图片描述

windows 不自带openssl, 需自行安装。而linux自带,因此我这里把证书存到 linux 中进行转换。

执行命令: openssl x509 -subject_hash_old -in 证书名

在这里插入图片描述
执行命令后将 Charles.pem 文件重命名为 9d4a1b5a.0 (9d4a1b5a 需要根据自己生成的结果进行命名)

在这里插入图片描述
将更改后的证书转移到安卓模拟器的根路径下:

在这里插入图片描述


0x05 使用 adb 连接安卓模拟器终端 (夜神模拟器为例)

  • 找到 NoxVMHandle.exe 进程的 PID, 输入命令: tasklist | findstr "NoxVMHandle.exe"
    在这里插入图片描述

  • 寻找此进程开放的端口,输入命令:netstat -ano | findstr 9204
    在这里插入图片描述

  • 找到62xxx的端口,并进行连接adb链接, 输入命令:adb connect 127.0.0.1:62026
    在这里插入图片描述


0x06 将证书写入系统根证书目录下:

小贴士: 由于Android是基于Linux的自由及开放源代码的操作系统,Android Shell是Linux操作系统命令的缩小版, 所以大部分命令是和linux一样的。

  • 连接模拟器 adb shell, 输入命令:adb -s 127.0.0.1:62026 shell
    在这里插入图片描述
  • 将根目录下的证书转入系统根证书目录下,执行命令:mv 9d4a1b5a.0 /system/etc/security/cacerts/
    在这里插入图片描述 ⚠️上述问题解决: ⚠️

1、如果是已经root的实体机,/dev/root 挂载在 /,以读写权限重新挂载

HWDUK:/ # cat /proc/mounts | grep "/"
/dev/root / ext4 ro,seclabel,relatime,data=ordered 0 0

HWDUK:/ # mount -o remount,rw /

2、如果是已经root的模拟器,/dev/block/sda6 挂载在 /system

d2q:/ # cat /proc/mounts | grep "/system "
/dev/block/sda6 /system ext4 rw,seclabel,noatime 0 0

1|d2q:/ # mount -o remount,rw /system

在这里插入图片描述

  • 修改证书权限为 644, 执行命令:chmod 644 /system/etc/security/cacerts/9d4a1b5a.0
    在这里插入图片描述

0x07 设置代理,测试HTTPS抓包:

  • 查看 charles 监听的 ip 与端口:
    在这里插入图片描述
  • 模拟器设置对应代理,adb 执行命令:settings put global http_proxy 192.168.0.101:8888
    在这里插入图片描述
  • 测试抓包 HTTPS:

前提先设置允许代理 SSL,代理所有 443 端口链接

在这里插入图片描述

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0rta1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值