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

如何对 Android APP 抓取 HTTPS 包?

  •  3
     
  •   LxnChan · 2022-03-22 16:37:02 +08:00 · 17294 次点击
    这是一个创建于 963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有一 APP ,采用 HTTPS 方式与服务器通讯,需要对该 APP 抓包获得接口。

    但是现在问题如下:

    • 用主力机抓包:Android 12 ,安装证书后第三方 APP 默认不信任非系统证书,无法抓包;

    • 用备用机抓包:Android 5.1.1 ,因该接口需要先获得定位数据,而备用机定位十分缓慢,也无法抓包;

    • Android Studio Emulator:arm 架构的镜像无法启动,该应用无法安装在 x86 架构上。

    因此想问问大家有什么别的好的方法吗?

    第 1 条附言  ·  2022-03-22 18:01:56 +08:00
    附属条件:应用会检测 Root 或 Xposed 、另外主力机( Android 12 )也不想 Root ,Root 的方案可以不用推荐了。
    第 2 条附言  ·  2022-03-23 21:17:51 +08:00
    1. 统一回复一下为什么不 Root:一方面前面也说了,应用会检测;另外一方面,Root 后会丢掉所有数据,且因为需要在手机上看奈飞,Root 后 GMS 会受影响,奈飞会无法运行。还有别问我“×××方法能防止奈飞在 Root 环境下运行,你为啥不用”,别问,问就是懒。
    2. 我现在是怎么解决的:借了台 iPhone 6 ,问题解决🤣。
    3. 我把这些东西都记录在了我的 blog 下了,有兴趣的可以去看看 https://lxnchan.cn/app-package-grab.html
    59 条回复    2022-10-09 21:19:42 +08:00
    mynuolr
        1
    mynuolr  
       2022-03-22 16:41:12 +08:00
    Root 后把自签加入系统证书。
    learningman
        2
    learningman  
       2022-03-22 16:44:12 +08:00
    用 frida/xposed hook 证书验证的接口,直接 return true
    DonaldY
        3
    DonaldY  
       2022-03-22 16:47:51 +08:00
    charles
    NjcyNzMzNDQ3
        4
    NjcyNzMzNDQ3  
       2022-03-22 16:49:13 +08:00
    补充#1

    下个安卓模拟器,比如网易木木,再带 root 功能,方便自签证书导入
    popok
        5
    popok  
       2022-03-22 16:49:31 +08:00   ❤️ 1
    现在的安卓系统确实比较麻烦,我也蹲一个可用的方法。

    这方面还是 ios 方便,直接证书信任,然后就可以抓了。
    DonaldY
        6
    DonaldY  
       2022-03-22 16:49:31 +08:00
    Android 确实。。。
    dier
        7
    dier  
       2022-03-22 16:54:03 +08:00
    Fiddler 在 PC 上做代理也不行吗
    tiny1994095
        8
    tiny1994095  
       2022-03-22 16:57:58 +08:00   ❤️ 1
    LxnChan
        9
    LxnChan  
    OP
       2022-03-22 17:00:39 +08:00 via Android
    @mynuolr @learningman 不能采用 root 或者框架,会被检测
    @NjcyNzMzNDQ3 应用不支持 x86 架构
    @dier 要安装证书
    @tiny1994095 稍后我看一下
    bruce0
        10
    bruce0  
       2022-03-22 17:07:08 +08:00
    忘记从哪个版本开始 Android 抓包变麻烦了, 原因是 app 可以不信任非系统证书,这就需要 root 权限把伪造的证书加入 root ,然后在用 frida 代理抓包

    但是有的 app 检测到 root 后就退出,或者检测到代理就退出,有的还只信任 app 内自带的私有证书,这些就很难搞了

    https://zhuanlan.zhihu.com/p/46433599 可以参考
    ysc3839
        11
    ysc3839  
       2022-03-22 17:09:03 +08:00 via Android
    SSLUnpinning 2.0
    ysc3839
        12
    ysc3839  
       2022-03-22 17:10:03 +08:00 via Android
    @LxnChan #9 市面上的模拟器有 ARM 模拟功能的,不需要应用支持 x86 也可以运行
    clf
        13
    clf  
       2022-03-22 17:13:34 +08:00
    手机虚拟机装 root 的镜像呗
    deplivesb
        14
    deplivesb  
       2022-03-22 17:27:16 +08:00
    Xposed
    tsanie
        15
    tsanie  
       2022-03-22 17:29:55 +08:00
    实在不行自编译 aosp ,把 mitm 证书内置为系统证书(
    learningman
        16
    learningman  
       2022-03-22 17:30:57 +08:00
    @LxnChan #9 root 检测本身也可以被 hook 的,一直不能 root 多束手束脚啊
    mxalbert1996
        17
    mxalbert1996  
       2022-03-22 17:37:39 +08:00 via Android
    先用 Magisk 来 root
    然后用 https://github.com/Magisk-Modules-Repo/movecert 把用户证书转成系统证书
    再用 Shamiko ( https://github.com/LSPosed/LSPosed.github.io/releases) 对特定应用隐藏 root
    mxT52CRuqR6o5
        18
    mxT52CRuqR6o5  
       2022-03-22 17:42:39 +08:00 via Android
    你那应该不是不信任非系统证书,而是有 ssl pinning ,只信任特定的证书
    我的建议就是用安卓 5 ,装个 xposed 插件去除 ssl pinning 限制,再找些插件防止 root/xposed 检测
    mxT52CRuqR6o5
        19
    mxT52CRuqR6o5  
       2022-03-22 17:43:01 +08:00 via Android
    定位速度问题再找一些虚拟定位去解决
    libook
        20
    libook  
       2022-03-22 17:51:07 +08:00
    买个可解锁的手机(无锁更方便,如 Pixel ),system 挂载成可写之后把证书转 PEM 格式、按命名规则改好名字,放在特定的目录下就可以了,不需要手机持续 root 状态。

    当然 root 了也可以,操作更方便一些。

    急着用可以找些电脑上用的自带 root 的安卓模拟器,比如夜神模拟器,就是兼容性不是特别好,有时候会闪退。
    LxnChan
        21
    LxnChan  
    OP
       2022-03-22 17:59:47 +08:00
    @bruce0 是 7.0
    @ysc3839 #11 @mxalbert1996 #17 不能 root
    @clf 考虑过,但我想作为最后的解决方案
    @tsanie 草🤣,这就开始下载源码(
    @mxT52CRuqR6o5 #19 虚拟定位稍后试一下
    Jat001
        22
    Jat001  
       2022-03-22 18:00:45 +08:00
    试试这个,root 之后基本全自动了

    https://github.com/httptoolkit/httptoolkit-android
    ch2
        23
    ch2  
       2022-03-22 18:02:05 +08:00
    ->该应用无法安装在 x86 架构上
    装个翻译插件就行了
    LxnChan
        24
    LxnChan  
    OP
       2022-03-22 18:02:58 +08:00
    @ch2 细说,试过 Android 模拟器的兼容模式会导致该 App 闪退
    Zy143L
        25
    Zy143L  
       2022-03-22 18:47:04 +08:00 via Android
    安卓 12 使用 Magisk 模块安装根证书
    使用 Xposed 模块 JustTrustMe TrustMe 解除固定证书
    noahhhh
        26
    noahhhh  
       2022-03-22 18:50:21 +08:00 via Android
    Android 不是有很多虚拟机吗…太极应该也行吧
    chanwang
        27
    chanwang  
       2022-03-22 19:22:15 +08:00 via Android
    电脑开热点抓手机的包不可以吗?抓包不是很简单嘛?当然我说抓的是手机的流量全部包了。还是说要解密数据?这个绕不开证书。抓包整个通讯路径上都可以尝试抓包吧?非要手机上自己抓?路由器上不可以?
    xFrank
        28
    xFrank  
       2022-03-22 19:59:39 +08:00
    @mynuolr
    已 root 的手机怎么加入系统证书?
    skylancer
        29
    skylancer  
       2022-03-22 20:11:29 +08:00
    @chanwang 人家要看内容,你通讯路径抓了看个寂寞?
    skylancer
        30
    skylancer  
       2022-03-22 20:12:12 +08:00
    [现有一 APP ,采用 HTTPS 方式与服务器通讯,需要对该 APP 抓包获得接口。]

    我发现都是回贴不看贴的..
    mxT52CRuqR6o5
        31
    mxT52CRuqR6o5  
       2022-03-22 20:17:06 +08:00 via Android
    如果 app 用了 ssl pinning ,你在那边折腾证书是没用的,这种情况下不 root 就得改 app 了,你说哪个更难操作(都能改 app 了还抓什么包呢)
    theqiang
        32
    theqiang  
       2022-03-22 20:18:07 +08:00 via Android
    目前用 lsposed 插件 JustTrustMe/TrustMeAlready + HttpCanary + magiskhide 组合,但是有 root 方案了
    imtianx
        33
    imtianx  
       2022-03-22 21:00:00 +08:00
    我记得使用 okhttp 可以自定义代理,这样抓包工具是抓不到的,但是如果连的 wifi ,在路由器上应该可以抓到,但是解密比较麻烦吧。
    imtianx
        34
    imtianx  
       2022-03-22 21:01:06 +08:00
    还有 ,root 和 xposed 检测可以自己欺骗过去的
    mxalbert1996
        35
    mxalbert1996  
       2022-03-22 21:06:54 +08:00 via Android
    @LxnChan 不能 root 就放弃吧,你这个需求没 root 是不可能的。
    wanf3ng
        36
    wanf3ng  
       2022-03-22 21:14:55 +08:00   ❤️ 1
    下个安卓模拟器,安卓版本选 4.4 (只要 7 以下就行,7 以下可以信任非系统证书)
    jpyl0423
        37
    jpyl0423  
       2022-03-22 21:14:58 +08:00
    装个平行空间 apk ,然后就能用 charles/fiddler 抓包了
    不过这个平行空间的版本有要求,好像是某个版本之下,具体不记得了可以搜一下。
    0o0O0o0O0o
        38
    0o0O0o0O0o  
       2022-03-22 21:26:33 +08:00 via iPhone
    1. 用一些免 root 框架,如果被检测,先尝试各种公开的过检测的技巧和插件,再进一步则需要学习分析
    2. 带有 ARM 转译的商业模拟器,或者干脆 arm 云真机,如果仍然被 APP 检测,那么可能也需要学习分析和过检测
    3. 修改 APP ,重新打包 APK ,由于现在的应用多数有加固,比上述的大概还复杂一些,一般用于需要重新分发的场景,只是抓个包成本太高

    总之,这方面的新手如果一定要给自己提前设下机型和免 root 的限制,那对于同等防护级别,要付出的努力也会更多。
    cweijan
        39
    cweijan  
       2022-03-22 22:06:46 +08:00
    @mxT52CRuqR6o5 不是的,比如京东就没有 ssl pinning, 而是设置了只信任系统证书
    LxnChan
        40
    LxnChan  
    OP
       2022-03-22 22:45:24 +08:00
    @0o0O0o0O0o 倒是提醒我 arm 云真机的问题了,等下问问学校那边还有没有资源
    mydingyan
        41
    mydingyan  
       2022-03-22 23:41:04 +08:00
    我项目组原本 APP 加了私有证书,fiddler 抓包抓不了,后来让前端打包 APP 时不加 ssl pinning 就可以抓了。
    xuhaoyangx
        42
    xuhaoyangx  
       2022-03-22 23:49:58 +08:00
    @mxalbert1996 #17 方法正解

    解决 ssl pinning 。装 lsp ,和插件 JustTrustMe 或 TrustMeAlready
    maskerTUI
        43
    maskerTUI  
       2022-03-23 09:16:06 +08:00
    装个免 root 框架,像太极 xposed 这种
    ltkun
        44
    ltkun  
       2022-03-23 09:33:18 +08:00
    会检测不能装个屏蔽检测的工具吗 root 了都 还有啥不能干
    kingfalse
        45
    kingfalse  
       2022-03-23 09:40:35 +08:00
    这不想那不想的,干脆别抓了,不想 root 主力机就用模拟器,mumu,夜神,雷电,完全够用,检测 root 就屏蔽他检测,这些都是可以做到的
    kingfalse
        46
    kingfalse  
       2022-03-23 09:41:42 +08:00
    除了 Flutter 开发的 app 抓包恶心点外,其他的都好说
    HFX3389
        47
    HFX3389  
       2022-03-23 09:58:37 +08:00
    话说现在有人出已 root 的抓包机吗:D😋
    serge001
        48
    serge001  
       2022-03-23 10:22:10 +08:00
    https://github.com/android-hacker/VirtualXposed
    不需要 root, 装一个 VirtualXposed ,然后把 app 安装到 VirtualXposed 里
    FaiChou
        49
    FaiChou  
       2022-03-23 10:26:02 +08:00
    红米 Note10 root 后, 使用 Packet Capture 和 HttpCanary 都不能添加证书.. 不知道啥原因
    popok
        50
    popok  
       2022-03-23 10:51:57 +08:00
    @chanwang #27 人家都说了想抓 https 的包,必然绕不开证书这个环节啊,现在问题是怎么让安卓系统认这个证书
    soulmine
        51
    soulmine  
       2022-03-23 11:16:51 +08:00
    冷知识 安卓 7 之前可以随便装证书
    yukiwc
        52
    yukiwc  
       2022-03-23 15:19:18 +08:00
    借楼问问,wifi 直连的应用怎么抓数据,fiddler 抓不到
    ZeroDu
        53
    ZeroDu  
       2022-03-23 15:53:06 +08:00
    HttpCanary 貌似 github 上作者删库了
    LxnChan
        54
    LxnChan  
    OP
       2022-03-23 17:19:16 +08:00
    @ZeroDu GPlay 上也跑了,已经买了的直接就打不开了
    @yukiwc WiFi 直连是啥,WiFi Direct 那个吗?
    @serge001 基本就是太极的原理?
    @HFX3389 有闲置的手机就可以 root 一下装个 Charles 抓呗
    MonkeyJon
        55
    MonkeyJon  
       2022-03-23 17:29:01 +08:00
    https://blog.chrxw.com/archives/2020/08/10/1353.html
    你试试,把小黑盒这个软件换成你要抓的软件
    serge001
        56
    serge001  
       2022-03-23 20:27:40 +08:00
    @LxnChan 对 跟太极差不多
    yolee599
        57
    yolee599  
       2022-03-24 08:51:22 +08:00 via Android
    root 后安装面具,是可以隐藏 root 的,隐藏后某钉都检测不到,所有银行 APP 也检测不到
    magicdawn
        58
    magicdawn  
       2022-04-23 01:02:24 +08:00
    安卓好麻烦...
    有没简单点的办法, 现在没 root, 日用机, 没解锁
    qgbcs1
        59
    qgbcs1  
       2022-10-09 21:19:42 +08:00
    frida.PermissionDeniedError: failed to execute child process “/data/local/tmp/re.frida.server/frida-helper-32” (Bad address)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1494 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.