Fiddler无法抓取HTTPS链接?通过Root权限将Fiddler证书移入系统根证书目录

1,106 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天 点击查看活动详情

前言

经常会有一些抓包分析的场景,自己比较喜欢使用Fiddler,还会专研这个软件写一些内置脚本通过自动化脚本工具去爬取一些难以分析的数据,之前都是使用低安卓版本的安卓模拟器,然后把Fiddler证书移动到模拟器里面,改变模拟器的网络代理来实现或抓HTTPS协议的数据包。

但是安装模拟器会与Windows里面的Docker冲突,导致电脑蓝屏,原因是使用了docker使用了hyper-v虚拟化技术,安卓模拟器不能兼容这个虚拟机支持技术。所以只能换台电脑单独装模拟器,然后两台电脑之间调试非常麻烦。

最近又有类似的需求,打算彻底解决它,自己使用了一台安卓手机,随着安卓版本的提高,安全性也越来越高,第三方的Fiddler证书需要放在系统的根证书目录下才能被系统信任,开启代理的时候才能在Fiddler里抓到HTTPS的包。

自己使用的安卓手机版本是安卓8, 谷歌亲儿子Nexus 5x,在安卓7.0以上就需要通过root把证书放在系统根证书目录才能完全信任才能抓取到HTTPS协议连接。自己折腾了一下把手机Root了,因为每一台手机ROOT方式都非常不一样所以这里就不介绍了,下面仔细讲如何把Fiddler的证书移动到安卓系统根证书目录。

Fiddler证书导出

自己的电脑系统为Win10,先打开Fiddler,点击Tool,再点击Option:

image.png

点击HTTPS ,Actions ,Export root Certificate to Desktop

image.png 证书就被导出到Window桌面了

安装Open SSL 配置环境变量

Window系统需要安装:open ssl,作用是把Fiddler 证书的格式转换成适用于安卓手机的格式,下载地址: Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions:

image.png

下载完成后,移动到一个合适的文件夹,并且把桌面的证书也迁移到这里来:

image.png 添加环境变量: 1.打开控制面板->系统安全->系统
2.点击系统设置,点击高级,点击环境变量 image.png 3.点击用户变量,选中Path,点击编辑:

image.png 4.点击新建,新建之后保存:

image.png

生成证书

到刚才的文件夹打开power shell 执行命令:

openssl x509 -inform DER -subject_hash_old -in FiddlerRoot.cer

image.png 记住这个哈希值:269953fb

接着转换证书命令,文件名为哈希值.0,为了是防止文件冲突:

openssl x509 -inform DER -in FiddlerRoot.cer -text > 269953fb.0

此时证书文件就生成出来了:

image.png

编辑证书,adb shell传输证书

打开编辑器把-----BEGIN CERTIFICATE----------END CERTIFICATE-----包裹的一段放在文件的最前面 image.png 注意:这里需要utf8编码。编辑的时候注意,不然导入的时候系统会读取失败。在adb shell 使用cat命令检查一下有没有乱码,这里我踩了坑弄了好久才行

image.png

编辑完成后通过USB数据线链接手机,使用adb shell 推送到手机

adb push 269953fb.0 /sdcard/

image.png 然后使用root 权限移动证书:

adb shell  
su  
mount -o rw,remount /system  // 重新挂载系统,以可以写入文件到系统目录  。安卓12也试过不行,查找资料都不行,
cp /sdcard/269953fb.0 /system/etc/security/cacerts   // 移动证书
chmod644 /system/etc/security/cacerts/269953fb.0    //修改证书权限   

image.png 打错chmod 就乱了~哈哈

最后重启设备:

adb reboot  

重启后在系统证书管理中看到这个就证明证书移动成功:

image.png

验证

手机重启Wifi连接上与电脑同一个局域网,查看电脑内网地址ipconfig

image.png

找到Fiddler设置的远程监听端口:

image.png

点击手机wifi设置,长按连接的Wifi点击修改网络,主机名填写为电脑的内网地址,端口为Fiddler的远程监听端口,点击保存

image.png image.png 然后浏览器访问一下HTTPS的网站测试: image.png image.png

终于抓到了HTTPS的链接~

总结

整个流程看似很简单,但是有很多细节需要注意,需要一步步的确认步骤是否完全正确,我在修改证书的文件格式那里,还有root后系统文件夹重新挂载两个步骤重试了很久才成功,如果有用的话记得点个赞哦~