安卓高版本安装系统证书 HTTPS 抓包 - 终极解决方案
创始人
2024-05-30 12:24:12
0

一、目标

要抓App的包,首先需要App信任抓包软件的证书。

不过从Android 从 7.0 开始,系统不再信任用户 CA 证书,所以你需要把 CA 证书安装到系统 CA 证书目录。

如果你是用Magisk越狱的话,这个工作就比较简单了,只需要安装一个模块 Move Certificates。

不过今天的故事从我刷了一个新rom开始,这个rom比较奇怪,刷完之后 adb连上 直接就是root状态,但是App却没法获取root状态。

我去,这不就是误打误撞刷了一个隐藏root的rom吗?这下我可舍不得装Magisk了。

那现在的问题就是 如何把证书安装到系统目录?

二、步骤

霸王硬上弓

计算证书名

openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate_saved.pem

算出数值,比如3a1074b3

然后把原Charles证书charles-ssl-proxying-certificate_saved.pem改名为 3a1074b3.0

最后把 3a1074b3.0 文件拷贝到 /system/etc/security/cacerts/ 目录下面。

搞定~~

理想很丰满,现实很骨感,/system 大概率是不可写的,即使你有root权限,也写不进去。

问了下谷哥,哥说,可以把 /system 重新 mount 成可读写的,不过我没有成功。

之前有两种方式成功过。

1、安装RootExplorer.apk,把/system 加载成可读写。

2、adb reboot recovery 进入之前刷的 twrp ,在twrp下去写入 /system

不过这次翻车了,RootExplorer没法加载可读。 twrp写完 /system 之后这个rom发疯了,设置 进不去了,老报崩溃。

师夷长技

想起了 Http Toolkit这个抓包软件,它有个 Android Device via ADB 模式,居然可以顺利抓包。

说明它可以利用ADB把 证书写入到 /system , 毕竟我的ADB是有Root权限的。

太神奇了,它是怎么实现的呢?

这下又开始了漫长的谷歌之旅,最后在他们官网找到一篇文章,详细讲述了 通过有root权限的adb 来写入系统证书的神奇方案。

1、通过 ADB 将 HTTP Toolkit CA 证书推送到设备上。

2、从 /system/etc/security/cacerts/ 中复制所有系统证书到临时目录。

3、在 /system/etc/security/cacerts/ 上面挂载一个 tmpfs 内存文件系统。这实际上将一个可写的全新空文件系统放在了 /system 的一小部分上面。 将复制的系统证书移回到该挂载点。

4、将 HTTP Toolkit CA 证书也移动到该挂载点。

5、更新临时挂载点中所有文件的权限为 644,并将系统文件的 SELinux 标签设置为 system_file,以使其看起来像是合法的 Android 系统文件。

关键点就是挂载一个 内存文件系统,太有才了。

Show me the Code

# htk-inject-system-cert.sh
set -e # Fail on error
# Create a separate temp directory, to hold the current certificates
# Without this, when we add the mount we can't read the current certs anymore.
mkdir -m 700 /data/local/tmp/htk-ca-copy
# Copy out the existing certificates
cp /system/etc/security/cacerts/* /data/local/tmp/htk-ca-copy/
# Create the in-memory mount on top of the system certs folder
mount -t tmpfs tmpfs /system/etc/security/cacerts
# Copy the existing certs back into the tmpfs mount, so we keep trusting them
mv /data/local/tmp/htk-ca-copy/* /system/etc/security/cacerts/
# Copy our new cert in, so we trust that too
cp /data/local/tmp/c88f7ed0.0 /system/etc/security/cacerts/
# 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/*
# Delete the temp cert directory & this script itself
rm -r /data/local/tmp/htk-ca-copy
# rm ${injectionScriptPath}
echo "System cert successfully injected"

内存文件系统嘛,重启之后肯定就失效了,所以保存成脚本,抓包之前跑一下,也不是很麻烦的。

三、总结

有时候神奇的技术就是一层窗户纸,捅破了,你会惊叹,原来这么简单。

掌握了新的方案之后,未来就可以举一反三了。

参考 https://httptoolkit.com/blog/intercepting-android-https/

https://github.com/httptoolkit/httptoolkit-server/blob/8a4b4d283fbe98694ddd09a44d6e9c9941aa91e2/src/interceptors/android/adb-commands.ts

ffshow

1:ffshow

着眼总是浮游 观化颇领幻趣

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...