天天看點

charles 安裝 ssl_Charles抓包與mock資料(I)

Charles抓包與mock資料

 最近有用到Charles,有一些感悟,分享給大家,希望對大家有所幫助。在Windows 平台相信很多人都用過Fiddler抓包,而Mac 平台一般使用Charles進行抓包。不過Charles屬于商業軟體而Fiddler屬于免費軟體。

本文無任何入侵計算機系統内容,内容完全為開放資訊,可以在網上查到。本文内容僅供學習參考,請勿用于其他非法内容。

charles 安裝 ssl_Charles抓包與mock資料(I)

本文用到的工具:

1. Charles 用于抓包

https://www.charlesproxy.com/

2. Frida 用于Hook

https://github.com/frida/frida 

3. 彙智e站 被抓包對象

https://sj.qq.com/myapp/detail.htm?apkName=com.wiseonline.huizhi

壹---Android  HTTPS 抓包

相信用過Charles的人都知道如何使用Charles直接抓包,這裡我不在多說,畢竟也沒有什麼技術含量。我想說的是通過Android端抓HTTPS的包。首先設定Charles,開啟SSL。如圖:

charles 安裝 ssl_Charles抓包與mock資料(I)

然後,手機端設定代理,如下圖:IP為你Charles的IP,端口為8888.

charles 安裝 ssl_Charles抓包與mock資料(I)

設定完畢之後安裝Root證書。

charles 安裝 ssl_Charles抓包與mock資料(I)

手機端也需要安裝證書,連接配接Charles之後,打開浏覽器輸入chls.pro/ssl下載下傳證書并安裝。很簡單不是,可以開始抓包了。這次我們以彙智e站為對象,看看彙智e站到底使用了什麼API。

然鵝,當我們打開APP之後發現依然不能拿到SSL的内容。而當打開一些HTTPS的網站,卻能拿到資料(比如百度),說明了證書這種方式并不能實作抓HTTPS的資料。 

charles 安裝 ssl_Charles抓包與mock資料(I)

我查了一下,原因是Android 7 之後如果要抓APP的HTTPS請求需要在APP裡面加xml檔案,這種方式适合目前APP開發者,不适合抓包第三方APP的情況。

貮---Android HTTPS抓包失敗解決方案 

解決方案也很簡單,就是上文提到的Frida . Frida 是一款Hook工具,可以用來跟蹤攔截APP的方法, 需要Python環境。

安裝: 

pip install frida-tools # CLI tools
pip install frida       # Python bindings
           

下載下傳server端,根據你的模拟器的CPU。比如x86的下載下傳x86

https://github.com/frida/frida/releases

charles 安裝 ssl_Charles抓包與mock資料(I)

啟動frida server

adb root && adb push frida-server-12.7.22-android-x86 /data/local/frida-server && adb shell chmod +x /data/local/frida-server && adb shell /data/local/frida-server

之後可以直接使用frida檢視相關程序

frida-ps -U

會列出所有程序

添加支援SSL JS檔案

Java.perform(function() {

    var array_list = Java.use("java.util.ArrayList");

    var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');

    ApiClient.checkTrustedRecursive.implementation = function(a1, a2, a3, a4, a5, a6) {

        // console.log('Bypassing SSL Pinning');

        var k = array_list.$new();

        return k;

    }

}, 0);

使用該檔案進行SSL攔截跟蹤。

 frida -l frida.js -U -f com.wiseonline.huizhi --no-pause

charles 安裝 ssl_Charles抓包與mock資料(I)

這樣就可以拿到所有HTTPS的内容。

charles 安裝 ssl_Charles抓包與mock資料(I)

叁---攔截修改HTTPS請求

 經過以上内容,已經可以正常拿到HTTPS的所有内容,接下來就可以嘗試攔截并修改請求。以一個POST請求為例。

charles 安裝 ssl_Charles抓包與mock資料(I)

在請求打斷點,右鍵選擇BreakPoints,之後repeat該請求。

charles 安裝 ssl_Charles抓包與mock資料(I)

這時,已經進入debug模式,已經将該請求攔截。可以先修改request,如果不修改可以直接execute執行request。

charles 安裝 ssl_Charles抓包與mock資料(I)

然後進入Response編輯模式,可以對Response的内容進行編輯,編輯完畢點execute執行Response。

charles 安裝 ssl_Charles抓包與mock資料(I)

之後可以save該Response

charles 安裝 ssl_Charles抓包與mock資料(I)

肆---Mock 資料

以登入為例,可以先抓包拿到Response,并把Response save到本地。然後通過Local Mapping來Mock資料。當使用者名和密碼錯誤的時候,success的value是false。對應的登入結果也是登入失敗,我們把這個Response save到本地的時候,把success 從false改為true。就可以mock登入成功的情況。

charles 安裝 ssl_Charles抓包與mock資料(I)
charles 安裝 ssl_Charles抓包與mock資料(I)

伍---總結

a. Charles 不僅能用來抓包,而且可以用來Mock資料,能非常友善的提供在API不易滿足開發測試需求時,根據自己的需要定制Response内容。 

b. Charles Root證書并不能拿到所有的HTTPS請求的内容, 這時候可以采取通過Frida 等工具抓包SSL。

c. 該方法不光支援Android也支援iOS,可以下載下傳對應的Frida進行抓包嘗試。

charles 安裝 ssl_Charles抓包與mock資料(I)

點選下方“閱讀原文”檢視更多精彩内容☺

繼續閱讀