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

电脑抓包 APP 的请求失败

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

    场景

    电脑使用 Proxyman 或 Charles 抓包手机 招商银行 APP 指定金价页面的网络请求。

    APP 页面的金价每隔几秒会更新一次,抓包工具中域名和请求列表中无新增内容。

    电脑和手机均安装证书,可在抓包工具中查看到请求的响应信息。

    https://imgur.com/a/LmJ6HIM

    问题

    抓包工具无法抓取所有的网络请求吗,还是因为该 APP 有特殊之处。


    望路过大佬不吝赐教,感谢。

    17 条回复    2024-05-28 16:50:01 +08:00
    Dora112233
        1
    Dora112233  
       167 天前   ❤️ 1
    因为 app 不信任你自己安装的这个证书
    HFX3389
        2
    HFX3389  
       167 天前   ❤️ 1
    Android 7 开始 App 可以不信任用户区自己安装的证书,你得 root 或者用虚拟 root
    ma46
        3
    ma46  
       167 天前   ❤️ 1
    你 root 之后这些银行 app 大概率就不给你用了
    ZnductR0MjHvjRQ3
        4
    ZnductR0MjHvjRQ3  
       167 天前   ❤️ 1
    你抓的什么包? http ?还是 HTTPs ? 有没有一种可能他是通过 websocket 来传的
    Bo0
        5
    Bo0  
    OP
       167 天前
    @Motorola3 HTTPs 的,其他请求都可以解析出来信息,就打开金价页面时无法显示出新增请求,更别提解析了。
    Donaldo
        6
    Donaldo  
       167 天前   ❤️ 1
    app 内可能自带一套 ssl 库,用的自己内置的证书,所以你在系统里装证书没有用。关键词 ssl pinning 。
    想要抓这种包,必须逆向这个 app 屏蔽掉内置的验证才行,很复杂,也有点刑,尤其是银行 app 。。
    Y25tIGxpdmlk
        7
    Y25tIGxpdmlk  
       167 天前   ❤️ 1
    银行类的 APP 应该都做了证书绑定吧。
    SSL Pinning
    kasusa
        8
    kasusa  
       166 天前   ❤️ 1
    试试用手机上的抓包软件,基本都可以抓。
    seers
        9
    seers  
       166 天前 via iPhone   ❤️ 1
    有可能是 native 在 socket 发包
    xchaoinfo
        10
    xchaoinfo  
       166 天前   ❤️ 1
    补充下,除了 SSL Pinning , 还有可能是 APP 内部直接屏蔽代理设置,这样你中间人攻击的抓包完全失效了。
    需要 Frida hook 到相关函数来解决。

    另外不只是银行类,目前几乎所有的大厂 APP ,抓包都没有那么容易了。
    ZnductR0MjHvjRQ3
        11
    ZnductR0MjHvjRQ3  
       166 天前   ❤️ 1
    @kasusa 手机上的抓包软件权限不如硬件代理高。。一个是监听 一个是修改你网关,你手机流量全走 pc




    @Bo0 不应该抓不到的,不行你用 surge 试试
    kuanat
        12
    kuanat  
       166 天前   ❤️ 1
    这个话题搜 ssl pinning 会有很多信息。

    如果抓包的时候 App 看不到相关数据了,这种一般只是简单拒绝走代理,或者拒绝了中间人证书,导致连不上了。如果 App 看到的数据正常,说明有 fallback 机制,多数都是非平台默认的 ssl 实现。

    不管哪种方式,常规应对策略基本上是 frida hook 掉类似证书加载、证书验证和代理之类的调用。有比较通用的脚本,支持常见的 ssl 库。

    但这样做的前提是应用本身没有混淆,调用的方法名没变过,或者有能力推断出混淆过的名字和地址。混淆一般是通过加壳完成的,除了少数基于 vmp 的方案,大多数都有比较通用的应对思路。

    脱壳之后一般还会需要绕过 root/签名检测,拦截客户端异常汇报等等,比起脱壳来说要简单。


    非常规的应对策略是类似 eCapture 这种非入侵式的方案,可以绕开证书校验。配合虚拟机效果会更好。
    1018ji
        14
    1018ji  
       166 天前   ❤️ 1
    root 首要,价格也不一定是 http 也可能跟美团一样自建协议通过 ip 地址直接请求
    qwerz
        15
    qwerz  
       166 天前   ❤️ 1
    magisk 安装类似 trust user certs 模块,自动将用户安装的证书移动到系统目录,另外还有证书校验, 找一找 ssl unpinng 之类的模块.如果是 app 自己实现的校验方法,一般用 Frida 去 hook 住.
    还有一个基于 ebpf 的抓包工具,无视 ssl,可以试试 https://github.com/gojue/ecapture
    Bo0
        16
    Bo0  
    OP
       166 天前
    感谢各位大佬的分享,大家的讨论的内容,对我来说逐渐超纲。
    我现在换思路,不使用抓包,改用自动化了。因为我最终目的是想在其他设备定期获取 APP 中的黄金价格。
    使用快捷指令 APP 定期截屏识别文本,然后筛选出想要的内容发送到 Webhook 机器人,就能推送给其他设备了。
    Tamamopoi
        17
    Tamamopoi  
       166 天前   ❤️ 1
    ROOT 后参考 #13 的教程,丢到系统根证书就行。
    小黄鸟啥的抓包都得把证书这样放,安卓 10+后无法直接修改 system 内容,得用 magisk 插件等实现,也不难的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 10:49 · PVG 18:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.