一、前言
市面上有很多抓包工具,本文不會教大家如何使用抓包工具去 Crack,那是犯法的事兒,咱不做;本文使用抓包工具來分析一些應用的接口,例如:測試人員可以利用抓包工具來快速判斷是前端請求問題,還是后端接口數據返回不對;再或者,我們發布了App到了市場,用戶下載 / 更新App后,反饋App有bug,雖然服務端可以查看海量日志,但我們利用抓包工具,根據用戶的問題描述,來復現問題,也能夠極快的定位問題,并尋找解決方案。
Windows 有很多抓包工具,例如:Fiddler,WirShark;而在 Mac 中,比較著名的就是 Charles,Charles 支持三個 Windows、Linux 和 Mac。目前,大多數服務端都支持 Https ,因此,大部分抓包出來的數據都是密文,那如何獲取明文數據呢?
本篇文章是一篇小白文,告訴大家如何安裝 Charles,如何通過『中間者』來代理請求,與服務端進行交互,獲取明文數據。
二、中間者
中間者在網絡中,通常用作數據截獲,并竄改數據再發送,因此,可以用作一種網絡攻擊方式。『游戲外掛』就是中間者,它作為 Client / Server 之間的中間者,通過竄改 Client 發送到請求,再發送到 Server,來欺騙服務端達到一種數據竄改的效果。
抓包工具 Charles 就能作為中間者,當然,我們不是用來竄改數據來欺騙服務端造假,而是為了截獲加密的數據,并明文展示出來。但是,這是有幾點我們需要指出(因為中間者不是萬能的,不是所有情況都能這么干,一定是有一定有bug,我們才能使用這種方式):
Server 端裝有 Https 證書,而 Client 端沒有,且 Client 端是完全信認 Server 端的,并且兩者沒有采用其它的數據加密方式,那么,我們可以使用中間者來進行兩者之間的代理交互。
上面這個條件,或者說數據安全措施還是比較低的,所謂防君子不防小人,如果遇到:『Client 與 Server 之間的數據是加密傳輸的,那么我們就很難截獲密文』。兩端數據加密的方式就多種,例如:采用 AES(對稱加密)、RSA (非對稱加密)或是私有數據加密協議。
上圖 1 是正常的 Client 與 Server 交互流程,采用了 HTTPS 數據加密;流程 2 加入了 Proxy(中間者),通過代理 Client 與 Server 之間的請求與返回,來達到數據截獲:
- 對于 Client ,Proxy 相當于 Server,Client 將請求發送給 Proxy,Proxy 再轉發給真正的 Server;
- 對于 Server,Proxy 相當于 Client,Proxy 將數據轉發給 Server,Server 再將數據返回給 Proxy;
三、Charles 安裝
3.1、安裝
- 先到官網 https://www.charlesproxy.com/latest-release/download.do 下載對應的最新版本;
- 直接安裝,然后去 https://www.charles.ren/ 該網站獲取激活注冊碼(隨意輸入用戶名,生成注冊碼);
- 在 Charles 工具中完成注冊激活即可;
- 啟動 Charles ,軟件會自動彈出對話框『是否根據系統自動完成配置』,選擇『是』即可;
3.2、SSL 配置
選擇『Proxy』-> 『SSL Proxying Settings』,如下圖:
添加 SSL 端口代理,如下圖(點擊 Location 下面的 Add 按鈕,輸入如下):
點擊OK即完成設置,如下圖(點擊 OK):
3.3、Proxy配置
選擇『Proxy』-> 『Proxy Settings』,如下圖:
如下圖配置即可:
3.4、安裝 PC 證書
選擇『Install Charles Root Certificate』,點擊后可能有彈出對話框提示,也可能任何反應都沒有,這時,我們要去 Mac 系統中的
鑰匙串中,查找 Charles 證書,并設置為完全信認:
雙擊該證書,選擇『始終信認』即可:
3.5、安裝手機證書(以 iPhone 為例)
選擇『Install Charles Root Certificate on a Mobile Device or Remote Browser』,Charles 會彈一個對話提示框:
然后打開手機『設置』-> 『無線局域網』-> 選擇當前連接的WIFI,如下圖操作步驟:
再然后,打開手機瀏覽器,輸入『chls.pro/ssl』,點擊『前往』:
允許下載配置描述文件,下載完后,打開手機『設置』,操作流程如下:
OK,至此,我們的 Charles、PC 證書、手機證書都安裝完成了!