赞
踩
From:https://testerhome.com/topics/21956
OpenSSL :https://slproweb.com/products/Win32OpenSSL.html
- (1)安装用户证书必须要设置开机密码,而且设置后就不能取消,除非先删掉所有的用户证书。如果安装为系统证书就不需要设置开机密码,自动化操作时更方便。
- (2)谷歌在 安卓7.0 修改了安全策略,安卓系统 大于 7.0 时 APP默认不信任用户证书,只信任系统证书,安装为用户证书,对APP的HTTPS抓包会失败。安装为全局证书才能被所有APP信任,方可进行HTTPS抓包。
解决方法
- 降级 APP
- 降级 系统版本
- 将用户证书偷渡成系统证书,需要有 root 权限。将 charles 的 CA 证书安装进系统信任的证书目录下,这样在开启 charles 代理的时候,系统就会认为CA证书安全,从而可以获取 https 数据。
怎么将 Fiddler 或 Mitmproxy 的证书安装为安卓系统证书呢?
Android 的系统证书的存储位置是 /system/etc/security/cacerts,证书文件必须是PEM格式,而且文件命名必须符合系统证书规范。
第1步:下载Fiddler或Mitmproxy的证书文件,PEM或者DER格式均可。
第2步:获取有效的系统证书文件名
# 如果是PEM格式的:
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem -noout
# 如果是DER格式的:
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer -noout
# 例如,输出8bbe0e8d
第3步:转换证书格式为PEM格式,并重命名证书为有效的系统证书名。
# 如果是PEM格式的:
openssl x509 -inform PEM -in mitmproxy-ca-cert.pem -out 8bbe0e8d.0
# 如果是DER格式的:
openssl x509 -inform der -in FiddlerRoot.cer -out 8bbe0e8d.0
第4步:上传准备好的证书文件到设备。例如:adb push 8bbe0e8d.0 /sdcard/第5步:复制证书到Android系统证书目录
adb shell
su
mount -o rw,remount /system
cp /sdcard/8bbe0e8d.0 /system/etc/security/cacerts
chmod 644 /system/etc/security/cacerts/8bbe0e8d.0
# 上述可整合为一句
adb shell "su -c 'mount -o rw,remount /system;cp /sdcard/8bbe0e8d.0 /system/etc/security/cacerts;chmod 644 /system/etc/security/cacerts/8bbe0e8d.0;'"
# 重启设备
adb reboot
adb shell
su root
cd /data/misc/user/0/cacerts-added #进入到用户证书目录
mount -o remount,rw /system #将系统证书目录权限改成可读可写。要不没权限写入文件
cp * /etc/security/cacerts/ #这里可以使用cp也可以使用mv
mount -o remount,ro /system #移动完之后记得把权限改回只读
一台已 root 过的手机,开启开发者选项,然后连接电脑。
安卓系统证书跟 Fiddler 证书的格式不一样,需要转换。
1、安装 OPENSSL【https://slproweb.com/products/Win32OpenSSL.html】。linux 默认已经安装。如果使用 linux 系统,可以忽略这一步。
2、下载 fiddler 证书到电脑上
3、打开命令窗口,执行以下命令,查看证书哈希信息:
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer -noout
安卓系统的安全证书在 /system/etc/security/cacerts/ 目录下,进入adb shell,打开目录就能看到这些证书文件。
文件名是 Hash值 加 数字后缀。后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1
4、转换证书
openssl x509 -inform DER -in FiddlerRoot.cer -text > [哈希].0
5、用记事本编辑证书
将 -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 的部分放到文件最前面。
可以使用 cat 命令随便查看一个 证书文件,就可以看到都是放在文件的最前面
6、将证书放到手机的 /system/etc/security/cacerts/ 下
执行 adb 命令连接手机,获取权限,把文件夹挂载为读写模式,把文件复制到证书根目录
adb root
adb remount
adb shell mount -o rw,remount /system
adb push e5742ab9.0 /system/etc/security/cacerts
重启手机,可以看到 Fiddler 的证书已经变成系统证书了,接下来就可以愉快的抓包了
一台已 root 过的手机,开启开发者选项,然后连接电脑。
下载证书到电脑上
查看证书信息:
openssl x509 -subject_hash_old -in charles.pem
openssl x509 -inform PEM -subject_hash_old -in charles.pem -noout
重命名证书:mv charles.pem 5a3b138a.0
执行 adb 命令连接手机,获取权限,把文件夹挂载为读写模式,把文件复制到证书根目录
adb root
adb remount
adb shell mount -o rw,remount /system
adb push e5742ab9.0 /system/etc/security/cacerts
以上就 OK 了。如果不放心可以 cd 到对应目录,检查文件是否存在,文件权限是否与其他证书一致。证书安装 OK,其他代理选项正常配置即可
如果出现 <hash>.0:Read-only file system 这个警告,这是因为 system 文件为只读,需要将其挂载为可读写。一般的解决方法是:mount -o rw,remount /system 修改system读写权限,然后再进行复制操作。如果修改了之后还是提示Read-only file system,还有方法
adb root
adb disable-verity
adb reboot #手机会重启,不用关闭cmd窗口,手机可能需要拔掉数据写重新连接
adb root
adb shell
mount -o rw,remount /system #再次进行修改
然后就可以进行复制操作了。复制完之后输入reboot 重启
重启之后,打开设置 ---> 更多设置 ---> 系统安全 ---> 信任的凭据中可以看到安装的证书
首先是 proxy - proxy settings,选择 socks proxy 模式,如图配置,点击ok完毕
取消勾选 windows proxy,因为我们不需要用来抓取windows的数据包。
然后是 proxy-ssl proxy settings
点 add,host、port 都填 * 即可。
设置完成后,就可以通过 charles 代理查看到 https 的数据了。
打开 charles - help - ssl proxying
输入密码,导出证书,得到一个.p12的文件
往 burp 中导入
选择文件,输入密码,导入成功
因为charles抓包能力强但是不好做修改数据包之类的操作,所以我们就再做一层代理到burp来方便我们渗透测试人员。
proxy - external proxy settings
记得两个选项都要配置127.0.0.1:8080,因为我们的burp就是默认监听8080端口的,若不是8080,改成自己burp上监听的端口就可以了。
Magisk 插件仓库
MagiskModuleManager 基于 FoxMMM 进行开发,可以 搜索,安装 "Magisk模块"。
:https://github.com/Magisk-Modules-Repo/movecert
下载 Move Certificates 模块,直接在 Magisk 中载入。然后,就会把证书从用户目录自动移动到系统目录,重启手机证书生效
:https://blog.csdn.net/weixin_56039202/article/details/125794003
adguardcert 基于 movecert 开发:https://github.com/AdguardTeam/adguardcert
安卓12(高版本9+以上)安装Charles证书到系统证书安装目录:https://blog.csdn.net/weixin_51111267/article/details/131291643
步骤:
MT 管理器 需要获取 root 权限,才能把用户证书移动到系统证书目录下。
/data/misc/user/0/cacerts-added # 用户证书目录
/etc/security/cacerts/ # 系统证书目录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。