《爆肝整理》保姆級系列教學-玩轉Charles抓包神器教學(5)-Charles如何設定捕獲Https對談

2023-02-01 15:00:18

1.簡介

 在巨量資料時代,網際網路時代,個人資訊保安尤為重要,網路安全在近日多起電信詐騙事情發酵下的情況下,引起國家,企業,個人對於網際網路安全進一步的重視。而之前很多以http協定傳輸的網站出現的網站資訊洩露,個人資訊裸露在巨量資料的泳池中,讓我們在遇到一個陌生網站的時候,都會格外考慮其安全性。通過認證SSL證書的以https加密協定存取網站比沒有加密的http協定存取網站要安全的多。由於近幾年來各大網站越來越注重安全性都改成了https協定,不像前十幾年前直接是http協定直接裸奔在網際網路。還有的小夥伴或者童鞋們按照上一篇宏哥的設定都設定好了,想大展身手抓一下百度的包,結果一試傻眼了,竟然毛都沒有抓到,懷疑是不是上了宏哥的當了。不是的哈,今天宏哥趁熱打鐵接著講解如何抓取https協定對談。 

2.HTTP

HTTP:是網際網路上應用最為廣泛的一種網路協定,是一個使用者端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協定,它可以使瀏覽器更加高效,使網路傳輸減少.

3.HTTPS

HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

HTTPS協定的主要作用可以分為兩種:一種是建立一個資訊保安通道,來保證資料傳輸的安全;另一種就是確認網站的真實性。

4.HTTP和HTTPS區別

http是超文字傳輸協定,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協定。
http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
http的連線很簡單,是無狀態的;HTTPS協定是由SSL+HTTP協定構建的可進行加密傳輸、身份認證的網路協定,比http協定安全。
https協定需要到ca申請證書,一般免費證書較少,因而需要一定費用。

5.Charles抓取HTTP包

charles中不安裝證書,預設就能抓http型別網址的包資訊。這部分宏哥在上一篇中就提到過。如下圖所示:

6.Charles抓取HTTPS原理

Charles 的主要工作原理就是:對使用者端偽裝成伺服器,對伺服器偽裝成使用者端。

 

1.使用者端向伺服器發起HTTPS請求

2.Charles攔截使用者端的請求,偽裝成使用者端向伺服器進行請求

3.伺服器向「使用者端」(實際上是Charles)返回伺服器的CA證書

4.Charles攔截伺服器的響應,獲取伺服器證書公鑰,然後自己製作一張證書,將伺服器證書替換後傳送給使用者端。

5.使用者端接收到「伺服器」(實際上是Charles)的證書後,生成一個對稱祕鑰,用Charles的公鑰加密,傳送給「伺服器」(Charles)

6.Charles攔截使用者端的響應,用自己的私鑰解密對稱金鑰(Charles拿到了對金鑰),然後用伺服器證書公鑰加密,傳送給伺服器。

7.伺服器用自己的私鑰解密對稱金鑰,向「使用者端」(Charles)傳送響應

8.Charles攔截伺服器的響應,替換成自己的證書後傳送給使用者端

至此,連線建立,Charles拿到了 伺服器證書的公鑰 和 使用者端與伺服器協商的對稱金鑰,之後就可以解密或者修改加密的報文了。

7.Charles抓取HTTPS包

宏哥安裝好Charles後,沒有對其進行任何設定,現在可以抓取http的包,然後宏哥存取百度試著抓取一下百度的https包,看一下會出現什麼情況。

1.瀏覽器情況:不能正常存取百度,出現這個類似證書錯誤的提示,如下圖所示:

2.Charles情況:不能抓取百度的https的包,出現unknown的錯誤,如下圖所示:

7.1安裝證書

從上邊的錯誤我們可以看出是證書問題,那我們就需要安裝一下證書在電腦端,具體操作步驟如下:

1.開啟charles,點選help-->SSL Proxying-->Install Charles root  Certificate 安裝證書,如下圖所示:

2.點選完「Install Charles root  Certificate」後,然後點選「安裝證書」,如下圖所示:

3.點選「安裝證書」後,選擇儲存位置「本地計算機」,點選「下一步」,如下圖所示:

4.證書儲存位置選擇‘將所有的證書都放入下列儲存’,然後點選證書儲存後的「瀏覽」,證書儲存選擇「受信任的根證書頒發機構」,點選「確定」,如下圖所示:

5.點選「下一步」,如下圖所示:

6.點選「完成」,提示匯入成功。如下圖所示:

7.2設定SSL代理

證書安裝好後,我們還需要設定Charles的SSL Proxy Settings。具體操作步驟如下:

1.開啟Charles,點選proxy>SSL Proxying Settings開啟如下彈框,勾選ssl代理開關,左側inclide為需要抓取的代理,右側為需要排除抓取的代理,如下圖所示:

2.右側exclude排除的,點選add即可新增,host為域名,port為埠號,我們要想抓取https,在include裡,點選add,填寫需要抓取https的host,port裡填寫443即可,也可以用*號代替。宏哥這裡在彈出索引標籤中,勾選【Enable SSL Proxying】點選【add】,在Host輸入【*】表示接收任何主機,在Prot輸入【443】最後點選【ok】儲存。如下圖所示:

3.完成以上步驟基本就已經結束了,這時候我們開啟瀏覽器輸入www.baidu,com便可以抓取到了。

(1)瀏覽器情況:能正常存取百度,如下圖所示:

 

(2)Charles情況:能抓取百度的https的包,如下圖所示:

 8.小結

其實從頭到尾感覺和Fiddler的抓取Https的步驟差不多,首先安裝證書,然後進行抓包工具自身的設定,最後就可以成功抓取到Https包了。

Q: HTTPS 為什麼安全?

A: 因為 HTTPS 保證了傳輸安全,防止傳輸過程被監聽、防止資料被竊取,可以確認網站的真實性。

Q: HTTPS 的傳輸過程是怎樣的?

A: 使用者端發起 HTTPS請求,伺服器端返回證書,使用者端對證書進行驗證,驗證通過後本地生成用於改造對稱加密演演算法的亂數,通過證書中的公鑰對亂數進行加密傳輸到伺服器端,伺服器端接收後通過私鑰解密得到亂數,之後的資料互動通過對稱加密演演算法進行加解密。

Q: 為什麼需要證書?

A: 防止」中間人「攻擊,同時可以為網站提供身份證明。

Q: 使用 HTTPS 會被抓包嗎?

A: 會被抓包,HTTPS 只防止使用者在不知情的情況下通訊被監聽,如果使用者主動授信,是可以構建「中間人」網路,代理軟體可以對傳輸內容進行解密。