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

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

  •  
  •   HFX3389 · 84 天前 · 5256 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

    似乎是 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. 弄个加固(限制普通逆向)

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

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

    楼主,目前,就两个方案

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

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

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

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

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

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

    很难说这样好不好,这算是收回用户一定的自主权。
        43
    iyaozhen   83 天前 via Android
    所以最近喜欢用 iOS 做测试了。😊
        44
    nanaw   83 天前 via Android
    @HFX3389
    1. Root 环境是常规环境,目前 Android 不 Root 没法治流氓,各家 ROM 虽说有所作为但还不够。并且即使不 Root,在第三方 rec 下也可以直接操作导入系统证书。
    2. 你如果不想被抓,那就只能自己维护一个证书列表,外部的都不信任。用尽手段反 Root 和 xposed 并且强加固。不过现在 xposed 好办,Root 很难检测
    3. 利用微信是极其愚蠢的做法,影响你自己的业务。先不说现在用着 Root+xp 微信批事没有,就算微信严格反 Root,真想抓你上个微信小号也照抓不误。
    4. 容器类应用似乎也可以,不过原理不太了解。
        45
    duan602728596   83 天前 via iPhone
    所以搞了一台二手 iPhone 越狱抓包了
        46
    dream7758522   83 天前 via Android
    楼主说的很对,不信的话可以试一试抓学习()强国的包,
        47
    Blanke   83 天前 via Android
    justTruseMe 等类似模块一键搞定
        48
    freedomshi   83 天前
    用模拟器,不用谢。
        49
    huruwo   80 天前
    @zeevin 要看软件的 有的软件没有设置只信任系统证书就可以抓。比如抖音
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3799 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 08:38 · PVG 16:38 · LAX 01:38 · JFK 04:38
    ♥ Do have faith in what you're doing.