WireShark抓取QQ邮箱

爱⌒轻易说出口 提交于 2019-12-06 02:22:46

WireShark抓取QQ邮箱

实验环境:MacOS + WireShark

1.QQ邮箱是网址是基于HTTPS协议的

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)能够加密信息,由HTTP+TLS/SSL组成,在原本的HTTP协议上增加了一层加密信息模块,服务端和客户端的信息传输都要经过TLS进行加密,所以传输的数据都是加密后的数据。

2.TLS/SSL 简介

在这里插入图片描述
握手过程:

  • 1.初始化阶段。客户端创建随机数,发送ClientHello 将随机数连同自己支持的协议版本、加密算法发送给服务器。服务器回复ServerHello将自己生成的随机数连同选择的协议版本、加密算法给客户端。
  • 2.认证阶段。服务器发送ServerHello的同时可能将包含自己公钥的证书发送给客户端(Certificate),并请求客户端的证书(Certificate Request)。
  • 3.密钥协商阶段。客户端验证证书,如果收到Certificate Request则发送包含自己公钥的证书,同时对此前所有握手消息进行散列运算,并使用加密算法进行加密发送给服务器。同时,创建随机数pre-master-secret并使用服务器公钥进行加密发送。服务器收到这个ClientKeyExchange之后解密得到pre-master-secret。服务器和客户端利用第一阶段的随机数,能够计算得出master-secret。
  • 4.握手终止。服务器和客户端分别通过ChangeCipherSpec消息使用master-secret对连接进行加密和解密,以及向对方发送终止消息(Finished)。

3.WireShark抓包

首先先确定自己的IP:
在这里插入图片描述
接下来进行抓包。并使用ssl进行过滤。
在这里插入图片描述
在这里插入图片描述

4.对于抓到的重要的包进行分析:

1.Client Hello

在这里插入图片描述
TLS握手过程的第一步就是客户端发起请求,主要包括了客户端生成的随机字符串(session key),还包含了客户端所支持所支持的加密套件列表、随机数等信息。
在这里插入图片描述

2.Server Hello

在这里插入图片描述
服务器收到客户端的Client Hello数据包之后,根据客户端发来的加密套件列表,选择一个加密套件,也生成一个随机字符串返回给客户端。密钥交换算法选择的是使用ECDHE_RSA,对称加密算法使用AES_128_GCM_SHA256:
在这里插入图片描述

3.Certificate & Server Key Exchange & Server Hello Done

在这里插入图片描述
服务器把certificate发给客户端。
在这里插入图片描述
服务器返回Server Key Exchange数据包,用于和客户端交换用于数据加密的密钥,Server Hello Done用于通知客户端已经发送用于密钥交换的数据等待客户端响应。
在这里插入图片描述

4.Client Key Change & Change Cipher Spec & Encrypted HandShake Message

在这里插入图片描述
客户端根据服务器返回的DH数据生成DH数据发给服务器,用来生成最终的pre-master-secret。如图:
在这里插入图片描述

5.Application Data

在这里插入图片描述

6.New Session Ticket&Change Cipher Spec & Encrypted HandShake Message

在这里插入图片描述
每隔一段时间就要更新一次会话密钥

5.总结

在登录QQ邮箱的过程中采用了加密算法来加密这个过程,分别是:
密钥交换算法选择的是使用ECDHE_RSA
对称加密算法使用AES_128_GCM_SHA256
但是出于安全考虑,会话密钥需要每隔一段时间就更换一次。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!