LxnChan
V2EX  ›  Android

如何对 Android APP 抓取 HTTPS 包?

  •  3
     
  •   LxnChan · Mar 22, 2022 · 23741 views
    This topic created in 1693 days ago, the information mentioned may be changed or developed.

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

    但是现在问题如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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