1. 程式人生 > 其它 >抓包神器之--Charles配置和使用手冊

抓包神器之--Charles配置和使用手冊

抓包神器之--Charles配置和使用手冊

天降大任

charles簡介

Charles 是常用的網路封包擷取工具, 通過將自己設定成系統的網路訪問代{過}{濾}理伺服器,使得所有的網路訪問請求都通過它來完成,從而實現了網路封包的擷取和分析。

Charles 主要功能包括:

  1. 擷取 Http 和 Https 網路封包

  2. 支援重發網路請求,方便後端除錯

  3. 支援修改網路請求引數

  4. 支援網路請求的截獲並動態修改

  5. 支援模擬慢速網路

主介面介紹

Charles 主要提供兩種檢視封包的檢視,分別名為 “Structure” 和 “Sequence”。

  1. Structure 檢視將網路請求按訪問的域名分類。
  2. Sequence 檢視將網路請求按訪問的時間排序。

大家可以根據具體的需要在這兩種檢視之前來回切換。請求多了有些時候會看不過來,Charles 提供了一個簡單的 Filter 功能,可以輸入關鍵字來快速篩選出 URL 中帶指定關鍵字的網路請求。

對於某一個具體的網路請求,你可以檢視其詳細的請求內容和響應內容。如果請求內容是 POST 的表單,Charles 會自動幫你將表單進行分項顯示。如果響應內容是 JSON 格式的,那麼 Charles 可以自動幫你將 JSON 內容格式化,方便你檢視。如果響應內容是圖片,那麼 Charles 可以顯示出圖片的預覽。

夜魅以求

下載

說明

charles是收費軟體,有條件者請選擇正規渠道下載並付費授權使用

下載地址:https://www.charlesproxy.com/

windows端

筆者開發電腦為mac,windows端沒有收藏連結,不過windows端的charles破解版應該很多~

mac端

mac端Charles這裡可以推薦個下載網站:未來mac下載

地址:https://mac.orsoon.com/ (非廣告植入)

需要付費會員才可以下載,但某寶上代{過}{濾}理會員下載的商家很多,一兩元可以搞定,費用感覺還行~

得心應手

charles基礎配置

以下內容筆者使用mac端charles4.2.8版本進行演示

CA證書安裝

安裝CA證書是為了抓包https請求,完成SSL的證書驗證環節

1.電腦下載Charles CA證書

2.安裝證書並設定為始終信任

訪問許可權列表-白名單設定

設定白名單,即設定允許哪些IP可以通過代{過}{濾}理進行請求抓包

  1. 進入Proxy → Access Control settings

  2. 點選add新增運許的IP地址,筆者這裡填入了0.0.0.0/0,即允許任意IP。筆者主要用測試手機連線charles代{過}{濾}理伺服器抓包進行逆向分析,沒有其他特殊用途,這裡就不限制IP了。手機連WIFI後IP是通過DHCP隨機分發的,設定某個IP作為白名單也不太方便。

charles代{過}{濾}理伺服器配置

  1. 進入Proxy → proxying settings

  2. 配置代{過}{濾}理伺服器埠

Port:8888 預設埠號為8888,若埠被佔用需手動更改;筆者8888埠已被其他應用佔用,這裡改為了8899

Enable transparent HTTP proxying(透明HTTP代{過}{濾}理):

透明代{過}{濾}理使Charles能夠去支援那些不支援HTTP代{過}{濾}理伺服器的客戶端,或者說不知道他們正在使用HTTP代{過}{濾}理伺服器,例如TCP / IP連線由路由器或防火牆重定向到Charles。

開啟https 443埠代{過}{濾}理

基於安全考慮現在的請求介面都是https,http很少見了。因此配置SSL代{過}{濾}理來抓包https必不可少。

  1. 進入Proxy → SSL Proxying settings

  2. IP設定為萬用字元,代表任意伺服器IP,埠設為443,當然埠也可以設定為*;https的預設埠為443,一般來說企業不會去修改它。當然埠配置為\更嚴謹一些

略知一二

抓包

當我們分析一個應用,做的第一件事情往往是先抓個包看看,它傳送和接收了哪些資料。收包發包是應用的命門,企業為使用者服務過程中最為關鍵的步驟——註冊、瀏覽商品、下單購買、點贊評論、意見反饋等行為,均通過收包發包來完成。出於網路安全的考慮,企業會對資料的收發包採取安全策略來校驗。試想如果對收包發包的資料沒有校驗,黑灰產業可以直接製作相應的協議刷工具,脫離應用本身進行實質性業務操作,給企業和使用者帶來巨大的損失。

抓包原理

借用一張圖。原理一言以蔽之:構建中間人,發起中間人攻擊(MITM)。

配置Charles代{過}{濾}理構成中間人後,本來C/S架構的通訊過程會“分裂”為兩個獨立的通訊過程,app本來驗證的是伺服器的證書,伺服器的證書手機的根證書是認可的,直接內建的;分裂成兩個獨立的通訊過程之後,app驗證的證書就成了Charles的證書,這就是為什麼我們抓包前需要安裝在手機端和電腦端均安裝charles證書。

其實這樣的抓包方式在某些情況下也許並不能成功。簡單提兩種情況:

1.安卓系統版本

如果你用的是android手機,會發現當android版本在7.0(包含)以上時,並不能抓到https的介面請求(charles中顯示為unknown)

這是因為谷歌基於資料安全考慮,android7.0之後版本不再信任使用者級別證書,只信任系統級別證書。而charles的證書預設是安裝在使用者目錄下的。它的證書手機根證書並不認可,並不是由手機內建的權威根證書籤發機構簽發的,所以手機不認,app也不認。

當然有防必有攻,是有應對策略的:

  • 將android版本降低到6.0以下
  • 既然7.0之後版本只信任系統級別的CA證書,那我們把charles的證書想辦法移動到系統目錄下就好了。

具體操作可參考:https://www.pianshen.com/article/97291182754/

2.SSL planning證書繫結機制

現象為手機連線代{過}{濾}理後,操作app時出現網路異常。

一般大廠都很重視軟體安全,他們的應用幾乎都有安全策略,SSL planning就是常見的一種。可以簡單理解為在應用程式碼中還有一層對證書校驗的流程,如果不是自己簽發的證書直接拒絕服務。SSL planning機制可以利用Frida或Objection通過hook來應對,這裡不再展開。

牛刀小試

移動端通過charles代{過}{濾}理抓包介面

以蘋果手機 IOS系統為例演示

前置工作

連線charles代{過}{濾}理服務

【注】注意前提條件,電腦和手機必須在同一wifi網路下

1.獲取代{過}{濾}理伺服器的IP和埠號

2.手機wifi配置代{過}{濾}理服務

點選你的wifi→配置代{過}{濾}理→手動→填入上圖charles彈窗中的伺服器IP和埠號

(android手機對應操作應該是:長按wifi → 修改網路 → 高階選項 →代{過}{濾}理 → 手動 → 填入上圖charles彈窗中的伺服器IP和埠號)

3.移動端charles證書安裝

根據彈窗提示,手機瀏覽器輸入chls.pro/ssl這個連結進行訪問下載移動端charles證書,點選Allow進行下載

證書下載安裝好後,IOS10之後的版本還需要手動操作進行證書信任:

設定→ 通用→ 描述檔案與裝置管理 →關於本機 →證書資訊設定 → 選擇charles證書 → 開啟信任開關

測試抓包

上述工作完成後,可以測試抓包了,手機訪問某個應用,觀察charles是否抓到介面請求

下圖為連線代{過}{濾}理後操作微信抓到的資料請求

去掉對電腦端請求的抓包

proxy選單中有一專案macOS Proxy是打鉤的,意思是charles預設也會抓取電腦端所有的介面請求

逆向分析場景下我們一般是手機連線代{過}{濾}理抓取手機端的請求,電腦端的請求其實是一種干擾。

可再次點選macOS Proxy將前面的勾去掉,這樣charles就不會再抓取電腦端的請求了。

撥雲散霧

遇到的問題和解決策略

1.mac安裝charles後報下圖錯誤

原因不詳

解決方式:終端執行如下命令

 複製程式碼 隱藏程式碼
sudo chown -R root "/Applications/Charles.app/Contents/Resources" sudo chmod -R u+s "/Applications/Charles.app/Contents/Resources"

2.Android HTTPS抓包報錯:SSL Handshanke:Recevied fatal alert unknown_ca

原因:

Android 7.0版本以上 && targetSdkVersion >= 24,只信任系統證書(即使用者證書不被信任)

解決策略:

  • Root Android手機,將Charles證書放到系統證書內

  • 將APP的公祕鑰匯入Charles中(具備APP開發許可權)

  • APP編譯為信任使用者證書的版本(具備APP開發許可權)

  • 使用Xposed的JustTrustMe模組信任所有證書

  • 使用沙箱應用

3.windows下移動端無法連線到代{過}{濾}理

現象:移動端訪問chls.pro/ssl,無提示證書下載/儲存

排查思路:

  • 確認防火牆是否攔截

  • 【控制面板】-【所有控制面板項】-【Windows Defender 防火牆】-【允許的應用】

  • 確認是否存在【Charles Web Debbuging Proxy】,且是否勾選,對應(專用/共用)網路是否符合環境

小具法力

本文簡單介紹了一下charles的基本的配置和用法。