Charles的HTTPS抓包方法及原理分析

2022-04-17 00:46:31 字數 2764 閱讀 9192

作為移動平台的rd,專案開發過程中一項比較重要的甩鍋技能——抓包應該大家都比較熟悉了,畢竟有些bug可能是由服務端下發的資料出錯導致的。雖然抓包工具很好用,但是如果不做一些設定的話,對於https協議的請求就無能為力了,比如這樣

這對於一些注重安全性的應用來說,或許就不是特別好使,我們的專案目前也在逐漸從http轉向https,因此掌握這些技巧還是比較有用的。抓包工具多種多樣,比較好使的還是charles和fiddler,下面就簡單的介紹下https的相關原理並以charles為例來介紹下如何抓取https協議的包。

其實使用工具抓https的包本身並不難,兩三步簡單的操作就可以實現,關鍵如果不理解原理的話,總覺得不舒服斯基,所以把原理分析放在前面。

https(hyper text transfer protocol secure),是一種基於ssl/tls的http,所有的http資料都是在ssl/tls協議封裝之上進行傳輸的。https協議是在http協議的基礎上,新增了ssl/tls握手以及資料加密傳輸,也屬於應用層協議。所以,研究https協議原理,最終就是研究ssl/tls協議。

我們都知道https在保證資料安全傳輸上使用了加密演算法,但是具體是如何加密的,或許許多人和我一樣也是雲裡霧裡。

實際上ssl/tls協議的基本思路是非對稱加密和對稱加密結合來傳輸資料,一言以弊之,https是通過一次非對稱加密演算法(如rsa演算法)進行了協商金鑰的生成與交換,然後在後續通訊過程中就使用協商金鑰進行對稱加密通訊,之所以要使用這兩種加密方式的原因在於非對稱加密計算量較大,如果一直使用非對稱加密來傳輸資料的話,會影響效率。

執行過程盜用巨人的圖,可以表示如下

有了圖就可以一步一步分析了

1.https請求

這個步驟是整個通訊過程中的第一步,首先,客戶端(通常是瀏覽器)先向伺服器發出加密通訊的請求,在這一步中,客戶端主要向伺服器提供以下資訊:

2.伺服器響應

伺服器收到客戶端請求後,向客戶端發出回應,伺服器的回應一般包含以下內容:

3.證書校驗、生成密碼、公鑰加密

客戶端收到伺服器回應以後,首先驗證伺服器返回的證書。如果證書不是可信機構頒發,或者證書中的網域名稱與實際網域名稱不一致,或者證書已經過期,以瀏覽器為例客戶端會向網頁訪問者顯示乙個警告,由其選擇是否還要繼續通訊。 如果證書沒有問題,客戶端就會從證書中取出伺服器的公鑰。然後生成密碼、公鑰加密。

生成密碼的過程會先產生乙個隨機數pre-master key,該隨機數是整個握手階段出現的第三個隨機數,稍後會經過公鑰加密傳送到服務端,有了它以後,客戶端和伺服器就同時有了三個隨機數——randomc,randoms,pre-master key,接著雙方就用事先商定的加密方法,各自生成本次會話所用的同一把「協商金鑰」。

4.加密資訊c-s

加密資訊是指上面一步生成的內容,主要包括

5.私鑰解密、解密握手訊息、驗證hash

伺服器收到客戶端公鑰加密的第三個隨機數pre-master key之後,通過自身私鑰解密該數值並由之前的randomc和randoms計算生成本次會話所用的「會話金鑰」。然後,通過約定的hash演算法驗證客戶端傳送的資料完整性。

6.加密資訊s-c

主要是指

7.解密握手訊息、驗證hash

客戶端解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手過程結束。

8.正常加密通訊

握手成功之後,所有的通訊資料將由之前協商金鑰及約定好的演算法進行加密解密。

charles本身是乙個協議**工具,如果只是普通的http請求,因為資料本身沒經過再次加密,因此作為**可以知道所有客戶端傳送到服務端的請求內容以及服務端返回給客戶端的資料內容,這也就是抓包工具能夠將資料傳輸內容直接展現出來的原因。對於https請求,4,6,8步驟的資料都已經經過了加密,**如果什麼都不做的話是無法獲取到其中的內容的。為了實現這個過程的資料獲取,charles需要做的事情是對客戶端偽裝服務端,對服務端偽裝客戶端,具體

一般情況下https中是客戶端對服務端做證書校驗,當然也有一些金融機構會有使用者證書作為提供給服務端做使用者認證的工具,保證發出請求的的確是這部分授權使用者。我們僅分析客戶端對服務單做證書校驗的這種。android有自己的一套https通訊呼叫方式,以httpsurlconnection為例

上面這段**就是乙個https請求的樣例,這種方法的特點是證書校驗工作交由系統處理,系統只會允許可信ca簽發的數字證書能夠訪問,私有ca簽發的數字證書(比如12306以及我們上文說的charles證書)是無法訪問的。

那麼如何繞過呢,

原理都說完了,下面就是貼圖時間,我們要做的最重要的其實只有一件事情,就是

將私有ca簽發的數字證書安裝到手機中並且作為受信任證書儲存

一步一步來

charles支援https抓包

前言 最近發現訪問專案的網頁偶爾會被插入廣告,很有可能是運營商劫持流量插入進去的,我在家裡使用的長城寬頻開啟非加密的網頁,時不時會彈個廣告窗,這個也算是中國特色了。因此計畫專案上線https,抓包分析就困難了,之前知道有人搞過https的抓包,就是配置有些麻煩。上網找了些資料,算是配成功了,這裡記錄...

charles 抓包https介面

秒文鎮樓 一 手機 ios裝證書,低版本安卓裝證書 crt檔案 高版本不支援,建議ios 訪問chls.pro.ssl 配置信任。wifi網路配置手工 ipv4 port 8888 設定 通用 描述檔案與裝置管理 二 官網下charles軟體安裝即可。破解registered name licens...

Charles 手機抓包

開啟 charles,選擇 proxy mac os x proxy,這樣,瀏覽器重新整理頁面,http 資源就可以列印到 charles 裡面。如圖 兩個步驟,我們就可以輕鬆訪問 http 資源啦 在上面兩步驟的基礎之上,選擇 proxy ssl proxying settings 選項 開啟 s...