手机抓包HTTPS

标签: | 发表时间:2021-01-13 09:28 | 作者:
出处:https://mp.weixin.qq.com

之前也介绍过 Charles 抓包神器,详细可以看这篇文章: 抓包神器。这个神器主要是解决在开发过程中快速定位异常,到底是界面展示 Bug 还是接口数据异常?这样借助这个神器,基本上在开发过程中就能解决很多问题了。

图片

学会手机抓包也能解决开发中很多问题,不仅如此,还能解锁去广告、白嫖 VIP 等骚操作。

在开发中,不知道大家有没有遇到过这样的场景。

线上发布 App 出现一个 Bug,但是这个时候可能并不在公司(等于 Charles 无法发挥作用),也需要立即 定位问题,数据问题?界面问题?我的代码没动过啊!明明测试环境都是好的,大部分用户也是好的啊。

基于 Charles 的 Map Remote 或 Rewrite 我们可以做到 App 灵活的在服务测试环境和正式环境之间切换,但是有一个前提,就是需要 电脑 💻,要是没有电脑呢?

这时候手机抓包就派上用场了,但这只是针对开发。你有没有下面这样的需求呢?手机抓包也能派上用场:

  • 有的 App 的广告真的太过分了,非常影响体验(虽然添加广告也是合理的)有没有什么办法可以去掉某些 App 的广告呢。

  • 不花钱的 VIP 他不香吗?

1. HTTP Catcher 简介

图片交代了故事背景,今天的主角就登场了。首先声明,本文章不是 App 广告,随便找了一个抓包工具,你也可以用其他的。HTTP Catcher 是一个 Web 调试工具,可以对来自 iOS 系统的 http/https 请求进行拦截,查看,修改和重放。你不需要连接电脑,HTTP Catcher 可以在后台记录 Wi-Fi 和蜂窝网络下的 HTTP 流量。HTTP Catcher 让你非常容易的测试你的应用和网站,你可以直接查看它们的请求和响应。HTTP Catcher 会创建一个VPN配置。当你开启抓包时,HTTP Catcher 会在 VPN 进程中启动一个本地 HTTP 代理,所有的 HTTP 流量将通过 VPN 转发到这个本地代理中。 功能
  • 解密 HTTPS
  • 实时修改请求和响应
  • 请求重放
  • 阻止请求
  • 域名过滤
  • DNS 修改

看到这里可能你对 HTTP Catcher 有一个基本的认识,这只是对它的一个基本介绍。

2. 安装 & 配置

(1)在 AppStore 下载 HTTP Catcher。(2)安装证书,因为我们需要抓取 HTTPS 请求。 图片

如上图所示,点击解密 HTTPS 流量 - 安装证书 - 下载证书 - 设置 - 已下载描述文件中安装证书。

(3)证书信任

图片

紧接着我们还需要在 iOS 中对此证书进行信任。

设置 - 通过 - 关于本机 - 证书信任设置 - 选择 HTTP Catcher CA

HTTP Catcher 界面功能介绍

主菜单

图片
序号 含义
0️⃣ HTTP Catcher 所抓到的包会现在在这个 Tab 下
1️⃣ 开始监听请求,在开始监听前会清空之前的历史请求
2️⃣ 跳转到工具栏,工具栏详情有 过滤器,代理,DNS 劫持,重写,黑名单
4️⃣ 请求列表展示处
5️⃣ 监听到的请求是按照请求时间展示,还是按照域名聚合展示
6️⃣ 可以过滤请求结果。只展示 JSON 或者 图片,媒体,WebSocket,HTML
7️⃣ 历史数据监听包,点击右上角可删除。

解密 HTTPS 流量开关

如果不开启此开关,那么默认只会监听 HTTP 的流量。

不过我们在开发测试的时候一般是在 HTTP 下进行,正式进入生产环境才会使用 HTTPS,所以在开发环境下 不需要打开次开关。

过滤器

图片

过滤器的作用可以对指定的域名进行定向抓包,因为如果不设置指定域名的话,那么在开启代理后,会有很多其他的 App 的请求包,会略微影响到观看数据体验。

还有就是因为 iOS 系统不信任用户导入的证书,所以在开启抓包之后,类似于 iCloud,AppStore,iTunes  都是无法使用的,为了不影响上述服务的使用,我们可以将 苹果 旗下的域名进行排除。

DNS 劫持

图片

假设我们正在开发的 App 的 正式环境的域名为 https://api.i.server.com 此时我们想要将次 App 变为测试环境 App

那么我们就需要将对应的 https://api.i.server.com 转变为 https://api.t.server.com ,这样这个 App 就变成测试环境 App 啦。

DNS 就是为了实现这个功能的。

黑名单

图片

黑名单的作用就是设置之后,无法对目标地址发起请求。

至于应用场景,还没有太 Get 到。

重写

图片

重写 基本上就是 HTTP Catcher 最强大的功能了,对标 Charles 的 Rewrite 功能。

主要作用是可以针对一次 HTTP 请求包,可以在请求和响应阶段修改任何内容。

修改细则为

  • 添加 Header

  • 修改 Header

  • 删除 Header

  • Path

  • URL

  • 添加 Query 参数

  • 修改 Query 参数

  • 删除 Query 参数

  • 添加表单参数

  • 修改表单参数

  • 删除表单参数

  • 修改 Body

WiFi 访问

3. 实战

去广告

某天想去下载一款  斗图 方面的表情包软件,然后就在 AppStore 上搜索并下载了  斗图表情 。接下来是使用体验。

打开 App 弹出 5s 广告。 图片打开软件之后 可能不到 2s 吧,直接弹出 AppStore 评分,这。。。。 图片在浏览20s 之后直接弹出 28s 的广告。并且刚开始还不能关闭,需要浏览 5 秒之后才能关闭。 到这 我想直接好家伙,这饭恰的 也太。。。。(有点让我不舒服,哈哈哈哈) 图片我也是被逼急了,不得不采用技术手段解决这件事了。因为 App 需要在启动的时候就加载广告,那么 App 开屏页需要展示什么对应的肯定是服务器返回的。所以我们需要抓取一下在 App 刚开始启动的时候的接口调用情况。此时打开 Charles ,手机配置好代理,就开始准备抓包了。分析启动接口。 图片上方图示可以看到,在 App 刚刚启动的时候通过观察接口抓取情况,可以定位到 该软件的域名是 adesk.com。然后接下来就需要分析接口了。 图片将所有请求展开之后,可以看到上方蓝色部分的 config 接口还是很醒目的💩💩💩💩。打开他 看一下
  {   
 "code": 0,
 "msg": null,
 "res": {
  "app_rate": {
   "enable_rate": true,
   "tyle_custom": true,
   "main_title": "给我们些建议吧!",
   "sub_title": "非常感谢您使用我们的产品,我们非常重视您的评价和意见,如果您喜欢我们的产品,请给个好评吧!",
   "confirm_text": "好评一下",
   "cancel_text": "我再想想",
   "targeturl": "https://apps.apple.com/cn/app/id1155901497",
   "rate_interval": 2,
   "rate_limit_time": 2
  },
  "app_update": {...},
  "app_configuration": {...},
  "other_data": {...},
  "app_advertising": {...}
 }
}
好家伙,原来让我一进入 App 就评分就是这个东西再搞鬼。在看下面的  app_advertising 这个字段,很明显就是针对 App 广告的配置了。既然接口已经找到了,那么就可以开始我们进攻的号角了虽然目前我们虽然通过 接口分析 看到了类似广告的接口,但是我们还是需要来验证自己的推测。这里建议先在电脑上使用 Charles 的 Map Local 功能直接修改到执行的 文本文件里。然后直接将 app_advertising 对应的字段改为空对象,快速验证我们自己的想法。
  {   
 "code": 0,
 "msg": null,
 "res": {
  "app_rate": {
   "enable_rate": true,
   "tyle_custom": true,
   "main_title": "给我们些建议吧!",
   "sub_title": "非常感谢您使用我们的产品,我们非常重视您的评价和意见,如果您喜欢我们的产品,请给个好评吧!",
   "confirm_text": "好评一下",
   "cancel_text": "我再想想",
   "targeturl": "https://apps.apple.com/cn/app/id1155901497",
   "rate_interval": 2,
   "rate_limit_time": 2
  },
  "app_update": {...},
  "app_configuration": {...},
  "other_data": {...},
  "app_advertising": {}
 }
}
我们将对应的返回结果里面的 app_advertising 字段修改为空对象,然后保存为 "ad.json" 然后手动将次接口的响应结果映射 ad.json 这样最终的返回接口就是 ad.json 文件中的内容了。在经过 Charles 设置之后的 App 就没有广告了,真的是通畅无比。 图片刚才我们已经在电脑上 通过 Charles 实现了广告过滤,那么其实大部分时间我们在使用手机的时候不在电脑旁边,也不一定连接的同一个 WIFI。这个时候就到 HTTP Catcher 就排上用场了。我们主要的任务就是将在电脑上 Charles 实现的功能自己在实现以下就可以了。开启手机  HTTP Catcher 数据包监听,打开软件,耐心等待广告加载完成后 进入 HTTP Catcher。 图片如上图所示,选择 new-kv.adesk.com 然后选中 config 接口 左滑。选择更多 图片在弹出的菜单栏中选择新建重写,选择在文本编辑器中编辑,然后复制下面的内容,将文本框中的内容进行替换。
  {   
   "rules" : [
    {
      "action" : "body",
      "matchField" : "",
      "field" : "",
      "value" : "\"app_advertising1\":{},\"test\"",
      "matchValue" : "\"app_advertising\"",
      "destiontion" : "response",
      "isRegex" : false
    }
  ],
  "enabled" : true,
  "name" : "去广告 ",
  "description" : "",
  "locations" : [
    {
      "method" : "GET",
      "scheme" : "https",
      "enabled" : true,
      "port" : 443,
      "query" : "appver=2.9.7&os=ios&packagename=com.emojifair.emoji",
      "host" : "new-kv.adesk.com",
      "path" : "\/v1\/config"
    }
  ]
}
替换后,重启一下 HTTP Catcher, 然后在打开软件你会发现🤩 这软件用起来真的体验翻倍。

4. 白嫖 VIP

图片这里以 iOS 端  有道云笔记 为例在 HTTP Catcher  重写中添加以下内容
  {   
  "rules" : [
    {
      "action" : "body",
      "matchField" : "",
      "field" : "",
      "value" : "{\"service\": 1,\"payYear\": \"true\",\"end\": \"4100688000000\",\"um\": {\"nn\":\"atomhu\",\"q\": 3225419776,\"u\": 31360,\"dp\": 0,\"dq\": 100}}",
      "matchValue" : "[\\s\\S]+",
      "destiontion" : "response",
      "isRegex" : true
    }
  ],
  "enabled" : true,
  "name" : "有道笔记破解会员",
  "locations" : [
    {
      "method" : "POST",
      "scheme" : "https",
      "enabled" : true,
      "port" : 443,
      "query" : "method=status",
      "host" : "note.youdao.com",
      "path" : "\/yws\/mapi\/payment"
    }
  ]
}
然后再次打开有道云,你会神奇的发现,你已经变身 VIP 了 🤩🤩🤩🤩
这里变为 VIP 实际上也是利用重写功能,在有道云返回用户信息的接口里面,手动修改了用户的 VIP 状态。 图片很多的软件需要大家去探索才行,至于最后是否 OK 是多方面因数所影响的。

5. 软件抓取报告

当我学会使用 Charles 时开始,一发不可收拾,市面上 大部分常见 App 我都抓取过,这里整理一份报告
App 名称 是否可抓取 Content-Type 备注
掘金 ✔️ application/json; charset=utf-8 通过接口拿到一些自己定向想要查看的信息,定向搜索整理资源
这就是项目 awesome-IntelliJ-IDEA 的由来
简书 未知 比较奇怪,开启抓包后
简书就不能使用了。
CSDN ✔️ application/json; charset=utf-8 CSDN 有验签,接口不能重复请求
斗图表情 ✔️ application/json; charset=utf-8 去广告
小睡眠 ✔️ application/json; charset=utf-8 可以通过重写将自己的 Tilte 改为 VIP
但是不能带来实际的改变
因为权限验证是后端
潮汐 ✔️ application/json; charset=utf-8 倒腾了好久,最终还是没能 白嫖 VIP🤩🤩
闲鱼 未知 不知道是不是 阿里系 原因
什么都看不到
靓仔落泪
自如 ✔️

网易云 ✔️ text/plain;charset=UTF-8 网易云的返回结果应该都是加密的
什么都看不到
B 站 ✔️ application/json; charset=utf-8 bilibili-schedule
哔哩哔哩(Bilibili)每日任务投币,点赞,分享视频,直播签到,银瓜子兑换硬币,漫画每日签到
微博 ✔️ application/json; charset=utf-8 可以抓取 每日热榜数据等
最右 ✔️
我记得最右 是关停过一段时间整体架构升级。我只能说改版后的架构 我什么都看不出来。
豆瓣 ✔️ application/json; charset=utf-8 电影榜单
幕布 ✔️ application/json; charset=utf-8 可以抓取优秀笔记
滴答清单 ✔️ application/json; charset=utf-8 如果你足够牛逼,应该可以变身 VIP
知乎 ✔️ application/json; charset=utf-8 知乎热榜
知乎热搜词
有道云笔记 ✔️ application/json; charset=utf-8 实现 VIP 🤩🤩
通过重写功能可以实现 VIP 才能使用的 faceID 功能
美团 ✔️ application/json; charset=utf-8 查看自己附近的店铺列表
饿了吗 ✔️ application/json; charset=utf-8 查看自己附近的店铺列表
京东 ✔️ application/json; charset=utf-8 可以通过借口实现京东模拟签到
理想 ✔️ application/json; charset=utf-8 分析接口设计
小鹏 ✔️ application/json; charset=utf-8 分析接口设计
蔚来 ✔️ application/json; charset=utf-8 分析接口设计,蔚来的每个接口都是加签的,安全性还是比较高的。

6. 写到最后

学习 Charles,HTTP Catcher 这样的抓包软件,是为了帮助自己解决工作中棘手的问题。

在没有电脑的情况下,也能通过手机定位问题。再也不用一会要下载正式环境 App 一会 又要安装测试环境 App 了。

同时也可以通过抓包学习一下其他公司的 API 接口设计。如果恰巧你对这方面格外有兴趣的话,那么实现 禁用广告,VIP 破解,甚至于 商品秒杀,都没问题。

投稿作者:胡川港知乎主页:zhihu.com/people/hu-chuan-gang-58

GitHub主页:https://github.com/xiaoxiunique

相关 [手机 https] 推荐:

手机抓包HTTPS

- -
之前也介绍过 Charles 抓包神器,详细可以看这篇文章: 抓包神器. 这个神器主要是解决在开发过程中快速定位异常,到底是界面展示 Bug 还是接口数据异常. 这样借助这个神器,基本上在开发过程中就能解决很多问题了. 学会手机抓包也能解决开发中很多问题,不仅如此,还能解锁去广告、白嫖 VIP 等骚操作.

关于手机App的Https抓包

- - 火丁笔记
我喜欢用 Mitmproxy 来处理手机 App 抓包之类的工作,本来用它来抓 Https 包是很容易的一件事,只要设置好代理,浏览 mitm.it 按提示安装证书即可,可是当 Android 版本升级到 7 以后,此方法就失效了,为什么呢. 因为新版 Android 缺省情况下只信任系统级证书,而不再信任用户级证书,问题详细描述可以参考: 听说安卓微信 7.0 不能抓 https?.

测试手机客户端HTTPS 你应该知道的事

- - CSDN博客移动开发推荐文章
手机客户端使用HTTPS注意点. HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护. HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(意即“我信任证书颁发机构告诉我应该信任的”). 因此,一个到某网站的HTTPS连接可被信任,需要满足下面的条件:.

https协议

- - 互联网 - ITeye博客
SSL 协议的握手过程   .       为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议. SSL 协议既用到了公钥加密技术(非对称加密)又用到了对称加密技术,SSL对传输内容的加密是采用的对称加密,然后对对称加密的密钥使用公钥进行非对称加密. 这样做的好处是,对称加密技术比公钥加密技术的速度快,可用来加密较大的传输内容,公钥加密技术相对较慢,提供了更好的身份认证技术,可用来加密对称加密过程使用的密钥.

Go和HTTPS

- - Tony Bai
近期在构思一个产品,考虑到安全性的原因,可能需要使用到 HTTPS协议以及双向数字证书校验. 之前只是粗浅接触过HTTP( 使用Golang开 发微信系列). 对HTTPS的了解则始于那次 自行搭建ngrok服务,在那个过程中照猫画虎地为服务端生成了一些私钥和证书,虽然结果是好 的:ngrok服务成功搭建起来了,但对HTTPS、数字证书等的基本原理并未求甚解.

Google https被屏蔽

- - 月光博客
  根据Google透明度报告 显示,从上周(5月27日)开始,Google的部分服务开始被屏蔽,其中最主要的是HTTPS搜索服务和Google登录服务,所有版本的Google都受到影响,包括Google.hk和Google.com等.   此次屏蔽的方法主要屏蔽Google部分IP地址的443端口,包括google.com.hk,accounts.google.com的部分IP的443端口被封,导致部分中国用户无法访问Google搜索和Gmail,由于Google的IP地址非常多,而被屏蔽的只是其中部分IP,因此只有部分用户受到了影响.

HTTPS的二三事

- - 细语呢喃
前几篇博文都是有关HTTPS的东西,有人可能会问,什么是HTTPS. 因此,本文主要来解答这些疑惑. Alice和Bob是情人,他们每周都要写信. Alice 写好后,送到邮局,邮局通过若干个快递员到Bob,Bob回信过程类似. 这是可以看成的简单的http的传输. 有一天,Alice觉得,要是写的信中途被人拆开了呢.

HTTPS劫持研究

- - FreeBuf互联网安全新媒体平台
这篇文章描述了我们对哈萨克斯坦政府实施的电信级HTTPS劫持的分析. 哈萨克斯坦政府最近开始使用一个假的根证书颁发机构,对包括Facebook,Twitter和Google等网站在内的HTTPS连接进行中间人(MitM)攻击,在此文中,我们给出了还在进行中的研究的初步结果,以及哈萨克劫持系统中新的技术细节.

最新网址 https://72.52.124.208

- chanjw - 电驴下载基地
精彩世界 cmule.com 我们传递.

最新网址 https://72.52.124.209

- Asker - 电驴下载基地
精彩世界 cmule.com 我们传递.