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
但是出於安全考慮,會話密鑰需要每隔一段時間就更換一次。