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 都进不去


楼主表示自己已经凌乱了……
13215 次点击
所在节点    Android
29 条回复
tangmanger
2021-04-23 15:08:36 +08:00
JustTrustMe +fiddler 抓 http 包爽的一匹
newmlp
2021-04-23 18:07:58 +08:00
如果 app 用了 ssl pinning 是需要其他 hack 的方法的
acess
2021-04-25 02:18:46 +08:00
@lusi1990 搜了一下,Fiddler 好像不支持 HTTP/2
acess
2021-04-25 23:19:18 +08:00
@mengyx 啊,我在 Fiddler 5.0 上试了,不过我把 fiddler.certmaker.GraceDays 和 fiddler.certmaker.ValidDays 都设成正整数了,而不是负数,负数好像会生成还没生效的证书。
mengyx
2021-04-26 00:23:03 +08:00
@acess 哦哦 抱歉 博客第二种设置方式写错了 确实应该写正数
mengyx
2021-04-26 00:24:28 +08:00
@mengyx 我自己设置的时候写的正数 后来写下来的时候可能没注意
MrWhite
2021-04-26 10:20:38 +08:00
抓包的时候。打开软件配置好代理后,打开 App 的话。 有些 App 会一直 loading... 然后关了抓包软件或者代理,就可以进入 App 了? 这是什么情况哈? 我记得以前在网上看到 说 SSL 有一种貌似就是方抓包的功能? 有佬给解答吗
azhangbing
2021-04-26 17:02:53 +08:00
@tangmanger okhttp 混淆了你就 get 不到 sslfactory 方法了
acess
2021-04-26 17:06:55 +08:00
@MrWhite
抓包一直 loading,不抓包就正常,那应该就是抓包的情况下不能正常连接吧。不好是啥情况……有可能是证书验证有关的问题,比如 SSL pinning ;也有可能是其他原因,比如有些应用强制要求 HTTP/2,然后 Fiddler 目前就不支持 HTTP/2 。也许还有更多预想不到的情况……

还有,其实配置了代理,应用也可能不理睬的;甚至可能同一个应用内,也可能出现有些请求走代理、有些不走的情况。

至于“方便抓包的功能”……我搜了一下,大概是 NSS Key Log ?好像可以设置环境变量,然后让浏览器自己把密钥 log 下来。
还有楼上 @Jirajine 提到的“劫持 libssl 函数,打出 ssl keylog”,我搜了一下,有个项目 frida-sslkeylog,不过我还没试过。

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

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

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

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

© 2021 V2EX