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

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瀏覽器打開百度網頁://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數據抓取,這個也相當於一種過濾功能吧!如下圖所示:

Tags: