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进行过滤。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191129113906694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjE5NTMyNjAy,size_16,color_FFFFFF,t_70)
4.对于抓到的重要的包进行分析:
1.Client Hello
TLS握手过程的第一步就是客户端发起请求,主要包括了客户端生成的随机字符串(session key),还包含了客户端所支持所支持的加密套件列表、随机数等信息。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191129114023534.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjE5NTMyNjAy,size_16,color_FFFFFF,t_70)
2.Server Hello
服务器收到客户端的Client Hello数据包之后,根据客户端发来的加密套件列表,选择一个加密套件,也生成一个随机字符串返回给客户端。密钥交换算法选择的是使用ECDHE_RSA,对称加密算法使用AES_128_GCM_SHA256: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191129114044523.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjE5NTMyNjAy,size_16,color_FFFFFF,t_70)
3.Certificate & Server Key Exchange & Server Hello Done
服务器把certificate发给客户端。 服务器返回Server Key Exchange数据包,用于和客户端交换用于数据加密的密钥,Server Hello Done用于通知客户端已经发送用于密钥交换的数据等待客户端响应。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191129114104397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjE5NTMyNjAy,size_16,color_FFFFFF,t_70)
4.Client Key Change & Change Cipher Spec & Encrypted HandShake Message
客户端根据服务器返回的DH数据生成DH数据发给服务器,用来生成最终的pre-master-secret。如图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191129114115504.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjE5NTMyNjAy,size_16,color_FFFFFF,t_70)
5.Application Data
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191129114122433.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMjE5NTMyNjAy,size_16,color_FFFFFF,t_70)
6.New Session Ticket&Change Cipher Spec & Encrypted HandShake Message
每隔一段时间就要更新一次会话密钥
5.总结
在登录QQ邮箱的过程中采用了加密算法来加密这个过程,分别是: 密钥交换算法选择的是使用ECDHE_RSA 对称加密算法使用AES_128_GCM_SHA256 但是出于安全考虑,会话密钥需要每隔一段时间就更换一次。
|