HTTPS 抓包,即便安装成系统证书,好像还是不太行

2021-04-22 14:25:58 +08:00
 acess
楼主试了 MuMu 模拟器( Android 6.0 )。

按照网上的教程(比如 mitmproxy 提供的教程,虽然我用的不是 mitmproxy ):
(1)WiFi 设置里,需要设置代理服务器为手动,填入抓包软件开的代理 IP 和端口。
(2)需要把抓包软件的根 CA 证书转成 PEM 格式,然后用 openssl x509 -subject_hash_old 查到类似 1234abcd 的哈希值,再把 PEM 格式的证书重命名成 1234abcd.0 、丢到 /system/etc/security/cacerts/下面。
(3)最后重启模拟器。

一套折腾下来,结果怎么样呢?

很有意思:
(1)用自带浏览器打开 https www . ipip . net
报错,证书错误;
(2)打开 https www . grc . com
欸,这回不报错啦,正常打开。
点开证书信息,也是抓包软件的 MITM 证书,绿色对勾,有效。
(3)清空自带浏览器的数据,再试试?
还是老样子,并没有什么变化……

我看了模拟器里现存的其他证书,貌似里面的内容大概是这样:
(大概就那个意思)
-- BEGIN CERTIFICATE --
一坨 base64
-- END CERTIFICATE --
( openssl x509 转出来的 PEM 证书只含有上面的部分,不含有下面的部分)
人类可读的,文本格式的证书信息,包括主题、密钥等等
SHA1 Fingerprint

于是我就用 openssl x509 照葫芦画瓢了一下……然后,不出意外地……
情况还是那个情况,并没有什么变化。


那么,换个模拟器,比如 Android studio 自带的 AVD ?

楼主之前折腾过一个 Android 11 的 AVD,用 github 上 newbit1 的 rootAVD 脚本给它刷了 magisk,然后安装 edxposed,都是正常的。
然后,楼主试了 magisk 官方仓库里的 movecert 模块。先在设置里安装为用户证书,然后重启,等着 movecert 把用户证书转换成系统证书。
结果呢?

模拟器它直接黑屏了……压根开不了机……adb shell 都进不去

我不服气,强关掉模拟器,重启它,按音量-按钮进了安全模式,然后发现,/data/adb/modules/movecert/system/etc/security/cacerts/里面的证书文件(文件名就是上面看到过的 1234abcd.0 )貌似不是 base64 的,而是二进制的;而我自己用 openssl 转出来的 PEM 是 base64 的。于是我就用 cat 命令把它覆盖掉,(当然,magisk 模块的 disable 要删掉)再重启。

不出意外地……嗯……还是黑屏了……还是 adb shell 都进不去


楼主表示自己已经凌乱了……
12551 次点击
所在节点    Android
29 条回复
lusi1990
2021-04-22 15:28:01 +08:00
巧了 我也最近捣鼓了装证书的问题。
用 mitmproxy 的证书 ,直接装到 mumu 里面可以正常抓包。 用 fiddler 就不行 ,我也按照网上的方法装到系统证书也不行。后面就没捣鼓了
Telegram
2021-04-22 15:31:19 +08:00
抓包这个还是苹果简单,只要证书搞好,VPN 一挂起就都能抓了。
安卓感觉就算你搞好了,很多 APP 能检测到你抓包,直接拒绝通信。
KuroNekoFan
2021-04-22 15:32:18 +08:00
不考虑模拟器的问题,android7 以上不能通过信任个人签发证书来调试 https 了
ly841000
2021-04-22 15:37:09 +08:00
不要自己转换, 先安装用成用户证书, 再移动到系统证书目录
Jirajine
2021-04-22 15:39:23 +08:00
两种办法:
1. 把安装上的根证书移动到系统证书目录。需要 root,需要 app 没有使用 ssl pinning 。
2. tcpdump 抓包,劫持 libssl 函数,打出 ssl keylog,然后用 Wireshark 解密查看。
napsterwu
2021-04-22 15:41:47 +08:00
太长了,首先建议参考 Charles 或者 fiddler 。全程不需要使用 OpenSSL 命令,一般证书系统 ui 就可以装 pem 格式的证书。比如文件管理器直接打开证书,或者设置里面有“从 sd 卡安装证书”。安装完之后是在用户空间的,有 movecert 或者 MagiskTrustUserCerts 的话重启一下就可以了。
brader
2021-04-22 15:42:06 +08:00
咦,怎么我使用没有问题呀,我目前在用两款,MuMu 模拟器 和 夜神模拟器,都没有问题
napsterwu
2021-04-22 15:43:07 +08:00
不过尽管安装到系统证书,微信 7 之后小程序还是抓不了的,不知道有没有大佬可以指点一下
brader
2021-04-22 15:43:27 +08:00
对了,抓包工具我是用的 Charles
mx8Y3o5w3M70LC4y
2021-04-22 15:50:43 +08:00
我用的 fiddler+真机抓 HTTPS 的包。先从 fiddler 导出证书,放到手机根目录。手机设置里搜索 ca 证书,安装根目录的证书。fiddler 设置-https 里先 trust,再选中 capture https traffic 。就可以了
mengyx
2021-04-22 15:55:58 +08:00
之前处理过一样的问题 供楼主参考一下 https://blog.mengyx.cn/p/fiddler-android-packet-caputre/
MaxLi77
2021-04-22 15:56:20 +08:00
证书啥的基本不好用。。。真机 xposed + justtrustme 类插件
acess
2021-04-22 16:00:24 +08:00
@Telegram 我看 JustTrustMe 这个 Xposed 模块里提到,有些 app 用了 Public Key (Certificate) Pinning——感觉就是类似 SSH 那样,不是信任 CA 来验证,而是 app 里直接指定一个服务器公钥。这种情况貌似确实比较麻烦,导了 CA 也不能解决,只能是 xposed 或者改包了吧。

@KuroNekoFan 这个我之前也看到了,按理说 MuMu 是 Android 6,所以不需要折腾系统证书也能达到类似的效果吧……

我主要感觉奇怪的是,为什么同一个 app 下(自带浏览器),不同网站的情况也不一样……这太诡异了
再有就是为啥 Android 11 的 AVD 用了 movecert 就会无法正常启动……这也很诡异
acess
2021-04-22 16:06:55 +08:00
@MaxLi77 额,按理说我现在有了带 edxp 的 AVD,也可以直接上 justtrustme……不过我感觉 AVD 还是有点卡,尤其是 GPU 硬件加速好像还是开不了,按照官方文档里说的,win 上可以从 host 模式调到 angle_indirect 模式,现在好像这个设置是无效的。再有就是 justtrustme 这类 xposed 模块虽然可以搞定 ssl pinning,也总有照顾不到的死角( hook 不到的代码)吧……
acess
2021-04-22 16:07:34 +08:00
@MaxLi77 准确地讲,host 模式是有 GPU 加速的,但是有的时候渲染不正确。
acess
2021-04-22 16:53:18 +08:00
@mengyx 额,证书过期时间这个,我确实没注意。重新生成证书后,貌似 MuMu 里自带浏览器就不会报证书错误了。至于之前为什么不同网站,有的报错有的不报错,我不知道为什么,也不想管了……
SvenWong
2021-04-22 17:16:24 +08:00
Android 10 下,Charles+VirtaulXposed+JustTrustMe 可以正常抓包,只测试过这些版本,其他不知道
MaxLi77
2021-04-22 23:08:32 +08:00
@acess justtrustme 的确存在死角,但是已经把安装系统证书的角落都 cover 了
Rocketer
2021-04-23 01:08:29 +08:00
app 开发者为何不只信任自己的证书,非得信任所有的系统证书呢?那样不就彻底防止中间人了吗?

不做移动端开发,不懂瞎问,别笑
q197
2021-04-23 09:55:00 +08:00
@Rocketer 因为一般开发 app 直接请求 https 就行了,证书校验都是系统(可能还有用的网络请求库)自动校验的,对开发者来说调用 http 和 https 的 api 没什么区别。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX