古詩詞大全網 - 個性簽名 - fiiddler如何捕獲https數據包

fiiddler如何捕獲https數據包

HTTPS-使用Fiddler捕獲HTTPS數據包的原理

最近基於Fiddler的錄音功能,嘗試捕捉處理了壹些界面。我遇到的壹個問題是,簡單地連接Fiddler只能捕獲HTTP協議,但關鍵的登錄請求和其他HTTPS協議沒有被捕獲。因此,讓Fiddler同時捕獲HTTPS和HTTP協議只是壹小步。關鍵是要理解HTTPS協議的原理和提琴手捕獲HTTPS協議的原理,然後才能更好的理解如何設置。本文主要由三部分組成。第壹部分通俗地簡要介紹了HTTPS原理。第二部分在第壹部分的基礎上介紹了Fiddler捕獲HTTPS協議的原理。最後,第三部分是如何設置小提琴手和手機來捕獲HTTPS協議。

首先,談談HTTPS

我們都知道HTTP不是壹種安全的傳輸方式,而基於SSL協議的HTTPS協議是相對安全的。目前,越來越多的企業選擇使用HTTPS協議與用戶溝通,如百度和谷歌。HTTPS要求客戶端(瀏覽器)和服務器(網站)在傳輸數據之前先握手,握手過程中將建立雙方的密碼信息。網上有很多資料,有些太晦澀難懂,尤其是壹些密碼學的知識。我做了壹個簡單的整理,排除了復雜的底層實現,從理解SSL協議的角度對HTTPS有了壹個宏觀的認識。總之,HTTPS通過壹種非對稱加密算法(如RSA算法)生成並交換協商密鑰,然後在後續的通信過程中使用協商密鑰進行對稱加密通信。HTTPS協議傳輸的原理和流程圖如下:

HTTPS協議的傳輸原理

壹個* * *有八個步驟,我們瞄準每壹步,具體看看發生了什麽:

第壹步:客戶端發起明文請求:向服務器發送壹組它支持的加密規則和壹個隨機數(Random_C)。

第二步,服務器初始響應:服務器根據其支持的加密規則,從客戶端發送的請求中選擇壹組加密算法和哈希算法,生成壹個隨機數,將其身份信息以證書(CA)的形式發送回瀏覽器。CA證書包含服務器地址、加密公鑰和證書頒發機構等信息。此時,服務器向客戶端提供選定的加密規則、CA證書和壹個隨機數(Random_S)。

步驟3,客戶端在收到服務器的初始響應後做四件事:

(1)證書驗證:驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網址是否與被訪問的地址壹致等。).

(2)密碼生成:瀏覽器會生成壹串隨機密碼(Pre_master)並用CA證書(enc_pre_master)中的公鑰加密後傳輸給服務器。

(3)計算協商密鑰:

此時客戶端已經獲得了計算協商密鑰所需的全部信息:兩個明文隨機數Random_C和Random_S以及自己計算生成的Pre-master,並計算出了協商密鑰enc_key。

enc_key=Fuc(random_C,random_S,Pre-Master)

(4)生成握手信息:用約定的哈希計算握手消息,用協商密鑰enc_key和約定的算法加密消息。

步驟4,客戶端將步驟3中生成的數據發送給服務器:

這裏有三段數據要發送:

(1)用公鑰加密的服務器隨機數密碼enc_pre_master。

(2)客戶端發給服務器的通知上寫著“以後我們都用約定的算法和協商好的密鑰進行通信。”。

(3)客戶端加密生成的握手信息。

第五步,服務器要做以下四件事來接收客戶端發來的數據:(1)私鑰解密:用自己的私鑰解密,從接收到的enc_pre_master中取出密碼Pre_master。

(2)協商密鑰的計算:此時服務器已經獲得了計算協商密鑰所需的全部信息:兩個明文隨機數Random_C和Random_S,以及Pre-master,並計算出協商密鑰enc_key。

enc_key=Fuc(random_C,random_S,Pre-Master)

(3)解密握手消息:使用協商密鑰enc_key對客戶端發送的握手消息進行解密,驗證HASH是否與客戶端發送的壹致。

(4)生成握手消息,使用協商密鑰enc_key和約定的算法對握手消息進行加密,並發送給客戶端。

步驟6,服務器將步驟5中生成的數據發送給客戶端:

這裏有兩種數據要發送:

(1)服務器發送給客戶端的通知,“聽妳的,以後我們用約定的算法和協商密鑰溝通”。

(2)服務器對生成的握手信息進行加密。

第七步,客戶端獲取握手信息並解密,握手結束。

客戶端解密並計算握手消息的哈希。如果與服務器發送的散列壹致,握手過程結束。

第八步,正常加密通信。

握手成功後,所有通信數據都將通過之前協商的密鑰enc_key和約定的算法進行加密和解密。

在這裏,客戶端和服務器互相發送加密的握手消息並驗證它們。目的是保證雙方得到壹致的密碼,並能正常加密和解密數據,為後續真實數據的傳輸做壹個測試。另外,HTTPS常用的加密和哈希算法有:非對稱加密算法:RSA、DSA/DSS對稱加密算法:AES、RC4、3DESHASH算法:MD5、SHA1、SHA256,其中非對稱加密算法用於加密握手時生成的密碼,對稱加密算法用於加密真實傳輸的數據,哈希算法用於驗證數據的完整性。由於瀏覽器生成的密碼是整個數據加密的關鍵,因此在傳輸過程中采用非對稱加密算法對其進行加密。非對稱加密算法將生成壹個公鑰和壹個私鑰。公鑰只能用來加密數據,所以可以隨意傳輸,而服務器的私鑰是用來解密數據的,所以服務器會保管好自己的私鑰,防止泄露。

第二,Fiddler抓住HTTPS協議的原理

眾所周知,Fiddler是壹個很好的代理工具,可以捕獲協議請求進行調試。Fiddler捕獲HTTP協議的原理和配置都比較簡單。稍微配置壹下Fiddler和客戶端,Fiddler就可以輕松獲得HTTP請求。但是由於HTTPS協議的特殊性,為了進壹步配置fiddler,我們必須先了解fiddler捕獲HTTPS協議的原理,才能更好的理解如何配置Fiddler。Fiddler本身就是壹個協議代理工具。在上壹節的HTTPS示意圖上,客戶端和服務器之間的所有通信過程都是由Fiddler獲取的,如下圖所示:

Fiddler捕獲HTTPS協議的示意圖

我們看到Fiddler主要通過以下幾個步驟攫取了HTTPS協議:

第壹步,Fiddler攔截客戶端向服務器發送的HTTPS請求,Fiddler偽裝成客戶端向服務器發送握手請求。

第二步,服務器發回對應,Fiddler獲取服務器的CA證書,用根證書公鑰解密,驗證服務器的數據簽名,獲取服務器的CA證書公鑰。然後Fiddler偽造了自己的CA證書,作為服務器證書傳給客戶端瀏覽器。

第三步與普通流程中客戶端的操作相同。客戶端根據返回的數據檢查證書,生成密碼Pre_master,用Fiddler偽造的證書公鑰加密,生成HTTPS通信的對稱密鑰enc_key。

第四步,客戶端向服務器發送重要信息,被Fiddler截獲。Fiddler用其偽造證書的私鑰解密截獲的密文,獲得並計算出HTTPS通信的對稱密鑰enc_key。Fiddler通過使用服務器證書的公鑰對對稱密鑰進行加密,將對稱密鑰傳輸到服務器。

第五步與普通流程中服務器的操作相同。服務器使用私鑰解鎖並建立信任,然後將加密的握手消息發送給客戶端。

第六步:Fiddler截取服務器發來的密文,用對稱密鑰解密,然後用其偽造證書的私鑰加密並發送給客戶端。

第七步,客戶端得到加密信息後,用公鑰解密,驗證哈希。當握手過程正式完成時,客戶機和服務器之間的“信任”就建立了。

Fiddler如何在正常的加密通信過程中充當服務器和客戶端之間的第三方?

服務器->客戶端:Fiddler接收服務器發送的密文,用對稱密鑰解密,得到服務器發送的明文。再次加密並發送給客戶端。

客戶端->服務器:客戶端用對稱密鑰加密,Fiddler截取,解密得到明文。再次加密並發送給服務器。因為Fiddler總是擁有用於通信的對稱密鑰enc_key,所以在整個HTTPS通信過程中,信息對它是透明的。

從上面可以看出,Fiddler成功捕獲HTTPS協議的關鍵是根證書(具體可以是Google),它是壹個信任鏈的起點,也是Fiddler偽造的CA證書獲得客戶端和服務器信任的關鍵。

接下來,讓我們看看如何設置Fiddler來獲取HTTPS協議。

第三,Fiddler抓住了HTTPS的背景

註意以下操作的前提是手機已經可以連接Fiddler,所以這部分的配置過程比較簡單,我就不贅述了。請參考:如何連接手機與提琴手。

如何繼續為Fiddler配置捕獲HTTPS協議?

(1)首先設置提琴手:打開工具欄->;工具-& gt;Fiddler選項-& gt;HTTPS

設置小提琴手。

選擇Capture HTTPS連接,因為我們希望使用Fiddler來獲取手機客戶端發送的HTTPS請求,所以在中間的下拉菜單中選擇僅從遠程客戶端。選中下面的忽略服務器證書錯誤。

(2)然後,在手機上安裝提琴手證書。

這壹步也是獲取我們上面分析的HTTPS請求的關鍵。

操作步驟簡單。打開手機瀏覽器,在瀏覽器地址輸入代理服務器的IP和端口,就會看到Fiddler提供的壹個頁面。

然後點擊底部的FiddlerRoot證書。此時,單擊確定安裝並下載Fiddler證書。

下載安裝完成後,我們用手機客戶端或者瀏覽器發送壹個HTTPS請求,Fiddler可以攔截,就像攔截壹個普通的HTTP請求壹樣。

以上是對HTTPS以及Fiddler如何獲得HTTPS協議的原理和配置的簡單介紹。我們可以看到Fiddler統壹攔截HTTP和復雜的HTTPS協議。