V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
MrhuangSTR
V2EX  ›  Python

美团 APP 抓不到包

  •  
  •   MrhuangSTR · 2020-02-06 10:04:43 +08:00 · 12365 次点击
    这是一个创建于 1512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.目标数据是美团 APP 的超市 /便利店几个地方的店铺和店铺详情数据;

    2.用 MuMu 模拟器打开 APP 设置好代理使用 Charles 抓包完全是抓不到店铺的包, 还出现请求 /unknow 的情况,搜索说是证书的原因;

    3.后来改用 mitmweb 抓,MuMu 模拟器装上 mitmproxy 的 CA 证书,一开始能抓到有关店铺的 API,后来改地址重新定位就抓不到了;

    4.再后来试了下 Xposed+Just True Me 在模拟器上试还是抓不到

    5.美团 APP 是有自己的协议吗?这种情况下如何抓包呢

    39 条回复    2020-02-16 15:03:59 +08:00
    ai277014717
        1
    ai277014717  
       2020-02-06 10:10:04 +08:00
    应该要 hook 掉证书校验的 api
    yalin
        2
    yalin  
       2020-02-06 10:11:46 +08:00
    美团有证书验证吧
    odirus
        3
    odirus  
       2020-02-06 10:19:39 +08:00
    我感觉 iOS 抓包省心很多
    MrhuangSTR
        4
    MrhuangSTR  
    OP
       2020-02-06 10:22:11 +08:00
    @ai277014717 这是要脱壳吗...
    MrhuangSTR
        5
    MrhuangSTR  
    OP
       2020-02-06 10:22:59 +08:00
    @yalin 按理说 Xposed+Just True Me 这个应该可以绕过证书验证的啊
    xi_lin
        6
    xi_lin  
       2020-02-06 10:23:00 +08:00
    @odirus 有证书验证的话 iOS 也抓不了
    MrhuangSTR
        7
    MrhuangSTR  
    OP
       2020-02-06 10:23:17 +08:00
    @odirus 我去试试
    sunzongzheng
        8
    sunzongzheng  
       2020-02-06 10:34:39 +08:00 via Android   ❤️ 1
    安卓 root 以后,把证书 push 进根证书区
    dearmymy
        9
    dearmymy  
       2020-02-06 10:40:54 +08:00
    @xi_lin 越狱,装 sslkill 插件。ios 能用的黑科技少点,要不上不了架。还是 ios 方便
    odirus
        10
    odirus  
       2020-02-06 10:48:27 +08:00
    我自己试了一下,应该是有部分抓不到,对客户端知之甚少,听各位大佬分析
    xi_lin
        11
    xi_lin  
       2020-02-06 11:00:03 +08:00
    @dearmymy 我赞同 iOS 上黑科技能用的少一些这个说法。另外,不越狱也能用 objection 注入 hook,需要重签名。
    但是一般的话 Android 上 Xposed 方案我觉得可能更方便一些。
    CY4suncheng
        12
    CY4suncheng  
       2020-02-06 11:04:14 +08:00
    Android 6 以上,https 抓包需要在 App 端内置证书,找个 5 系统的手机试试
    kerro1990
        13
    kerro1990  
       2020-02-06 11:06:14 +08:00
    app 内置证书抓不到
    lengjingxu
        14
    lengjingxu  
       2020-02-06 11:15:52 +08:00
    换美团的 h5 版本呢? http://i.meituan.com/
    odirus
        15
    odirus  
       2020-02-06 11:53:55 +08:00
    @kerro1990 @xi_lin

    各位大佬,请问 “app 内置证书抓不到” 这个说法是用到了哪方面的知识点呢,想学习一下。

    以前我发现有些软件不到包,是因为程序内部的 http client 可能没有实现代理功能,也就是说即使设置了代理,程序会这条规则。后面我用的是 Stream 这类软件(信任了自签发的证书),发现大部分的包都可以抓了。

    如果按照我的理解,app 验证证书就无法抓包的话,一旦我使用了 stream 这类软件并使用自签名证书,stream 无法抓到包,那 APP 也应该无法继续收到请求响应了,但我今天开启了 stream 之后 APP 依然是可以显示搜索结果的,这个地方就很疑惑了...
    hshpy
        16
    hshpy  
       2020-02-06 11:56:11 +08:00
    iOS 可以抓,要到系统设置,通用,关于,证书信任设置再信任一次证书
    n329291362
        17
    n329291362  
       2020-02-06 12:06:02 +08:00
    大众点评客户端不是 http 协议
    美团可能也不是
    用 wireshark 看看呗
    odirus
        18
    odirus  
       2020-02-06 12:07:56 +08:00
    @hshpy 我就是用的这种方式,我看了一下电影板块里面的猫眼数据是可以看到完整 API 响应的。主页搜索是看不到的

    @n329291362 了解了
    odirus
        19
    odirus  
       2020-02-06 12:10:16 +08:00
    我再咨询一个问题

    如果我用了 stream 这类软件,并且在系统里面信任了证书( iOS,Android 我知道有个版本问题),代码里面是否可以看出我用的自签发证书而拒绝响应呢?

    我们再测试过程中用抓包软件比较多,所以想了解得多一些,感谢各位了。
    n329291362
        20
    n329291362  
       2020-02-06 12:14:59 +08:00
    @odirus 忘了说 他们还是有些页面走的 http 协议的 不过不多
    拒绝响应的话 你的客户端应该打不开页面 并且抓包软件里是 unknow
    没记错的话
    explorerEX
        21
    explorerEX  
       2020-02-06 12:18:09 +08:00
    我也遇到过,甚至检测到后台抓包代理服务器直接拒绝响应了,app 直接断网,有大佬点拨下这是什么情况吗?
    sobigfish
        22
    sobigfish  
       2020-02-06 12:51:53 +08:00
    SSL Pinning / HTTP Public Key Pinning (HPKP)
    bazingaterry
        23
    bazingaterry  
       2020-02-06 12:55:15 +08:00
    美团点评移动端都套了一层私有协议的
    gunavy
        24
    gunavy  
       2020-02-06 13:32:21 +08:00
    美团 iOS 两年前抓过,现在不知道有没有加 Pin
    gulu
        25
    gulu  
       2020-02-06 13:34:23 +08:00 via Android
    试试关键词 SSL PINNING
    HFX3389
        26
    HFX3389  
       2020-02-06 13:42:48 +08:00
    如果有结果了烦请大佬艾特回我一下,我想学习学习
    Artail
        27
    Artail  
       2020-02-06 14:09:55 +08:00
    美团 App 里面有一部分的 API 走的不是传统的 HTTP,是特定的一种二进制协议。如果你抓的恰好是这个,那还真的抓不到。
    odirus
        28
    odirus  
       2020-02-06 14:19:41 +08:00
    @bazingaterry
    @Artail

    感谢,原来如此
    herozzm
        29
    herozzm  
       2020-02-06 14:22:57 +08:00
    @Artail 这种二进制为了防抓包?
    muzuiget
        30
    muzuiget  
       2020-02-06 14:28:11 +08:00
    对方写死 IP 地址,HTTP/HTTPS 客户端直连你怎么配代理也没有,这种情况就应该先用 wireshark 抓包观察下都和哪些 IP 通信,都用了什么协议,然后再定点爆破。比如对方做了能无视系统代理的手段,那就想把法把 HTTPS 客户端的交换密钥导出来,在 wireshark 里解密查看。
    ChangQin
        31
    ChangQin  
       2020-02-06 15:22:52 +08:00
    有可能是别的协议
    tolbkni
        32
    tolbkni  
       2020-02-06 15:26:52 +08:00
    通过 VPN 模式来抓包,这样应该无法被客户端忽略,跟普通的 HTTP 代理不同。
    heart4lor
        33
    heart4lor  
       2020-02-06 15:49:28 +08:00
    做了 SSL Pinning,可以参考我这篇博客 https://www.sunyongfei.cn/archives/213/
    lizhuoli
        34
    lizhuoli  
       2020-02-06 19:48:53 +08:00 via iPhone
    现在很多大厂都是走了 Protobuf 接口了吧,虽然是 HTTPS 能拿到明文,但是 Protobuf 本身是二进制数据,没有 meta 你也猜不到是什么数据结构
    bobuick
        35
    bobuick  
       2020-02-06 20:45:32 +08:00
    美团好像有些 app 是用的长连自己的协议,不是 http 也不是 https。以前有同事在那边做过类似架构
    lushan
        36
    lushan  
       2020-02-07 12:15:42 +08:00
    尝试一下 wireshark 和 科莱网络分析工具
    MrhuangSTR
        37
    MrhuangSTR  
    OP
       2020-02-07 14:46:39 +08:00
    @CY4suncheng

    @lushan 正打算用 wireshark 来看看
    MrhuangSTR
        38
    MrhuangSTR  
    OP
       2020-02-07 14:56:21 +08:00
    @sobigfish
    @gulu
    搜了一下 SSL Pinning : "SSL Pinning 是一种防止中间人攻击( MITM )的技术,主要机制是在客户端发起请求–>收到服务器发来的证书进行校验,如果收到的证书不被客户端信任,就直接断开连接不继续请求。",一些解决方案诸如用安卓 7 一下的版本(我的 MuMu 模拟器是安卓 6),使用 Xposed+Trust Me 但依然抓不到;将抓包工具的证书直接安装到系统根目录中还没试过
    Artail
        39
    Artail  
       2020-02-16 15:03:59 +08:00
    @herozzm 我个人的理解是目的有两个:1、framework 级别对数据类型做保护,就是如果这里表明类型是 int,却给个 string,framework 会直接把保护做掉,业务侧就不必在做更多级别的判断。2、这个不是基于 HTTP 做的,直接在 TCP 层往上做掉的,这样做可能性能会更优。数据交互都是二进制,一方面数据会更安全,另一方面,速度会更快,之前我试过一个 90 KB 大小的网络请求,进行反序列化的时候,JSON 差不多接近 3s 的耗时,美团这套二进制差不多 0.8 左右。这个数据可能有所波动。我用 15mid 15inch 的 MBP 的 iOS Simulator 跑的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1200 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 23:13 · PVG 07:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.