V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acess
V2EX  ›  Android

关于 HTTPS 抓包, Android 14 据说改不了根证书了

  •  
  •   acess · 2023-09-12 10:35:33 +08:00 via Android · 12529 次点击
    这是一个创建于 466 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://httptoolkit.com/blog/android-14-breaks-system-certificate-installation/
    摘要与转载: https://www.solidot.org/story?sid=75997



    另外,Chrome 99 在先前就因为检查证书透明度导致无法 mitm 中间人抓包: https://httptoolkit.com/blog/chrome-android-certificate-transparency/
    对于这个问题,我搜到过一篇博客文章: https://shansing.com/read/530/
    里面提到 adguardcert 可以在 native 层 hook 来解决这个问题: https://github.com/AdguardTeam/adguardcert
    第 1 条附言  ·  2023-09-12 16:05:14 +08:00
    我自己分别装了 API 33 和 34 的 AVD 简单试了一下,不用 magisk ,直接 adb root 之后 bind mount ,好像两者都没能把我加进去的 Burp Suite 用的 PortSwiggler CA 识别出来,系统证书列表里并没有显示我加进去的这个证书。
    25 条回复    2024-06-07 11:38:07 +08:00
    noahhhh
        1
    noahhhh  
       2023-09-12 10:40:41 +08:00 via Android
    用太极或者虚拟机抓呗,Android mitm 本来就很不方便
    yujincheng08
        2
    yujincheng08  
       2023-09-12 10:44:33 +08:00   ❤️ 3
    技术不行,危言耸听。

    作者混淆了开发者和最终用户。开发者可以选择信任任意证书。而最终用户可以选择停止信任任意系统证书。
    如果设备是受管设备,企业也可以添加证书来审计加密流量。

    即使 root 也无法修改系统证书是假的。
    把证书库移动到 apex 是好事,这可以让 OEM 不再更新的手机继续更新系统证书。比如之前 Let's Encrypt 的 R3 证书无法推送到不再更新的手机,现在可以了。
    而 root 是可以修改/apex 目录的,和/system 没有技术上的区别。作为例子,lsposed 的 dex2oat 包装器就修改了 apex 的 art 组件。
    acess
        3
    acess  
    OP
       2023-09-12 11:05:16 +08:00
    @yujincheng08
    首先感觉他所说的“开发者”的意思是泛指,把逆向(不是自己开发的) app 的研究者这些也包含进去了。

    然后我看作者原文里做过实验,说 AVD 里 Android 14 beta 的镜像 mount tmpfs 之后,系统设置里没有对应生效,而同等操作对 Android 13 镜像会生效。
    acess
        4
    acess  
    OP
       2023-09-12 11:07:18 +08:00
    @yujincheng08
    我第一反应是 mount namespaces ,毕竟他好像也没用 magisk ,所以不知道有没有进 master mount namespace
    acess
        5
    acess  
    OP
       2023-09-12 11:11:48 +08:00
    但是……如果是 mount namespace 的问题,先不说引入这个是上古时代的事情了,为什么 Android 13 同等操作又是生效的呢。
    ysc3839
        6
    ysc3839  
       2023-09-12 12:31:56 +08:00 via Android   ❤️ 1
    这个说法好像一周甚至更早之前就看到了。原文我没有细看,不知道原作者观点是什么,但是原文里列了一堆尝试修改/apex 中证书的过程,我个人认为原作者不是无脑指责,更多是技术探讨,顺便吐槽一下。
    而 solidot 那个“摘要”里面直接说“即使 root 设备也将无法修改系统证书”,感觉说这话的人是把传统 Unix 的逻辑套用到现代操作系统中。传统 Unix 一般不喜欢搞很复杂的文件格式,比如 CA 证书可能就只是 base64 编码的纯文本文件。于是当新版本系统中引入了一种非纯文本格式,那人就觉得这是在“限制”,是“日益封闭”。
    bkmi
        7
    bkmi  
       2023-09-12 12:40:25 +08:00 via Android
    人云亦云,越传越离谱,Google 躺枪
    kingfalse
        8
    kingfalse  
       2023-09-12 13:45:28 +08:00 via Android
    pixel 7 pro 坐等 14 发布。说起来不知道这次是不是真的要等到跟 pixel 8 一起发布了。离谱
    acess
        9
    acess  
    OP
       2023-09-12 15:27:01 +08:00
    @ysc3839 新版本系统中引入了一种非纯文本格式?有么?
    acess
        10
    acess  
    OP
       2023-09-12 15:45:15 +08:00
    @ysc3839 要说 locked down to vendor-controlled 这个观点其实 Magisk 作者 John Wu 也在推上提到过的,呃搜了一下,有可能是这条:
    Why do we need to start this holy war yet again 🤦‍♂️
    https://twitter.com/topjohnwu/status/1267050787336622080
    Most *users*, not Android *or* iOS specifically, does NOT care about customization. Period.
    Why do we need to differentiate between iOS and Android users, at the end of the day they are both highly locked down mobile OSes.
    (看上去他在回应一个观点)

    至于我这楼引用的,httptoolkit 博客这篇,里面说,一个转变点在 Android 7 这里,因为从那个时候开始,app 默认(开发者可选 out out ,但很少有 app 这么做)就不信任用户证书了。

    另外再说一句,要说 Android 7 ,其实我还想起来录屏同时内录音频这个破事,我记得也是 Android 7 开始变得特别难,即便 root 了都很难,直到 Android 10 才又提供官方的录屏 API ,就这也仍然是不给用户控制权,开发者如果不声明就是不给内录的(啊我不记得 target sdk 到了 Android 10 之后具体默认是给录还是不给了)
    我还搜到 reddit 上就有用户圈子的吐槽贴:
    https://www.reddit.com/r/AndroidQuestions/comments/81vhvm/android_7_has_made_recording_internal_audio_while/
    acess
        11
    acess  
    OP
       2023-09-12 15:47:48 +08:00
    这两天我看见 YouTube premium 也是蛮抠门,不仅画中画小窗是付费功能,而且好像还限制内容,如果是音乐就不给后台播放。反正我是很难不往唱片公司的利益之类瞎想 2333
    (不过我平时很少用 YouTube ,前两天也是蛮不讲理地上了 lsposed 模块把这个功能免费解锁了 2333 )
    acess
        12
    acess  
    OP
       2023-09-12 15:48:38 +08:00
    啊啦,10 楼转贴 john wu 的推文好像把格式粘错了,抱歉。
    ysc3839
        13
    ysc3839  
       2023-09-12 15:57:18 +08:00 via Android
    @acess “新版本系统中引入了一种非纯文本格式”只是举个例子,我不知道 apex 的具体逻辑,但感觉上和“纯文本改成二进制格式”有点类似,原本直接改/system 文件系统里的证书文件就能生效,现在可能要重打包成 apex 包,然后想办法替换掉原来的 apex 包,可能还涉及签名验证等等。
    acess
        14
    acess  
    OP
       2023-09-12 15:59:19 +08:00
    @ysc3839 果然你说的是 apex……

    不过我感觉 apex 既然是 mount 上去的,那按理说 magisk 那种原理就可以改才对,你看楼上 yujincheng 大佬不就直接怼了
    hellomynameis
        15
    hellomynameis  
       2023-09-12 16:07:22 +08:00
    非纯文本形式确实很麻烦、很不利终端用户,比如 Android 12 开始把存放每个 app 单独的 Android ID 的配置文件改成二进制格式了,编辑起来就比安卓 11 麻烦非常多
    MegatronKing
        16
    MegatronKing  
       2023-09-12 16:36:26 +08:00
    根证书问题在 Android 7.0 开始就已经非常麻烦了,相当于是直接加了个紧箍咒。我曾经在开发 HttpCanary 的时候,一般是建议开发者降低 targetSdkVersion 到 23 然后抓包测试。Android 14 无非就是把紧箍咒又紧了紧,对真正开发者的影响也不大,当然有能力破咒的还是能破咒。不管怎么样,我依然觉得这个更新是好事,免得逆向爱好者学了点东西就到处去给别的应用找麻烦。
    flyn
        17
    flyn  
       2023-09-12 16:46:31 +08:00
    虽然不懂但是果子下的 rewrite 用得爽到不行了。真的可以提供好多功能。
    好难受啊,为什么到这方面安卓比果子还封闭啊。
    SUP7R9
        18
    SUP7R9  
       2023-09-13 15:36:54 +08:00
    @acess #11 不知 op 最后用的哪个 lsp 模块将油管的画中画小窗及后台播放这两个功能解锁??近几天我也遇到 op 你在 11 楼所描述油管的这两个问题,一直在找相应 xp 模块,但我在 lsp 模块仓库中搜到两个油管模块,其中“youtube adaway”这个模块都半年多没更新,其它的油管模块在去年就停止更新了。。。

    特此留个爪,麻烦 op 之后回复时,将你最后找到用于解锁油管的画中画小窗及后台播放这两个功能的 lsp 模块原发布地址甩下呗,我也想试试效果
    acess
        19
    acess  
    OP
       2023-09-13 22:22:45 +08:00
    @SUP7R9 就是 youtube adaway 吧……
    SUP7R9
        20
    SUP7R9  
       2023-09-13 23:02:20 +08:00
    @acess #19 啊这(,看 op 你这条回复,貌似 op 你自个都不确定,麻烦 op 再将自己目前所装的 lsp 模块列表截个图发上来,介不就一了百了么??
    (小声:为何请求 op 将目前所装的 lsp 模块列表截图发上来,是因为我还想瞅瞅 op 你还装了其它哪些 lsp 模块,身为一搞机“半”新手,想借 op 你目前在主力机装的所有 lsp 模块来参考哪些模块值得一装,球球 op 再回复分享你给主力机装的所有 lsp 模块列表截图惹)
    acess
        21
    acess  
    OP
       2023-09-14 02:17:04 +08:00
    @SUP7R9 我开的模块很少……youtube adaway 就是 lsposed 新仓库列表里的
    另外提这个已经有点偏题了
    Zy143L
        22
    Zy143L  
       2023-09-14 06:02:46 +08:00 via Android
    magisk+xposed 解除呗
    SUP7R9
        23
    SUP7R9  
       2023-09-15 00:23:30 +08:00
    @acess #21 抱歉,之前刷到 op 你这条提问帖,在翻评论过程中看 op 你提到用 lsp 模块解锁油管 premium 的后台功能,顿时感到好奇,随后立马发评论向 op 你提问具体是哪个 lsp 模块,之后就越聊越脱题了。。。

    不知 op 试过某博上“前魔趣 ROM 维护者”吴大前几天所发对这个问题分享的解决方法帖,指路:
    https://weibo.com/3322982490/Ni21tFiR9
    ![]( )
    A4l1CteRQHlG1Bs8
        25
    A4l1CteRQHlG1Bs8  
       197 天前
    @SUP7R9 然而大多 app 不信任用户证书, 而系统证书需要 root....呃呃呃
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2560 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:57 · PVG 12:57 · LAX 20:57 · JFK 23:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.