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
但是出于安全考虑,会话密钥需要每隔一段时间就更换一次。