网络抓包专题

导航目录

  • HTTP 原理
  • HTTPS 原理
  • TLS 原理
  • 网络抓包原理
    • 一. 什么是抓包?
    • 二. 抓包的原理
      • 对HTTP请求进行抓包
      • 对HTTPS请求进行抓包
    • 三. Android设备抓包问题
      • Android6.0 及以下系统
      • Android7.0 及以上系统
        • 方式一:
        • 方式二

HTTP 原理

HTTP 详解 点击跳转

HTTPS 原理

HTTPS 详解 点击跳转
PS: 其中包含整个加密套件的工作流程讲解

TLS 原理

网络抓包原理

一. 什么是抓包?

在应用的开发调试中,查看软件实际运行时HTTP/HTTPS通信的请求数据和返回数据,从而分析问题的过程就叫做抓包。 通常我们说的抓包主要是分为两种:

  • 使用 Wireshark 抓取传输层的 TCP/UDP 通信包。
  • 使用 Fiddler 或 Charles 抓取应用层的 HTTP/HTTPS 通信包。

在大部分场景下,我们只是需要抓取应用层的HTTP/HTTPS数据包也就是第二种方式。

二. 抓包的原理

抓包的原理其实很简单,例如:PC上的Fiddler监听一个端口(port: 8888),在Android测试机上连接同一个局域网,配置网络代理,指向该PC的8888端口,这样一来测试机的所有网络通信都会被转发到PC的8888端口,进而被Fiddler捕获,然后就可以对数据包进行分析。经常用的网络协议分为HTTP和HTTPS,HTTPS在HTTP上进行了加密操作,所以对这两种请求进行抓包也有不同。

对HTTP请求进行抓包

对于HTTP协议,因为本身就是明文传输,所以可以直接看到数据报文,除非对这些明文在传输时进行二次加密,但那是另一种情况,这里暂不分析。

对HTTPS请求进行抓包

对于双向加密的HTTPS,正常情况下,即使能以中间人的方式拿到通信报文,但是因为没有密钥,同样也不能看到具体的传输内容。基于HTTPS加密通信的建立过程,和密钥交换方式,如果在加密通信建立之前,截取服务端发送的包含证书的报文,伪装成服务端,把自己的证书发给客户端,然后拿到客户端返回的包含对称加密通信密钥的报文,以服务端自己的公钥加密后发给服务端,这样一来,双向加密通信建立完成,而中间人实际拿到了通信的密钥,所以可以查看、修改HTTPS的通信报文,这就是典型的Man-in-the-middle attack即MITM中间人攻击

这样似乎看起来,HTTPS也不是那么安全,当然不能这么说了,实现MITM最关键的一点,是中间人要把服务端证书替换成自己的证书发给客户端,让客户端相信自己就是服务端,那么问题是,客户端为什么会信任而进行替换呢?

HTTPS之所以安全,是因为它用来建立加密通信的证书是由权威的CA机构签发的,受信的CA机构的根证书都会被内嵌在Windows, Linux, macOS, Android, iOS这些操作系统里,用来验证服务端发来的证书是否是由CA签发的。CA机构当然不可能随便给一个中间人签发不属于它的域名证书,那么只有一个很明显的办法了,把中间人的根证书,导入到客户端的操作系统里,以此来完成建立加密通信时对中间人证书的验证。

所以,在一定的情况下,HTTPS通信是可以被监听的,抓包的实现基础,是Android测试机导入Fiddler或者Charles的根证书。

无论是fidder和charles都是充当了一个中间人代理的角色来对HTTPS进行抓包:

  1. 截获客户端向发起的HTTPS请求,佯装客户端,向真实的服务器发起请求。
  2. 截获真实服务器的返回,佯装真实服务器,向客户端发送数据。
  3. 获取了用来加密服务器公钥的非对称秘钥和用来加密数据的对称秘钥。

如图:
在这里插入图片描述

三. Android设备抓包问题

Android6.0 及以下系统

直接安装证书后, 可以直接使用FIddler进行抓包。

Android7.0 及以上系统

在Android 7.0及以上的设备上测试时,发现又抓不到HTTPS了! 原因是:Google在Android 7.0时更改了App对操作系统本地证书的信任机制,在Android 7.0之前,默认信任系统预置证书和用户自导入证书,在Android 7.0(API 24)之后,为了保障App的通信安全,避免被第三方抓包做了些改动,App默认只信任系统预置证书,而不再信任用户自导入证书(把MITM的ssl证书,安装到 受信任的凭据 -> 用户)抓出来的https的请求,都是加了密的,无法看到原文了.解决的方式有如下几种:

  • 方式一: 修改App的AndroidManifest网络安全配置,信任用户自导入证书。
  • 方式二: Root测试机或自编译系统,把Fiddler根证书设置为系统预置证书。
  • 方式三: 在Android 7.0以下的测试机中抓包。
  • 方式四: targetSDK版本设置为24以下。
方式一:

如果是自己公司开发的应用那么在 Android 工程目录的 res 底下创建一个 xml 文件夹,然后在内部创建一个名为 “network_security_config.xml” 的文件。

  <network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" overridePins="true" />
            <certificates src="user" overridePins="true" />
        </trust-anchors>
    </base-config>
  </network-security-config>

在 AndroidManifest 里的标签中,添加代码:

android:networkSecurityConfig="@xml/network_security_config"

这种方式只适用于能自己修改源码的应用。

方式二

root手机;Root手机将用户下载的CA协议移动到系统信任的证书目录下。

非root手机可以VirtualXposed插件:

  • VirtualXposed 下载地址
  • JustTrustMe 下载地址

PS: 方式三和方式四用的比较少 • 略

借鉴:

  • 网络抓包原理及Fiddler的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/518031.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MPEG-1 详解

MPEG-1 详解 MPEG-1 详解特点MPEG-1 中的运动补偿与 B 帧的引入MPEG-1 vs H.261MPEG-1 视频数据流的结构MPEG-1 视频压缩模式MPEG-1 视频解码框图MPEG-1 音频编码模式MPEG-1 audio layer 1MPEG-1 audio layer 2MPEG-1 audio layer 3 MPEG-1 音频编码框图MPEG-1 音频解码框图参考…

基于matlab解决鸡兔同笼问题

一、什么是鸡兔同笼&#xff1f; 鸡兔同笼问题是一种经典的数学问题&#xff0c;最早出自于《孙子算经》&#xff0c;详细成书时间不详&#xff0c;但可以确定的是&#xff0c;它不早于汉代&#xff0c;不晚于南北朝时期[6]。这个问题在中国数学史上具有重要的意义&#xff0c…

WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)

前置教程&#xff1a;WEB漏洞挖掘&#xff08;SRC&#xff09;详细教程--信息收集篇-CSDN博客 WEB漏洞挖掘&#xff08;SRC&#xff09;详细教程--身份认证与业务一致性-CSDN博客 WEB漏洞挖掘&#xff08;SRC&#xff09;详细教程--业务数据篡改-CSDN博客 2.4 用户输入合规性…

RabbitMQ基于Java实现消息应答

RabbitMQ 概念 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递员最终会把你的快递送到收件人那里&#xff0c;按照这种逻辑RabbitMQ是一个快递站, 一个快递员帮你传递快件…

Golang Gin框架

1、这篇文章我们简要讨论一些Gin框架 主要是给大家一个基本概念 1、Gin主要是分为路由和中间件部分。 Gin底层使用的是net/http的逻辑&#xff0c;net/http主要是说&#xff0c;当来一个网络请求时&#xff0c;go func开启另一个协程去处理后续(类似epoll)。 然后主协程持续…

备战蓝桥杯---递归与DFS刷题2

1. 数据范围允许直接暴力把所有组合都写一遍&#xff0c;我们用Pair来存&#xff0c;在sort中分式比较只要把自己的分子与对方的分母乘比较即可&#xff0c;下面介绍一下st树的写法&#xff0c;具体原理就不说了&#xff0c;它是先[0/1,1/1]然后取分子分母的平均化成两个区间&a…

【C++】学习多态原理

目录 一、虚函数表二、多态原理三、关于动态绑定与静态绑定 一、虚函数表 先来看一段代码&#xff1a;sizeof(Base)是多少&#xff1f; class Base { public:virtual void Func1(){cout << "Func1()" << endl;} private:int _b 1; };int main() {cout…

【Linux】make 工具和 Makefile 文件的引入

前面提到了 gcc 编译器&#xff0c;那么使用 gcc 编译器肯定就会接触到 Makefile 。当源码文件比较多的时候就不适合通过直接输入 gcc 命令来编译&#xff0c;这时候就需要一个自动化的编译工具 make 。 举例&#xff1a;通过键盘输入两个整形数字&#xff0c;然后计算他们的和…

elasticSearch原理浅尝

终于等到你 马上就要放弃 开个玩笑 &#xff0c;进入正题 on fire 基础的咱不说了&#xff0c;一搜一麻袋 读 全文检索&#xff1a; 协调节点广播查询请求到相关分片 并 将其响应 整合 全局排序 返回结果集合 带路由&#xff1a;具体文档 shard hash(document_id) % (…

国外服务器托管需要了解哪些信息

国外服务器托管服务提供了一种在国外租用并管理服务器的方式&#xff0c;适用于需要特定地域服务或对本地法规有特殊要求的企业和个人。那么想要进行国外服务器托管需要了解哪些信息呢?Rak部落小编为您整理发布国外服务器托管相关内容。 以下是一些关于国外服务器托管服务的详…

YoloV8改进策略:BackBone改进|ELA

文章目录 摘要1、引言2、相关工作3、方法3.1、重新审视坐标注意力3.1.1、坐标注意力3.1.2、坐标注意力的不足 3.2、高效局部注意力3.3、多个ELA版本设置3.4、可视化3.5、实现 4、实验4.1、实验细节4.2、ImageNet上的图像分类4.3、目标检测4.4、语义分割 5、结论 摘要 https://…

如何搭建自己的百度网盘目录树搜索系统

许多做虚拟资源的小伙伴都有好几个百度网盘账号&#xff0c;大部分也都是扩容盘&#xff0c;但是扩容盘不能搜索&#xff0c;这个就很难受&#xff0c;不能让用户搜索自己的资源&#xff0c;这无意是是对成交概率是致命的&#xff0c;几百万条的数据&#xff0c;不能让用户一个…

【Java】jdk1.8 Java代理模式,Jdk动态代理讲解(非常详细,附带class文件)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 一、什么是代理模式 想要学代理模式&#xff0c;我们就要先弄清一个概念“什么是代理”&#xff1f; 在我们的现实生活中&#xff0c;你或许不少听过关于代理的名词&#xff0c;如&#xff1a;代理商。那什么又叫做代理…

Linux课程____LVM(逻辑卷管理器)

LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层&#xff0c;它提供了一个抽象的卷组&#xff0c;可以把多块硬盘进行卷组合并。 这样一来&#xff0c;用户不必关心物理硬盘设备的底层架构和布局&#xff0c;就可以实现对硬盘分区的动态调整。 动态调整磁盘容量&#xff…

设计模式——工厂模式01

工厂模式 定义&#xff1a;工厂模式是创建子类实例化对象的一种方式&#xff0c;屏蔽了创造工厂的内部细节。把创建对象与使用对象进行拆分&#xff0c;满足单一职责。如果需要向工厂中添加新商品&#xff0c; 只需要扩展子类再重写其工厂方法&#xff0c;满足开闭原则。 设计…

数据分析(三)线性回归模型实现

1. 惩罚线性回归模型概述 线性回归在实际应用时需要对普通最小二乘法进行一些修改。普通最小二乘法只在训练数据上最小化错误&#xff0c;难以顾及所有数据。 惩罚线性回归方法是一族用于克服最小二乘法&#xff08; OLS&#xff09;过拟合问题的方法。岭回归是惩罚线性回归的…

新型智慧城市大数据解决方案(附下载)

随着云计算、大数据、移动互联网等技术的发展&#xff0c;由城市运行产生的交通、环境、市政、商业等各领域数据量巨大&#xff0c;这些数据经过合理的分析挖掘可产生大量传统数据不能反映的城市运行信息&#xff0c;已成为智慧城市的重要资产。 在大数据时代&#xff0c;数据信…

Unity入门

Unity入门学习 知识概述&#xff1a; Unity环境搭建 1.Unity引擎是什么 2.软件下载安装 下载最新的长期支持版即可 3.新工程和工程文件夹 Unity界面基础 1.Scene场景和Hierachy层级窗口 练习&#xff1a; 2.Game游戏和Project工程 3.Inspector检查和Console控制台 练习&#…

【快速上手ESP32(基于ESP-IDFVSCode)】03-定时器

ESP32中的通用定时器 通用定时器是 ESP32 定时器组外设的驱动程序。ESP32 硬件定时器分辨率高&#xff0c;具有灵活的报警功能。定时器内部计数器达到特定目标数值的行为被称为定时器报警。定时器报警时将调用用户注册的不同定时器回调函数。 在ESP32-S3中&#xff0c;一共有…

HTML:框架

案例&#xff1a; <frameset cols"5%,*" ><frame src"left_frame.html"><frame src"right_frame.html"> </frameset> 一、<frameset>标签 <frameset>标签&#xff1a;称为框架标记&#xff0c;将一个HTML…