🔥《吐血整理》進階系列教程 - 拿捏 Fiddler 抓包教程 (9)-Fiddler 如何設定捕獲 Https 會話

北京-宏哥發表於2024-12-12

1.簡介

由於近幾年來各大網站越來越注重安全性都改成了 https 協議,不像前十幾年前直接是 http 協議直接裸奔在網際網路。還有的小夥伴或者童鞋們按照上一篇宏哥的配置都配置好了,想大展身手抓一下百度的包,結果一試傻眼了,竟然毛都沒有抓到,懷疑是不是上了宏哥的當了。不是的哈,今天宏哥趁熱打鐵接著講解如何抓取 https 協議會話。

2.什麼是 HTTPS?

HTTPS 就是加過密的 HTTP。使用 HTTPS 後,瀏覽器客戶端和 Web 伺服器傳輸的資料是加密的,只有瀏覽器和伺服器端知道內容。

HTTPS = HTTP + TLS 或者 SSL。採用 HTTPS 的網站需要數字證書認證機構(Certificate Authority,CA)申請證書。

透過這個證書,瀏覽器在請求資料前與 Web 伺服器有幾次握手驗證,以證明相互的身份,然後對 HTTP 請求和響應進行加密。

3.HTTPS 協議傳輸的原理

HTTPS 協議傳輸的原理和過程簡圖如下所示:

4.Fiddler 捕獲 Http 協議會話

Fiddler 是一個很好的抓包工具,預設是抓 Http 協議請求的(經過上一篇的配置就可以成功捕獲),但是不會捕獲 Https 協議會話,需要你進一步配置才能抓取 Https 會話。如下圖所示:

5.Fiddler 抓取 HTTPS 原理

現在無論是網站還是 APP 中的資料傳輸基本上都使用 HTTS 傳輸,傳輸的資料都是經過加密的,這增加了我們分析資料包的難度,還好 Fiddler 除了可以抓取 HTTP 資料包,還可以抓取 HTTPS 資料包。由於 HTTPS 傳輸需要使用到 CA 證書,所以抓取抓取 HTTPS 資料包時需要做一些特殊配置。Fiddler 擷取 HTTPS 報文的流程大致如下:

上圖圖解說明:

1) 客戶端請求建立 HTTPS 連結,傳送客戶端支援的加密協議及版本列表等資訊給伺服器端。
2) Fiddler 接受客戶端請求並偽裝成客戶端向 WEB 伺服器傳送相同的請求。
3) WEB 伺服器收到 Fiddler 的請求以後,從請求中篩選合適的加密協議。並返回伺服器 CA 證書,證書中包括公鑰資訊。
4) Fiddler 收到 WEB 伺服器的響應後儲存伺服器證書並自簽名一個 CA 證書,偽裝成伺服器,把該證書下發給客戶端。
5) 客戶端驗證證書合法性。(Fiddler 能否抓取到 HTTPS 報文關鍵看這一步)。
6) 客戶端生產對稱金鑰,透過證書的公鑰加密傳送給伺服器。
7) Fiddler 攔截客戶端的請求以後,使用私鑰解密該報文,獲取對稱加密秘鑰,並使用伺服器證書中帶的公鑰加密該對稱金鑰傳送給 WEB 伺服器。此時對稱金鑰已經洩露了,以後可以使用該秘鑰介面客戶端和伺服器端傳輸的資料。
8) WEB 伺服器接收到客戶端傳送的加密的對稱金鑰後使用私鑰解密,並使用對稱金鑰加密測試資料傳給客戶端。
9) Fiddler 使用前面獲取的對稱金鑰解密報文。
10) 客戶端驗證資料無誤以後 HTTPS 連線就建立完成,客戶端開始向伺服器傳送使用對稱金鑰加密的業務資料。
11) Fiddler 使用前面獲取的對稱金鑰解密客戶端傳送的資料並重新加密轉發給客戶端。

6.Fiddler 捕獲 Https 協議會話

預設情況下,Fiddler 不會捕獲 HTTPS 請求,需要進行設定。

當瀏覽器訪問 HTTPS 網頁的時候,Fiddler 能捕獲到很多握手驗證的請求,比如用瀏覽器訪問:Https://www.baidu.com ,在 Fiddler 中就能抓到很多 “Tunnel to” 的請求,如下圖所示:

1.在沒有進一步配置之前用 Fiddler 抓包時候,分別用 FireFox 和 Chrome 瀏覽器開啟百度網頁:https://www.baidu.com 可以在會話皮膚看到百度資訊,但是進行檢視是 Fiddler 的監控皮膚出現黃色的告警 “Https decryption is disabled click to configure”(翻譯:https 解密被停用 ,點選配置)。至於 IE 瀏覽器,微軟已經官宣它已經要落幕退役,宏哥這裡就不做過多的介紹了。當然了 Firefox 瀏覽器有些版本也會有特殊情況需要你進一步配置,這個宏哥在後邊會做介紹的。如下圖所示:

從上圖中我們可以清楚地看到 Host 列中出現 Tunnel to...字樣”,總之以後如果會話列表中的 Host 列中出現 Tunnel to...字樣都說明是證書的問題, 這種就不能抓取到我們想要的會話。那麼要抓取 https 協議的會話需要開啟配置安裝證書才可以,畢竟目前很多網站都是 https 協議的, 所以在抓包之前,我們還要配置一下證書 否則無法抓包。那麼接下來跟隨宏哥看看 Fiddler 如何配置證書。

6.1Fiddler 證書配置

1.啟動 FIddler,然後在選單欄點選 Tools---->Options---->HTTPS 。如下圖所示:

2.依次勾選 “Capture HTTPS CONNECTs”(捕獲 HTTPS 連線)和勾選 “Decrypt HTTPS traffic”(解密 HTTPS 流量),然後會彈出一個對話方塊 直接點選 YES 即可。如下圖所示:

敲黑板!!!

你是第一次安裝的 Fiddler 那麼正常情況下會彈出證書安裝的相關提示。如果有的小夥伴或者童鞋們沒有彈出提示,你也不要著急上火和擔心,你可以點選 Actions---> Trust Root Certificate(信任根證書) 就會彈出一模一樣的證書安裝相關提示。如下圖所示:

3.點選 “Yes” 後,接下來彈出的對話方塊全部傻瓜式地點選 “是” 即可。如下圖所示:

4.彈出 “Added Fiddler's root certificate to the Machine Root list”(將 Fiddler 的證書新增到機器根目錄列表中) ,點選 “確定”。如下圖所示:

5.最後把下面的:“Ignore server certificate errors(unsafe)” 忽略伺服器證書錯誤(不安全)和 “check for certificate revocation ”(證書撤銷檢查) 這兩個選項也勾選上。如下圖所示:

到此證書也已經安裝到 Fiddler 上了。

6.2 檢視安裝到 Fiddler 的證書

6.2.1 方法一

1.我們可以點選 Actions 中選擇 Open Windows Certificate Manager 這一個選項, 開啟開啟 Windows 證書管理器去檢視。如下圖所示:

2.開啟開啟 Windows 證書管理器 之後點選選單欄上的 操作--->查詢證書然後輸入 Fiddler 就會查詢出證書了(如果沒有說明沒有安裝成功),如下圖所示:

3.證書名為 DO_NOT_TRUST_FiddlerRoot 大家可以對照著看看。如下圖所示:

6.2.2 方法二

1.WIN+R 開啟執行,輸入 certmgr.msc 回車,點選 “受信任的根證書頒發機構--->點選 “證書”。檢視,如下圖所示:

6.3 信任證書

證書安裝了之後 還要設定一下信任才行。具體操作步驟如下:

1.直接選擇 Tools--->Options---->HTTPS---->Actions--->Trust Root Certificate 。如下圖所示:

2.在接下來彈出的對話方塊中直接點選確定或 yes 就行了,如下圖所示:

好了到此為止,大功告成!現在如果不出意外的話就可以進行正常的抓取 HTTPS 包了。

敲黑板!!!

如果還是不行,那麼最好重置一下證書 在 Actions 中選擇 Reset All Certificates(重置所有證書) 然後點選確定刪除 Fiddler 所配置的證書,最後重新執行之前的步驟就可以了。

7.小結

今天宏哥主要簡單的講解和分享了 Fiddler 如何設定捕獲 Https 會話 ,後邊會一一展開進行詳細的分享和講解,好了時間不早了今天就到這裡,感謝大家耐心地閱讀!!!

會遇到的問題:

證書匯出失敗,出現如下提示:Unable to configure Windows to Trust the Fiddler Root.... 如下圖所示:

解決方案:

找到 fiddler->工具欄 tools->options,再選擇 HTTPS,點選 CertEnroll engine,選擇 MakeCert 即可點選 OK 儲存,最後切記重啟 fiddler!!!

8.擴充

我們在 Skip decryption 中輸入 ip 地址或者域名可以用來跳過該主機或域名的 https 資料抓取,這個也相當於一種過濾功能吧!如下圖所示:

相關文章