工程师必备APP抓包技能
奇技 · 指南
一臺上網電腦就能完成 APP 抓包分析一條龍服務。這是一篇 APP 抓包分析總結性文章,采用 APP 模擬器與 Web 調試代理工具組合玩法。從此 APP 抓包分析能力變得游刃有余,告別腳忙手亂。
本篇文章在 macOS 10.15.7 和 Windows 10 專業版環境測試通過,文章素材大部分以 Mac 環境為主。您只需要擁有一臺能上網的電腦就能實現 APP 抓包分析,連實物手機都 可以不需要了。適用于 APP 功能測試、APP 安全測試、APP 開發、后端開發、以及對 APP 抓包感興趣的人員。
1
第一步:安裝 Android 模擬器
國內 Android 模擬器數量有很多,我們需要挑選支持 WiFi 代理設置的模擬器,以下兩款 是我個人常用的(排序亂序):
本文隨機選擇的是網易 MuMu 模擬器,兩款模擬器都在多環境下測試通過。本文也分享了一種在 Android 7.0 以上正確抓取 HTTPS 數據包方法。
安裝 MuMu 模擬器
由于 MuMu 模擬器安裝非常簡單,所以省略掉安裝過程。
啟動 MuMu 模擬器
2
在模擬器上安裝 APP
界面化方式安裝 APP
網易 MuMu 模擬器,安裝 APP 非常簡單,安裝過程支持全界面化操作。APP 安裝途徑有 MuMu 模擬器內置的 “應用中心” 和 “本機 APK 安裝”,當然也支持 “adb” 命令行方式進行安裝。比如:安裝了一款新應用,桌面上會新增一個應用圖標,并且在圖標的左邊會有一個小紅點。
命令行方式安裝 APP
安裝 adb
首先安裝 adb (Android Debug Bridge)命令行工具,adb 用戶指南 https://developer.android.google.cn/studio/command-line/adb。在 Mac 環境下,安裝 android-platform-tools。
在 Windows 環境下,安裝 Android 命令行工具,下載地址: http://tools.androidstudio.org/index.php/sdk,在這里省略掉了 adb 安裝過程。
連接 MuMu
以下 adb 命令在 Mac、Windows 環境下通用。
Windows 查看 TCP 端口監聽狀態
Mac、Linux 查看 TCP 端口監聽狀態
在 Mac 環境下,連接 MuMu 模擬器
查看已連接的所有設備
本地安裝APK
$ adb -s emulator-5554 install /Users/fanjiapeng/Downloads/360freewifi_beta.apk
3
安裝 Web 調試代理工具
推薦兩款常用 Web Debugging Proxy Tool(排序亂序):
抓包工具1:Charles
由于軟件安裝非常簡單,所以省略掉安裝過程。不得不稱贊一下,Charles 軟件圖標非常 漂亮,打開 Charles 界面如下圖所示。
模擬器設置 Charles 代理
代理設置步驟:
打開 MuMu 模擬器 → 系統設置 → 選擇 WLAN →(長按出彈框)選擇修改網絡 → 填寫 代理服務器信息 → 保存。
下圖例子注解:
紅框 1,填寫的是本機的內網 IP 地址。
紅框 2,填寫的是 Charles 默認的端口號 8888。
開啟 Charles HTTPS 抓包
首先在模擬器里,安裝 Charles 根證書。操作步驟如下:1. 通過瀏覽器訪問 “chls.pro/ssl” ,下載 Charles 根證書。
2. 點擊左上角的 “下載箭頭” 圖標,安裝 Charles 根證書。某些手機需要更改證書后綴名稱。
3. 設置鎖屏PIN碼或密碼才能使用憑證存儲。
4. 證書安裝成功。
其次在 Charles 軟件操作 SSL 代理設置。配置步驟: Proxy →SSL Proxying Settings → Add 。
圖示操作如下所示:
Andorid 7.0+ 抓取 HTTPS 包
Android 7.0 版本以下請跳過此小節,不需要多此一舉了。
1. Android 系統需要 root 權限
2. 下載 Charless 根證書:charles-ssl-proxying-certificate.pem Help → SSL Proxying → Save Charles Root Certificate… 。
3. OpenSSL 命令行工具計算 pem 文件 hash 值
4. 把 pem 文件重命名,Android 系統證書格式:.0
5. (先連接模擬器)把本地證書上傳到手機目錄中:/system/etc/security/cacerts
如果出現錯誤提示:adb: error: failed to copy ‘xxx’ to ‘xxx’: remote couldn’t create file: Read-only file system。增加以下兩步操作,再重新執行步驟 5
訪問控制設置
第一種自動設置方式:首次從 Android 設備建立連接時,Charles 軟件會出現 IP 授權提示框。點擊 “Allow”, Android 設備 IP 地址將添加到 Charles 中的 “訪問控制” 列表中(由于這里使用的是 Android 模擬器,也就是本機 IP 地址)。
第二種手動設置方式:點擊右上角小圖標 “Settings”,在彈出的下拉菜單項中選擇 “Access Control Settings”,點擊按鈕 “Add”,完成白名單 IP 地址添加。
開始 Charles 抓包
注意: 若抓取 HTTPS 包顯示<unknow>,則說明證書配置不正確
抓包工具2:Fiddler Everywhere
由于軟件安裝方式非常簡單化,所以省略掉安裝過程。打開 Fiddler Everywhere 界面如下圖所示。
Live Traffic Columns 功能區說明
模擬器設置 Fiddler Everywhere 代理
代理設置步驟:
打開 MuMu 模擬器 → 系統設置 → 選擇 WLAN →(長按出彈框)選擇修改網絡 → 填寫 代理服務器信息 → 保存。
下圖例子注解:
紅框 1,填寫的是本機的內網 IP 地址。
紅框 2,填寫的是 Fiddler Everywhere 默認的端口號 8866。
開啟 Fiddler Everywhere HTTPS 抓包
1. 點擊右上角小圖標 “Settings”,選擇菜單項 “HTTPS”,勾選 “Capture HTTPS traffic”。
2. 在模擬器里,通過瀏覽器下載 Fiddler Everywhere 根證書,剩余的安裝步驟請參考 Charles 根證書安裝:
Andorid 7.0+ 抓取 HTTPS 包
Fiddler Everywhere 工具導出的根證書格式為 crt,需要把 crt 證書格式轉換成 pem 格 式。其它配置步驟請參考 Charles 這章設置。
開啟遠程連接
選擇菜單項 “Connections”,勾選 “Allow remote computers to connect”,其它項保留默認設置即可。
開始 Fiddler Everywhere 抓包
在 MuMu 模擬器中,操作需要被抓包的 APP,在 Fiddler Everywhere 中 “Live Traffic” 區域顯示抓取到的所有 API 請求,點擊其中一條 API,在 Fiddler 界面右邊區域可以查看 Request、Response 詳細信息。
總結
雖然文章取材以 Mac 環境為主,若沒有特殊注明,則說明在 Windows 和 Mac 環境下安 裝步驟同質化,只是在安裝過程中某些界面顯示上會有一些差異,但并不影響整體的安裝 流程。
本篇文章言簡意賅介紹了 MuMu 模擬器安裝,adb 工具的安裝及使用,APK 多種安裝方 式,兩款抓包工具 Fiddler Everywhere、Charles 的安裝及基礎性配置。
雖然 APP 抓包還有其它的方式,但 APP 抓包工具這兩款依然是首選工具。調試代理工具 的介紹不是本章的重點,因為它們的能力遠不止于此。篇幅有限,本章只講解了 Android APP 抓包,iOS APP 抓包方式是相同的。
延伸話題:關于 APP 抓包與反抓包策略,這是人與人之間的較量,這是一個長期博 弈的過程。
往期精彩回顧
MQTT協議之發布訂閱
一種通過云配置處理應用權限彈框的方案
360Stack裸金屬服務器部署實踐
360技術公眾號
技術干貨|一手資訊|精彩活動
掃碼關注我們
總結
以上是生活随笔為你收集整理的工程师必备APP抓包技能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过IGRP路由协议实现非等值带宽的负载
- 下一篇: SSIS 学习(2):数据流任务(上)