1. 程式人生 > >Wireshark入門與進階系列十一之SSL分析

Wireshark入門與進階系列十一之SSL分析

0x00 前言
    Wireshark(前稱Ethereal)中文版是一個網路封包分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網絡卡進行資料報文交換。本文著重分析wireshark捕獲SSL協議及其對SSL協議的故障分析。

0x01 基本的密碼學

1 保密性

      【加密和解密】、訊息完整性【資訊摘要和訊息簽名】、端點身份驗證和認可【證書和認證機構】

2 對稱加密

        加密和解密的金鑰相同、Computatively低消耗、短金鑰(通常為40-256位元)DES,3DES,AESxxx,RC4

3 非對稱加密

        加密是一個金鑰,解密是另外第二個金鑰(兩鍵來源於一對)、相比較“高消耗”、長金鑰(通常為512-4096位)RSA,DSA

4 訊息摘要

         不可逆【從摘要中不能復原文】
         抗碰撞【不可能建立一個訊息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資訊(包括一個內容型別)允許
SSL記錄可以被分割在多個TCP段(2 ^14> MSS!)
一個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伺服器證書


========================================================================================

========================================================================================

========================================================================================

0x09參考資料

歡迎大家分享更好的思路,熱切期待^^_^^ !