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


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請求了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM