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


抓包神器之--Charles配置和使用手冊(轉載)

image-20210719153634905

天降大任

charles簡介

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

Charles 主要功能包括:

  1. 截取 Http 和 Https 網絡封包

  2. 支持重發網絡請求,方便后端調試

  3. 支持修改網絡請求參數

  4. 支持網絡請求的截獲並動態修改

  5. 支持模擬慢速網絡

主界面介紹

image-20210719154036465

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

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

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

image-20210719154252360

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

夜魅以求

下載

說明

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

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

 

4.6.2鏈接:
鏈接:
Windows:https://wwa.lanzoui.com/ics9iro0gwj


Mac:https://wwa.lanzoui.com/igaijrna6lc


4.2.7老版含中文補丁鏈接:

Windows:https://wwa.lanzoui.com/iKhbKro0ffg

得心應手

charles基礎配置

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

CA證書安裝

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

1.電腦下載Charles CA證書

image-20210719114452057

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

image-20210719114725647

訪問權限列表-白名單設置

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

  1. 進入Proxy → Access Control settings

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

image-20210719115611070

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

  1. 進入Proxy → proxying settings

  2. 配置代{過}{濾}理服務器端口

Port:8888   默認端口號為8888,若端口被占用需手動更改;筆者8888端口已被其他應用占用,這里改為了8899

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

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

image-20210719140730440

開啟https 443端口代{過}{濾}理

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

  1. 進入Proxy → SSL Proxying settings

  2. IP設置為通配符,代表任意服務器IP,端口設為443,當然端口也可以設置為*;https的默認端口為443,一般來說企業不會去修改它。當然端口配置為\更嚴謹一些

image-20210719140315929

略知一二

抓包

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

抓包原理

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

image-20210719150612020

配置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和端口號

image-20210719154931920

image-20210719142808752

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

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

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

image-20210719141624129

3.移動端charles證書安裝

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

image-20210719143630132

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

設置→ 通用→ 描述文件與設備管理 →關於本機 →證書信息設置 → 選擇charles證書 → 開啟信任開關

image-20210719143833931

測試抓包

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

下圖為連接代{過}{濾}理后操作微信抓到的數據請求

image-20210719144931713

去掉對電腦端請求的抓包

proxy菜單中有一項目macOS Proxy是打鈎的,意思是charles默認也會抓取電腦端所有的接口請求

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

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

image-20210719145558384

撥雲散霧

遇到的問題和解決策略

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

image-20210719153125704

原因不詳

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

 復制代碼 隱藏代碼
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的基本的配置和用法。

其實charles功能很強大,后續專門出一篇介紹charles的便捷功能和騷操作,敬請期待~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM