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

今天突然发现 Android7.0 以上的抓第三方的包都有难度了

  •  
  •   HFX3389 · 2019-04-24 13:06:01 +08:00 · 20053 次点击
    这是一个创建于 2045 天前的主题,其中的信息可能已经有所发展或是发生改变。

    似乎是 Google 做的新安全策略

    • 在 Android7.0 及以上的系统中,每个应用可以定义自己的可信 CA 集。

    • 默认情况下,应用只会信任系统预装的 CA 证书,而不会信任用户安装的 CA 证书。通过某些抓包软件安装的证书恰恰正属于用户安装的 CA 证书,因此会被视作不安全的证书。

    如果想要在 Android7.0 以上抓第三方 APP 的包只能:

    1. 逆向加(改)配置文件

    2. Root 系统将抓包软件的证书加入系统证书或者 Xposed(也是只有 Root 后才能操作)

    当然,如果是自己的 APP 那么在测试阶段加一个配置文件信任所有的证书即可


    以后 Android7.0 以上的机器会越来越多,以后想抓第三方 APP 包也越来越难!

    如果我以后写安卓 APP 的话,我觉得可以:

    1. 只采用微信登录的方式登录(基于实人认证;另外微信对于 Root 和安装 Xposed 似乎有限制,一个不小心会封号)

    2. target 甚至 mini 指向 24 ( mini 或许太严格了点...)

    3. 开启 ssl pinning (保护不受中间人攻击)

    4. 弄个加固(限制普通逆向)

    51 条回复    2020-10-17 20:11:36 +08:00
    ysc3839
        1
    ysc3839  
       2019-04-24 13:17:49 +08:00 via Android   ❤️ 2
    Android 是开源的,还可以去掉相关检测代码自己编译一个系统。除非微信拒绝在非官方系统上运行。
    kyf0722
        2
    kyf0722  
       2019-04-24 13:27:50 +08:00 via iPhone
    不是吧,我记得我之前还抓过 android8.0 的,用户 ca 安装了之后还需要设置一下信任,似乎是这样,一会我确认一下
    zeevin
        3
    zeevin  
       2019-04-24 13:31:20 +08:00
    不存在你说的情况,android9.0.2 用 fiddler 抓包完全没问题
    HongJay
        4
    HongJay  
       2019-04-24 13:31:38 +08:00
    你在说什么呢。。。
    KuroNekoFan
        5
    KuroNekoFan  
       2019-04-24 13:54:38 +08:00
    https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html 是这样的,用户证书不 root 已经不能被信任了
    GTim
        6
    GTim  
       2019-04-24 14:00:24 +08:00
    楼上的你们,能抓包?

    不可能啊!!!!!除非自己家的

    楼主,目前,就两个方案

    1. 把 APP 降级,从最低的版本开始,如果你要抓某个包,就找那个包的最古老版本
    2. 找一个非主流手机,不是华为不是小米的,先 Root 了,然后就可以安装自己的手机
    fvckDaybyte2
        7
    fvckDaybyte2  
       2019-04-24 14:05:06 +08:00 via iPhone
    @ysc3839 国内安卓还有官方系统么……
    hikari
        8
    hikari  
       2019-04-24 14:06:33 +08:00
    root 之后,把用户证书推到系统证书目录下,这样就可以抓 https 的包了
    ysc3839
        9
    ysc3839  
       2019-04-24 14:10:29 +08:00 via Android
    @fvckDaybyte2 我指的是手机厂商原本的系统。
    jabari
        10
    jabari  
       2019-04-24 14:12:58 +08:00
    还有一种是双向证书
    KuroNekoFan
        11
    KuroNekoFan  
       2019-04-24 14:13:16 +08:00
    即使是国内厂商的 rom,那也是根据 aosp 的版本魔改的...所以这种安全策略还是会按照 aosp 的走
    HangoX
        12
    HangoX  
       2019-04-24 14:13:42 +08:00
    那个是要按谷歌的方式配置证书才能这样,国内大部分 App 都不是采用这种方法配置证书。
    zeevin
        13
    zeevin  
       2019-04-24 14:16:18 +08:00
    @GTim 你是说的 app 的么。我是抓包的普通 https 的网页。app 我没试过
    est
        14
    est  
       2019-04-24 14:18:18 +08:00
    @zeevin 普通 https 网页直接电脑端打开就随便抓了。。

    一般情况下需要去 android 抓的都是 app
    zeevin
        15
    zeevin  
       2019-04-24 14:21:11 +08:00
    @est 我这边是抓取的微信里的带微信登录的网页。 了解你们说的了
    lloovve
        17
    lloovve  
       2019-04-24 14:26:11 +08:00 via iPhone
    做代理,用电脑中转,什么包都能抓
    unclemcz
        18
    unclemcz  
       2019-04-24 14:49:10 +08:00
    virtualxposed 但仅支持 8.0 及以下,9.0 以上无法保证。
    GTim
        19
    GTim  
       2019-04-24 15:03:38 +08:00
    @lloovve 我还试过 DNS 大法
    251243021
        20
    251243021  
       2019-04-24 15:13:07 +08:00
    如果你要抓的是微信. 打开微信 x5 的控制中心.可以打开调试功能.也就发现安装用户 ca 能够被抓到
    WordTian
        21
    WordTian  
       2019-04-24 15:17:22 +08:00 via Android
    我特意买了个二手的安卓机,刷成安卓 6.0,就为了抓包
    7.0 以上想抓包太麻烦了,虽然不是完全不能抓
    cooljs
        22
    cooljs  
       2019-04-24 15:20:01 +08:00
    @lloovve 代理怎么做的
    lloovve
        23
    lloovve  
       2019-04-24 15:41:50 +08:00 via iPhone
    @cooljs 我一般是 win10 开热点,手机链接,然后 开抓包软件
    lloovve
        24
    lloovve  
       2019-04-24 15:42:33 +08:00 via iPhone
    Win10 上开抓包软件,当然我抓的是网络数据
    qiyuey
        25
    qiyuey  
       2019-04-24 16:19:07 +08:00
    @lloovve 你应该抓的是 HTTP 包,抓 HTTPS 必须添加抓包软件的 CA,但是目前 Android 高版本可以选择只信任系统的 CA 就导致了上述问题。
    digitO
        26
    digitO  
       2019-04-24 16:24:42 +08:00
    抓 https 就很麻烦,http 没难度
    66beta
        27
    66beta  
       2019-04-24 16:27:04 +08:00 via Android
    大部分厂商都能申请 root 的吧
    limingjie138
        28
    limingjie138  
       2019-04-24 16:30:43 +08:00 via iPhone
    非移动端开发,我选择电脑 fiddler 抓...iOS 是可以
    symeonchen
        29
    symeonchen  
       2019-04-24 16:50:56 +08:00 via Android
    得益于 Project Treble 计划,厂商适配系统大版本更新的成本大大降低了,所以 mini 24 到来的速度会比前几年的更新换代来得更快。target 完全可以紧跟最新,适配成本不大。
    aoling
        30
    aoling  
       2019-04-24 17:44:28 +08:00
    姿势不对 安卓 9.0 照样抓包 https 不需要 root
    Maskeney
        31
    Maskeney  
       2019-04-24 17:50:44 +08:00
    16L 正解 要么自己手动挪 要么装 magisk 插件自动挪 当然都需要 root
    meisky6666
        32
    meisky6666  
       2019-04-24 17:58:30 +08:00 via Android
    要抓包的 app 会检测 root ?那为什么 root ?
    yingyue
        33
    yingyue  
       2019-04-24 18:00:17 +08:00 via Android
    @limingjie138 电脑端抓包,对于 https 安卓会提示,证书错误的。还是要安装信任证书
    lk1ngaa7
        34
    lk1ngaa7  
       2019-04-24 18:40:10 +08:00
    是的,上周折腾一下午,才发现是系统级别的安全策略
    dongyulin353
        35
    dongyulin353  
       2019-04-24 18:45:14 +08:00
    @aoling #30 有教程吗,同安卓 9.0,不想 root,没找到怎么设置
    locoz
        36
    locoz  
       2019-04-24 19:02:39 +08:00
    @dongyulin353 #35 当你写爬虫抓不到 APP 请求包的时候该怎么办? [中级篇] https://zhuanlan.zhihu.com/p/56397466
    locoz
        37
    locoz  
       2019-04-24 19:09:29 +08:00
    我觉得吧。。一定要抓你 APP 包的人不可能不 ROOT、不装 Xposed 之类的工具的,所以纠结有没有 ROOT 会影响最终结果的想法其实没什么意义。然后以一个做爬虫的角度来看一下你最后的方案:
    方案一只能对需要使用大量账户做什么事情的情况有效果,跟抓包没关系如果
    方案二、三没卵用
    方案四的话普通的壳是秒脱的,高级的、带反调试等功能的壳费用较高
    nanaw
        38
    nanaw  
       2019-04-24 19:14:39 +08:00 via Android
    你在搞笑吗?还利用起来微信了。只能微信登录那谁会登录。
    真要抓你包专门弄个小号就是了。以目前的 Android 不 root 根本不能用,你要反 root 就自己检测。
    HFX3389
        39
    HFX3389  
    OP
       2019-04-24 19:29:48 +08:00
    @nanaw #38 我没在搞笑谢谢,这个帖子的讨论主体是 Android7.0 以上的抓包,我在最后只是阐述我自己的想法,请分清楚讨论主题 :)
    lxghost
        40
    lxghost  
       2019-04-24 19:46:02 +08:00
    https://github.com/MegatronKing/HttpCanary/tree/master/zh-CN 参考这篇的第二部分~可以实现非 root 抓包
    mingyun
        41
    mingyun  
       2019-04-24 22:21:11 +08:00
    @lxghost nice
    jim9606
        42
    jim9606  
       2019-04-24 22:53:33 +08:00
    这个策略算不上什么新玩意了。

    对于自己开发的应用,debug 编译是可以选择信任用户证书的。

    对于恶意第三方,root+xposed 肯定有的

    对于一般用户的意义就是 可以防止某些不怀好意的 APP (例如在微信页面插广告什么的)或者企业应用用用户证书+V。PN API 监控 /窃取 /篡改流量(如果支持这个,肯定有一些企业网络监控方案会用这种方法偷懒)

    事实上如果有安装用户证书,每次开机都会出“可能被第三方监控”的通知

    很难说这样好不好,这算是收回用户一定的自主权。
    iyaozhen
        43
    iyaozhen  
       2019-04-24 23:01:47 +08:00 via Android
    所以最近喜欢用 iOS 做测试了。😊
    nanaw
        44
    nanaw  
       2019-04-24 23:17:25 +08:00 via Android
    @HFX3389
    1. Root 环境是常规环境,目前 Android 不 Root 没法治流氓,各家 ROM 虽说有所作为但还不够。并且即使不 Root,在第三方 rec 下也可以直接操作导入系统证书。
    2. 你如果不想被抓,那就只能自己维护一个证书列表,外部的都不信任。用尽手段反 Root 和 xposed 并且强加固。不过现在 xposed 好办,Root 很难检测
    3. 利用微信是极其愚蠢的做法,影响你自己的业务。先不说现在用着 Root+xp 微信批事没有,就算微信严格反 Root,真想抓你上个微信小号也照抓不误。
    4. 容器类应用似乎也可以,不过原理不太了解。
    duan602728596
        45
    duan602728596  
       2019-04-25 06:59:59 +08:00 via iPhone
    所以搞了一台二手 iPhone 越狱抓包了
    dream7758522
        46
    dream7758522  
       2019-04-25 07:07:13 +08:00 via Android
    楼主说的很对,不信的话可以试一试抓学习()强国的包,
    Blanke
        47
    Blanke  
       2019-04-25 08:29:52 +08:00 via Android
    justTruseMe 等类似模块一键搞定
    freedomshi
        48
    freedomshi  
       2019-04-25 14:27:11 +08:00
    用模拟器,不用谢。
    huruwo
        49
    huruwo  
       2019-04-28 10:47:11 +08:00
    @zeevin 要看软件的 有的软件没有设置只信任系统证书就可以抓。比如抖音
    loginbygoogle
        50
    loginbygoogle  
       2020-07-23 04:25:22 +08:00 via iPhone
    @ysc3839 说话等于放屁,各种物理定律也是公开的,你咋不去造个原子弹?
    webdesigner
        51
    webdesigner  
       2020-10-17 20:11:36 +08:00
    我在安卓 10 上抓包,安装可信任 CA 后,部分 app 是没法抓到包的,比如美团外卖商家版。开启代理之后,app 直接报没有网络连接。而饿了没零售商家版就能抓到包。我正在想办法让它能够抓到美团的数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5499 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 08:45 · PVG 16:45 · LAX 00:45 · JFK 03:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.