https抓包详细分析

席飞剑 席飞剑     2022-12-12     336

关键词:

专题二:实际抓包分析

本文对百度搜索进行了两次抓包,第一次抓包之前清理了浏览器的所有缓存;第二次抓包是在第一次抓包后的半分钟内。

百度在2015年已经完成了百度搜索的全站https,这在国内https发展中具有重大的意义(目前BAT三大家中,只有百度宣称自己完成了全站HTTPS)。所以这篇文章就以www.baidu.com为例进行分析。

同时,作者采用的是chrome浏览器,chrome支持SNI (server Name Indication) 特性,对于HTTPS性能优化有很大的用处。

注:SNI是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。一句话简述它的工作原理就是:在和服务器建立SSL连接之前,先发送要访问的域名(hostname),这样服务器根据这个域名返回一个合适的证书。目前,大多数操作系统和浏览器都已经很好地支持SNI扩展,OpenSSL 0.9.8已经内置这一功能,新版的nginx和apache也支持SNI扩展特性。

本文抓包访问的URL为:http://www.baidu.com/  

(如果是https://www.baidu.com/,则以下结果不一样!)

抓包结果:


可以看到,百度采用以下策略:

(1)对于高版本浏览器,如果支持 https,且加解密算法在TLS1.0 以上的,都将所有 http请求重定向到 https请求

(2)对于https请求,则不变。

【详细解析过程】

1、TCP三次握手


可以看到,我的电脑访问的是http://www.baidu.com/,在初次建立三次握手的时候, 客户端是去连接 8080端口的(我所在小区网络总出口做了一层总代理,因此,客户端实际和代理机做的三次握手,代理机再帮客户端去连接百度服务器)

2、tunnel建立

由于小区网关设置了代理访问,因此,在进行https访问的时候,客户端需要和代理机做"HTTPS CONNECT tunnel" 连接(关于"HTTPS CONNECT tunnel"连接,可以理解为:虽然后续的https请求都是代理机和百度服务器进行公私钥连接和对称密钥交换,以及数据通信;但是,有了隧道连接之后,可以认为客户端也在直接和百度服务器进行通信。)

fiddler抓包结果:


3、client hello


3.1 随机数

在客户端问候中,有四个字节以Unix时间格式记录了客户端的协调世界时间(UTC)。协调世界时间是从1970年1月1日开始到当前时刻所经历的秒数。在这个例子中,0x2516b84b就是协调世界时间。在他后面有28字节的随机数random_C,在后面的过程中我们会用到这个随机数。

3.2 SID(Session ID)

如果出于某种原因,对话中断,就需要重新握手。为了避免重新握手而造成的访问效率低下,这时候引入了session ID的概念, session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的“对称密钥”,而不必重新生成一把。

因为我们抓包的时候,是几个小时内第一次访问https://www.baodu.com ,因此,这里并没有Session ID.稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID)  

session ID是目前所有浏览器都支持的方法,但是它的缺点在于session ID往往只保留在一台服务器上。所以,如果客户端的请求发到另一台服务器(这是很有可能的,对于同一个域名,当流量很大的时候,往往后台有几十台RS机在提供服务),就无法恢复对话。session ticket就是为了解决这个问题而诞生的,目前只有Firefox和Chrome浏览器支持。

3.3 密文族(Cipher Suites)

RFC2246中建议了很多中组合,一般写法是"密钥交换算法-对称加密算法-哈希算法,以“TLS_RSA_WITH_AES_256_CBC_SHA”为例:

(a)TLS为协议,RSA为密钥交换的算法;

(b)AES_256_CBC是对称加密算法(其中256是密钥长度,CBC是分组方式);

(c)SHA是哈希的算法。

浏览器支持的加密算法一般会比较多,而服务端会根据自身的业务情况选择比较适合的加密组合发给客户端。(比如综合安全性以及速度、性能等因素)

3.4 Server_name扩展(一般浏览器也支持 SNI扩展)



当我们去访问一个站点时,一定是先通过DNS解析出站点对应的ip地址,通过ip地址来访问站点,由于很多时候一个ip地址是给很多的站点公用,因此如果没有server_name这个字段,server是无法给与客户端相应的数字证书的,Server_name扩展则允许服务器对浏览器的请求授予相对应的证书。

服务器回复

(包括Server Hello,Certificate,Certificate Status)

服务器在收到client hello后,会回复三个数据包,下面分别看一下:

4、Server Hello


4.1、我们得到了服务器的以Unix时间格式记录的UTC和28字节的随机数 (random_S)。

4.2、Seesion ID,服务端对于session ID一般会有三种选择  (稍会儿我们会看到隔了半分钟,第二次抓包就有这个Session ID):

(1)恢复的session ID:我们之前在client hello里面已经提到,如果client hello里面的session ID在服务端有缓存,服务端会尝试恢复这个session;

(2)新的session ID:这里又分两种情况,第一种是client hello里面的session ID是空值,此时服务端会给客户端一个新的session ID,第二种是client hello里面的session ID此服务器并没有找到对应的缓存,此时也会回一个新的session ID给客户端;

(3)NULL:服务端不希望此session被恢复,因此session ID为空。


查看详情

https请求流程分析

...交互的生活进行两次单独的握手操作即可。本人按照tls的抓包流程进行详细介绍对于每一步进行介绍.再上一个流程图,然后按照这个每一步进行讲解。本流程图按照wireshark抓包为准1.1ClientH 查看详情

https请求流程分析

...交互的生活进行两次单独的握手操作即可。本人按照tls的抓包流程进行详细介绍对于每一步进行介绍.再上一个流程图,然后按照这个每一步进行讲解。本流程图按照wireshark抓包为准1.1 查看详情

tcpdump抓包二进制tcp协议详细分析

1、tcpdump-ieth0port11751andsrchost192.168.1.34-x-s0 [plain] viewplain copy tcpdump: verbose output suppressed, use -v or -vv for full&n 查看详情

转:tcpdump抓包分析(强烈推荐)

评:示例详细,还有很不错的图解转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac718685382c0aa1cb5dbca45&scene=5&srcid=0527iHXDsFlkjBlkxHbM2S3E#rd转自:http://www. 查看详情

wireshark抓包工具的使用(代码片段)

...言1、Wireshark 开始页面2、Wireshark网络封包分析软件开始抓包示例3、Wireshark窗口介绍4、颜色区分Wireshark网络封包分析软件抓取到的不同网络协议5、过滤6、封包列表7、封包详细信息8、TCP包的具体内容结语前言①wireshark是非常流... 查看详情

fiddler抓包后怎么分析

参考技术Afd抓包如何分析,你b站搜索跟着新手学FD,里面特别详细的介绍分析,现在这些教程全是一些只教如何安装配置,没有实战 参考技术BFiddler绝对称得上是"抓包神器",Fiddler不但能截获各种浏览器发出的HTTP请求,也... 查看详情

wireshark怎么抓包

  wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。为了安全考虑,wireshark只能查看封包,而不能修... 查看详情

wireshark抓包过虑规则

wireshark抓包过虑规则简介Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料安装下载地址:https://www.wireshark.org/download.html规则描... 查看详情

爬虫实战12306购票抓包分析以及任务分解(代码片段)

12306购票抓包分析以及任务分解前言1.抓包分析1.1`https://www.12306.cn/index/`1.2`https://kyfw.12306.cn/otn/login/conf`1.3`https://kyfw.12306.cn/otn/index12306/getLoginBanner`1.4`https://kyfw.1 查看详情

c/c++编程知识:网络编程之https详细分析,超详细知识点!

...xff0c;无需花费额外的投入就可看到传输的数据。例如使用抓包工具,无需任何配置就可查看任何使用HTTP协议的通信数据;不验证通信方身份不验证通信方的身份,将导致通信过程被窃听后,可能会遭遇伪装,... 查看详情

wireshark使用详解

...e/details/79659388>wireshark常用选项与功能总结【10分钟成为抓包大师】来自<https://blog.csdn.net/lhorse003/article/details/71758019>wireshark使用抓包详细图文教程来自<https://blog.csdn.net/ch853199769/article/details/78753963> 查看详情

业余-抓包软件wireshark

首先,Windows电脑需要配置无线网卡 ConnectifyHotspot软件将电脑的无线网卡变身为共享无线路由器 Wireshark软件网络封包分析软件,撷取网络封包,并尽可能显示出最为详细的网络封包资料下载地址https://www.wireshark.org/download.h... 查看详情

wireshark怎么抓包wireshark抓包详细图文教程

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。为了安全考虑,wireshark只能查看封包,而不能修改封包的... 查看详情

工具-wireshark网络http抓包使用教程(代码片段)

目录WireShark抓包使用一、WireShark简介1、什么是WireShark?2、WireShark的用途二、WireShark的基础使用使用须知如何抓包方式一:服务器命令方式二:wireShark工具抓包如何根据抓取的包进行分析场景一:零窗口win=0场... 查看详情

fiddler抓包详细教程--查看get与post请求

参考技术A前言前面两篇关于Fiddler抓包的一些基本配置,配置完之后就可以抓到我们想要的数据了,接下来就是如何去分析这些数据。本篇以博客园的请求为例,简单分析get与post数据有何不一样,以后也能分辨出哪些是get,哪些... 查看详情

charles支持https抓包配置

...站点全部启用https后,使用charles就不能像以前那样愉快的抓包啦!不过没关系,这里教你怎么配置charles,使其支持https抓包。之前有一篇介绍charles的使用,参考这篇:http://www.cnblogs.com/zourong/p/4766577.html 原理分析HTTPS(HyperTextTr... 查看详情

fiddler抓包分析

在Fiddler的web session界面捕获到的HTTP请求如下图所示: 各字段的详细说明已经解释过,这里不再说明。需要注意的是#号列中的图标,每种图标代表不同的相应类型,具体的类型包括: 另外,注意请求的host字段。可以... 查看详情