今天是2021年的最后一天了,多分享一些干货吧!看过上一章节教程后会有同学疑惑,我也一步一个脚印的,跟着流程走也设置了代理以及安装了证书,有的同学会发现 为什么手机不能够连接网络了呢?细心一点的同学会发现抓包抓的全部都是http协议的请求,没有一个https协议请求呢?然而有的同学却能够进行正常的抓取app得包呢?

从最最最基本得开始吧,

HTTP 协议发展至今,已经有二十多年的历史,整个发展的趋势主要是两个方向:效率 & 安全。

• 效率方面,从 HTTP1.0 的一次请求一个连接,到 HTTP1.1 的连接复用,到 SPDY/HTTP2 的多路复用,到 QUIC/HTTP3 的基于 UDP 传输,在效率方面越来越高效。

• 安全方面,从 HTTP 的明文,到 HTTP2 强制使用 TLSv1.2,到 QUIC/HTTP3 强制使用 TLSv1.3,越来越注重数据传输的安全性。总而言之,HTTP 协议的发展对,用户是友好的,但是对开发者而言却不那么友善。

•  抓包是每个程序员的必修技能之一,尤其是在接口调试和程序逆向方面具有广阔的用途。但是,随着越来越多的通信协议使用加密的 HTTPS,而且系统层面也开始强制规定使用 HTTPS,抓包似乎是显得越来越难了。

一、抓包原理

几乎所有网络数据的抓包,都是采用中间人的方式(MITM),包括大家常用的 Fiddler、Charles 等知名抓包工具,HttpCanary 同样是使用中间人的方式进行抓包。

从上面这个原理图,可以看出抓包的核心问题主要是两个:

  • MITM Server 如何伪装成真正的 Server;

  • MITM Client 如何伪装成真正的 Client;

第一个问题,MITM Server 要成为真正的 Server,必须能够给指定域名签发公钥证书,且公钥证书能够通过系统的安全校验。比如 Client 发送了一条 https://www.baidu.com 的网络请求,MITM Server 要伪装成百度的 Server,必须持有 www.baidu.com 域名的公钥证书并发给 Client,同时还要有与公钥相匹配的私钥。

MITM Server 的处理方式是从第一个 SSL/TLS 握手包 Client Hello 中提取出域名 www.baidu.com,利用应用内置的 CA 证书创建 www.baidu.com 域名的公钥证书和私钥。

创建的公钥证书在 SSL/TLS 握手的过程中发给 Client,Client 收到公钥证书后会由系统会对此证书进行校验,判断是否是百度公司持有的证书,但很明显这个证书是抓包工具伪造的。为了能够让系统校验公钥证书时认为证书是真实有效的,我们需要将抓包应用内置的 CA 证书手动安装到系统中,作为真正的证书发行商(CA),即洗白。这就是为什么,HTTPS 抓包一定要先安装 CA 证书。

第二个问题,MITM Client 伪装成 Client。由于服务器并不会校验 Client(绝大部分情况),所以这个问题一般不会存在。比如 Server 一般不会关心 Client 到底是 Chrome 浏览器还是 IE 浏览器,是 Android App 还是 iOS App。

当然,Server 也是可以校验 Client 的,这个后面分析。

二、Android6.0 及以下系统可以抓包,而 Android7.0 及以上系统不能抓包( 因为Android7.0+ 的版本新增了证书验证,所以 App 内不再像原来一样默认信任用户的证书)

三、解决方案

  1、让安卓开发解决,重新打包,对于安卓开发同学来说无非是多加几行代码的事,但是如果要想抓取别人产品的HTTPS包,那这种方式就行不通了。

  2、换一部Android6.0以下的手机/用系统6.0一下的模拟器安装app,可以解决这个问题

  3、Fiddler + VirtualXposed + JustTrustMe【主要讲解第三种方案】

四、解决过程以及方法

APP内置了对自家证书的校检,因此抓包时,会因为检测到自签名证书而拒绝联网。而Xposed能使用hook的方式来绕过它,所以VirtualXposed是一个免root的不错选择。

首先进入 Github 下载如下两个 Page(实在不行通过app浏览器下载VirtualXposed 以及 JustTrustMe ,很方便)

  • VirtualXposed:https://github.com/android-hacker/VirtualXposed
  • JustTrustMe:https://github.com/Fuzion24/JustTrustMe
  • 1.使用如下 adb 命令分别安装两个 pages

        adb -s C7YVB20413007239 install D:\chomeDow\VirtualXposed_0.18.2.apk
        adb -s C7YVB20413007239 install D:\chomeDow\JustTrustMe.apk

    2.安装完成进入 VirtualXposed apk 应用,点击 6 个小点进入设置页面

  • 3.进入设置页面,点击模块管理,勾选 JustTrustMe(我这里没有找到它,可能是我这个版本不需要在手动选择了,安装之后自动识别到了)重启之后我们重新进去设置页面,添加我们需要抓包的应用即可,我这里选择的钉钉做案例。
  • 4.点击添加应用,选择需要抓包的软件安装:

    5.配置 Fiddler 抓包

    6.回到 VirtualXposed 上滑解锁,打开我们之前安装的企业微信,则发现 charles 已经成功抓取到钉钉的 HTTPS 的数据包

五、总结概述

总之一句话,如果能给开发商量让开发加几行代码,如果不指望开发那么就自己下载一个模拟器,降低安卓版本,都不想操作就安装   VirtualXposed  能使用hook的方式绕过它。

Fiddler对安卓高版本进行抓包解决方案以及分析 进阶二的更多相关文章

  1. fiddler的安装以及使用同时对Android 与IOS 抓包配置进行分析 进阶 一

    由于工作方向的原因,很久没有用过APP抓包工具了,有那么一天遇到了bug需要协助开发工程师进行定位分析,然后又重新梳理了一下之前常用的抓包工具,这里重点介绍一下目前市面上最流行的几款抓包工具,根据自己 ...

  2. 使用fiddler对手机上的程序进行抓包

    用fiddler对手机上的程序进行抓包,网上有很多的资料,这里写一下来进行备用.   前提: 1.必须确保安装fiddler的电脑和手机在同一个wifi环境下 备注:如果电脑用的是台式机,可以安装一个 ...

  3. 计算机网络实验 Labexercise1-1 Protocol Layers(Wireshark抓包与协议分析实验)

    计算机网络实验 Labexercise1-1 Protocol Layers(Wireshark抓包与协议分析实验) 前言:本博客包含Windows10下安装wget.Wireshark. 一些有用的 ...

  4. Fiddler—PC上实现手机的抓包

    PC上安装Fiddler之后,可以抓取各种浏览器的请求,通过一些设置可以获取iPhone.安卓手机.windows phone的请求.具体的工作原理我也不多说(哼,绝对不是因为我不懂XD),主要说下如 ...

  5. 使用Fiddler调试手机端页面请求/抓包

    简介 Fiddler作为一个强大的抓包工具,也是非常强大的http(s)协议分析工具,我们通常用它跟踪请求,PC端使用这里暂不做介绍(这里前提是熟悉PC端的使用),使用很简单. 那么我们如何来用它来跟 ...

  6. Fiddler——PC上实现手机的抓包(转载 http://www.jianshu.com/p/13f8a81d7c7c)

    Fiddler是15年初,在千牛中做超级促销插件时,发现没有root的Android机和没有越狱的iPhone无法修改host,因此没办法测试.为了让我这个磨人的PD也能看到,开发推荐了Fiddler ...

  7. 使用Fiddler针对Android手机网络请求抓包

    本文转载自大牛Trinea的博文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信. ...

  8. 使用Fiddler完成Android和IOS手机抓包Https

    实现原理 Fiddler是PC端有名的HTTP抓包工具,利用它我们可以轻松实现对主机上所有http/https网络请求的捕捉.查看和修改操作. 同时它也提供了代理模式,其它主机由它代理发送的网络请求也 ...

  9. Fiddler系列教程2:手机抓包图文教程

    上篇Fiddler教程,我们教了大家Fiddler安装配置及如何使用Fiddler进行基本的Http抓包及模拟请求,今天给大家介绍下如何使用Fiddler进行手机抓包. 运行环境为Windows 10 ...

随机推荐

  1. AcWing 1222. 密码脱落

    题目链接 题目描述: X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于 ...

  2. 在uniapp的节流函数

    为了解决同一个人连续多次的点击同一个事件会造成的问题,js解决的方法有防抖和节流,防抖和节流都是在一定的时间上控制次数 节流是在定义的时间内连续点击多次事件,只会执行一次 在uniapp的工具文件夹u ...

  3. SpringMVC的数据响应方式

    1.页面跳转 *直接返回字符串 *通过ModelAndView对象返回 2.回写数据 *直接返回字符串 *返回对象或集合

  4. [UE][虚幻]创建默认媒体打包资源路径

    **创建默认媒体打包资源路径** **个人笔记**   **翻阅官方资料,实践出来的!**   **转载,"借鉴",重写...其他行为必须标明出处!!!** UE 官方默认有一个专 ...

  5. MySQL 的发展历史和版本分支

    时间和里程碑 想查看之前的版本可以从这里找到mysql4,5,8等版本http://mirrors.sohu.com/mysql/下面简单回顾下相关的一些版本信息1996 年 MySQL 1.0 发布 ...

  6. DRF JWT认证(一)

    为什么要使用JWT认证?构成和原理又是什么?怎么还有Base64的事?我都写了

  7. Bootstrap Blazor Table 组件(二)

    原文链接:https://www.cnblogs.com/ysmc/p/16128206.html 很多小伙伴在使用 Bootstrap Blazor Table组件的时候,都会有这样的一个需求: 我 ...

  8. Hadoop安装部署

    Hadoop伪分布式搭建 1.准备Linux环境 ①开启网络,ifconfig指令查看ip ②修改主机名为自己名字(hadoop) vim /etc/sysconfig/network NETWORK ...

  9. PicLite 开发日志 (v0.0.3)

    PicLite 开发日志 (v0.0.3) 感谢您阅读本片文章! Gitee 地址:https://gitee.com/XiaoQuQuSD/pic-lite. 新增功能 当错误出现时不再强制 rai ...

  10. K-MEANS算法【聚类】

    可视化 聚类 最简单实用的聚类算法:K-MEANS算法 K值:数据分成几份 质心:簇的中心点 优化目标:K个簇的(每个簇中的每个点距离质心的距离)的和最小 ci中心点,x个别点 工作流程: 设置K值, ...