Wireshark入門與進階系列十一之SSL分析
阿新 • • 發佈:2019-01-02
0x00 前言
Wireshark(前稱Ethereal)中文版是一個網路封包分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網絡卡進行資料報文交換。本文著重分析wireshark捕獲SSL協議及其對SSL協議的故障分析。
0x01 基本的密碼學
1 保密性
【加密和解密】、訊息完整性【資訊摘要和訊息簽名】、端點身份驗證和認可【證書和認證機構】2 對稱加密
加密和解密的金鑰相同、Computatively低消耗、短金鑰(通常為40-256位元)DES,3DES,AESxxx,RC43 非對稱加密
加密是一個金鑰,解密是另外第二個金鑰(兩鍵來源於一對)、相比較“高消耗”、長金鑰(通常為512-4096位)RSA,DSA4 訊息摘要
不可逆【從摘要中不能復原文】抗碰撞【不可能建立一個訊息M',使其具有相同摘要的訊息M,MD5,SHA-1,SHA-2】
5 訊息簽名
用私鑰認證來新建資訊摘要,訊息的傳送者可以用公鑰進行檢查真實性6 數字證書
以加密法,公開金鑰證書(或身份證明)是一種利用與身份的公共金鑰繫結在一起的數字簽名的電子文件。7 證書頒發機構
互相信任的傳送者和接收者“解決了”金鑰交換問題、CA之間能夠連結、頂鏈是“自簽名”(它稱為“根CA”)0x01 SSL知識
1 SSL歷史
SSLv1 by Netscape (unreleased, 1994)SSLv2 by Netscape (v2-draft,1994)
SSLv3 by Netscape (v3-draft, 1995)
TLSv1.0, IETF (RFC 2246, 1999)
TLSv1.1, IETF (RFC 4346, 2006)
TLSv1.2, IETF (RFC 5246, 2008)
2TCP/IP堆中位置
在傳輸層和應用層之間、介於HTTP和TCP之間,SSL協議獨立處於一個層段,不依賴上下層協議。3 SSL記錄層
提供分片(最大尺寸為2 ^14)每個SSL記錄多個SSL資訊(包括一個內容型別)允許
一個TCP段可以包含多個SSL記錄(或片段)
4 SSL內容型別
握手協議(0x16)---負責認證和金鑰設定ChangeCipherSpec協議(0×14)----通知加密開始
警報協議(為0x15)---警示和致命錯誤的報告
應用協議(0x17已)---資料的實際的加密和傳輸
0x02 分析SSL記錄層
為了更好地過濾SSL協議的資訊並且同時排除其他協議對本次本次分析的影響,我們可以提前設定一下顯示過濾設定,詳細設定引數如下:ip.defragment: TRUE
tcp.check_checksum: FALSE
tcp.desegment_tcp_streams: TRUE
ssl.desegment_ssl_records: TRUE
ssl.desegment_ssl_application_data: TRUE
我們從wireshark的截圖中,通過分析,可以檢視SSL記錄層的狀態,長度,加密等,如下圖1 是建立SSL協議前,客戶端傳送了請求包,進行握手協商。
圖2.1.1 客戶端hello包
圖2.1.2 服務端hello包
圖2.1.3 證書傳輸
0x03 常規的RSA handshake
下圖為SSL中RSA handshake建立連線的整個過程,其中客戶端和服務端之間共經過9個流程來建立一個SSL連線,連線成功後,才開始傳送資料。1=====客戶端傳送clienthello=================================================================
2===伺服器傳送serverhello包迴應=============================================================
3===服務端傳送證書====================================================================
4====服務端證書認證完成===================================================================
5===客戶端祕鑰交換========================================================================
6====交換客戶端加密套件===================================================================
7====客戶端完成加密套件加密================================================================
8====服務端交換加密套件===================================================================
9====服務端交換祕鑰套件完成================================================================
############################################################################################
0x04短暫RSA (or DH) handshake
下圖顯示整個加密過程,明顯可以看到整個流程比RSA多了一個服務端祕鑰交換過程。===在0x02中的第3,4之間多了一個【ServerKeyExchange】的過程=====================================
0x05 Client Authentication
====伺服器請求客戶端證書==================================================================
=====客戶端傳送自己的證書=================================================================
=====確認證書============================================================================
========================================================================================
0x06 快取SSL 會話
金鑰協6商消耗大TCP會話之間的快取SSL會話可以從停留的地方繼續進行
SSL會話ID作為索引使用
SSL會話的ID超時是一個“絕對超時”,也不是一個“空閒超時”
舊老IE:預設是2分鐘,現在10小時
========================================================================================
========================================================================================
========================================================================================
========================================================================================
0x07 解密 SSL 流量
提供伺服器的私鑰給wireshark;僅在追蹤檔案時,僅對完整的會話或者握手有效;在EphemeralRSA or DH ciphers無法起到作用(因為金鑰交換);在客戶端認證的情況,也能起效。要實現這個效果,首先要設定SSL的金鑰和日誌等檔案,。
操作方法:主介面--【編輯】--【首選項】--【協議】--【SSL】-->>
========================================================================================
========================================================================================
=======================================================================================
========================================================================================
========================================================================================
========================================================================================
========================================================================================
==========
========================================================================================
解密過程中,由於各種因素,難免出現各種問題,所以這時候要檢查 SSL 除錯日誌和 核實證書的一致性,例如伺服器證書是否變動,是否更改,是否和wireshark配置的是同一個證書。
0x08 常見SSL 連線問題
1 安全連線失敗
2 無共同金鑰
3 客戶端無法驗證服務端的證書
4 證書過期
5 時間不對稱
6 虛假網站
========================================================================================
7伺服器證書
========================================================================================
========================================================================================
========================================================================================