『言善信』Fiddler工具 — 15、使用Fiddler抓取HTTPS請求

繁華似錦Fighting發表於2021-06-21

1、Fiddler抓取HTTPS過程

  • 第一步:Fiddler截獲客戶端傳送給伺服器的HTTPS請求,Fiddler偽裝成客戶端向伺服器傳送請求進行握手 。
  • 第二步:伺服器發回相應,Fiddler獲取到伺服器的CA證書, 用根證書(這裡的根證書是CA認證中心給自己頒發的證書)公鑰進行解密, 驗證伺服器資料簽名, 獲取到伺服器CA證書公鑰
    然後Fiddler偽造自己的CA證書(這裡的CA證書,也是根證書,只不過是Fiddler偽造的根證書), 冒充伺服器證書傳遞給客戶端瀏覽器。(也就伺服器發給客戶端的證書被Fiddler留下了,偽造了一個證書發給客戶端)
  • 第三步:與普通過程中客戶端的操作相同,客戶端根據返回的資料進行證書校驗、生成密碼Pre_master、用Fiddler偽造的證書公鑰加密,並生成HTTPS通訊用的對稱金鑰enc_key
  • 第四步:客戶端將重要資訊傳遞給伺服器,又被Fiddler截獲。
    Fiddler將截獲的密文用自己偽造證書的私鑰解開,獲得並計算得到HTTPS通訊用的對稱金鑰enc_key
    Fiddler將對稱金鑰用伺服器證書公鑰加密傳遞給伺服器。
  • 第五步:與普通過程中伺服器端的操作相同,伺服器用私鑰解開後建立信任,然後再傳送加密的握手訊息給客戶端。
  • 第六步:Fiddler截獲伺服器傳送的密文,用對稱金鑰解開,再用自己偽造證書的私鑰加密傳給客戶端。
  • 第七步:客戶端拿到加密資訊後,用公鑰解開,驗證HASH。握手過程正式完成,客戶端與伺服器端就這樣建立了”信任“。

2、擴充:SSL/TLS證書握手原理

普及下SSL/TLS證書握手原理,SSL/TLS證書分為單向認證和雙向認證,通過下面的兩張圖可以簡單的瞭解一下原理。

單向認證:

image

雙向認證:

image

3、Fiddler抓取HTTPS原理總結

Fiddler在之後的正常加密通訊過程中,如何在伺服器與客戶端之間充當第三者呢?

伺服器—>客戶端:Fiddler接收到伺服器傳送的密文,用對稱金鑰解開,獲得伺服器傳送的明文。再次加密,傳送給客戶端。

客戶端—>服務端:客戶端用對稱金鑰加密,被Fiddler截獲後,解密獲得明文。再次加密,傳送給伺服器端。由於Fiddler一直擁有通訊用對稱金鑰enc_key, 所以在整個HTTPS通訊過程中,資訊對其透明。

4、Fiddler抓取HTTPS設定

因為Fiddler是一個HTTP代理服務,它位於客戶端和伺服器端之間,而安裝好Fiddler的只可以對HTTP協議進行抓包。

如果需要對HTTPS的協議進行抓包分析,就需要對Fiddler工具進行配置,使得Fiddler工具也可以抓到HTTPS協議的包。

如果沒有進行任何的配置就想用Fiddler來抓包分析是實現不了的,即使抓出來也是看不懂的加密內容。因為沒有受信任的Fiddler根證書,不能讓客戶端相信Fiddler偽造的CA證書,從而得到Pre_master

步驟1:配置證書

Tools選單 —> Options... —> HTTPS —> 勾選Decrypt HTTPS traffic

如下圖:

image

說明

勾選Decrypt HTTPS traffic選項:意思是解密HTTPS流量(請求)。

然後會彈出一個對話方塊,如下圖:

image

意思是:為了能夠攔截HITTPS通訊,Fiddler生成了唯一的根證書。您可以將Windows配置為信任此根證書,以禁止顯示安全警告。單擊“是”以重新配置Windows的受信任CA列表。

然後接著彈出對話方塊如下:點選是,確認安裝此證書。

image

是否確認將證書新增到計算機根目錄列表?點選是。

image

最後提示:成功將Fiddler的根證書新增到計算機根列表中。

image

步驟2:勾選設定

當勾選Decrypt HTTPS traffic選項的時候,會提示你安裝證書,安裝好證書之後,HTTPS選項介面如下:

image

我們在繼續勾選Ignore server certificate errors (unsafe)選項:忽略伺服器證書錯誤(不安全)。

之後點選OK就可以抓取HTTPS的請求了(我試過了不需要重啟)。

5、檢視證書是否安裝成功

方式一

點選Tools選單 —> Options... —> HTTPS —> Actions

選擇第三項:Open Windows Certificate Manager開啟Windows證書管理器。

image

開啟Windows證書管理器,選擇操作—>檢視證書,在搜尋框中輸入Fiddler來檢視證書。

image

檢視結果:

image

然後可以選擇一個證書,進行開啟、刪除、匯出等操作。

方式二

WIN+R開啟電腦命令提示符,輸入certmgr.msc並回車,開啟Windows證書管理器。

image

然後選擇操作 —> 檢視證書,之後的步驟同上。

6、HTTPS選項介面說明

HTTPS選項介面如下:

image

詳細說明

  • Fiddler can decrypt HITTPS sessions by re-signing traffic using self-generated certificates.
    Fiddler可以使用自行生成的證書對流量進行重新簽名,從而對HITTPS會話進行解密。
  • Capture HTTPS CONNECTs:建立HTTPS連線通訊。
    這個就是我們之前常看到有tunnel to...443請求的原因,他是HTTPS建立通訊時候所發出的請求。
    我們使用Rules選單 —> Hide CONNECTs操作,把這些請求隱藏了。
  • Decrypt HTTPS traffic:解密HTTPS請求。
  • 下拉選單
    from all processes : 抓取所有的HTTPS程式, 包括本機和手機 。
    from browsers only : 只抓取瀏覽器中的HTTPS請求。
    from non-browsers only : 只抓取除了瀏覽器之外的所有HTTPS請求。
    from remote clients only : 抓取遠端的客戶端的HTTPS,可以代表手機。
  • Ignore server certificate errors (unsafe):忽略伺服器證書錯誤(不安全)
    一般勾選上。
  • check for certificate reyocation:檢查證書吊銷。
  • Certificates generated by CertEnroll engine:由CertEnroll引擎生成的證書。
  • Skip decryption for the following hosts:跳過以下主機的解密。
  • Actions
    • Trust Root Certificate:信任根證書。
    • Export Root Certificate to Desktop:將根證書匯出到桌面。
    • Open Windows Certificate Manager:開啟Windows證書管理器。
    • Learn More about HTTPS Decryption:瞭解有關HTTPS解密的更多資訊。
    • Remove Interception Certificates:刪除攔截證書。
    • Reset All Certificates:重置所有證書。

7、無法抓取HTTPS請求

我們在完成上面Fiddler配置後,還是無法抓取HTTPS請求。

我們可以點選Tools選單 —> Options... —> HTTPS —> Actions

選擇最後一個選項Reset All Certificates:重置所有證書。

提示:Fiddler將刪除所有攔截證書,並重新建立新的根證書以用於解密流量。

選擇確定。

image

確定是否刪除證書:選擇是。

image

提示:Fiddler生成的證書已從“當前使用者”儲存中刪除。

image

點選確定。之後Fiddler會自動彈出證書的安裝,同上面第4點的步驟一。

如果還不行,可以再點選第一個選項Trust Root Certificate:信任根證書。

之後會安裝一些Fiddler的相關證書,這樣基本上可以解決Fiddler無法抓取HTTPS請求的情況。

8、Firefox瀏覽器中捕獲HTTPS請求

Google瀏覽器和IE瀏覽器預設使用的網路代理是系統代理,當Fiddler開啟後,會自動替換掉系統代理,這樣Google瀏覽器和IE瀏覽器自動就可以抓取到HTTPS的請求。

Firefox瀏覽器與其它瀏覽器有所不同,它預設不使用系統代理,該瀏覽器需要自己設定代理和安裝證書,Fiddler才可以抓到HTTPS。

(1)檢視Firefox瀏覽器的網路代理

選擇Firefox右上角三條橫線 —> 選項 —> 網路設定(版本不同位置不同,有的在高階裡,有的在常規裡)

點選“設定”,出現如下介面:

image

提示:新版本預設選擇使用系統代理設定,舊版本自己檢視一下,不是的話修改一下。

這樣的話,我們就可以進行HTTP請求的抓取了。(注意不是HTTPS請求)

我們也可以進行手動代理配置,要配置成Fiddler一樣的地址和埠(請看Fiddler中Connections選項中的配置)

image

(2)配置Firefox瀏覽器的Fiddler證書

我們可以先通過Fiddler配置好抓取Google瀏覽器HTTPS請求,這樣的話Fiddler證書已經安裝在本機電腦中了。

新版本的Firefox瀏覽器,當我們開啟瀏覽器的時候,Firefox會自動彈出頁面,需要確認Fiddler證書。

我們點選高階,選擇信任該證書即可。

image

現在我們就可以使用Fiddler抓取Firefox瀏覽器的HTTPS請求了。

補充:如果是舊版本的Firefox瀏覽器。

步驟1:我們需要點選Tools選單 —> Options... —> HTTPS —> Actions

步驟2:選擇第二項Export Root Certificate to Desktop:將根證書匯出到桌面。

步驟3:然後選擇Firefox右上角三條橫線 —> 選項 —> 證書(版本不同位置不同,有的在高階裡,有的在隱私與安全裡)

步驟4:點選“檢視證書”,點選匯入證書,如下圖:

image

步驟5:選擇並開啟檔案後,會彈出個框,勾選三個選項,點選確定,完成配置。

image

步驟6:可以抓取Firefox瀏覽器發出的HTTPS請求了。如果不行重啟Firefox瀏覽器和Fiddler試試。

9、總結:

無論什麼瀏覽器,需要抓取HTTPS請求,都需要確保:

  • 確保瀏覽器使用網路是系統代理(主要就是把系統代理替換成Fiddler代理)。
  • 確保正確安裝好Fiddler證書。

這樣Fiddler就可以抓取到任何瀏覽器傳送的HTTPS請求了。

相關文章