android app抓包方式盤點
前言
有群友想直接了解一些常用的Android的抓包手段,直接安排,讓你可以快速上手常見的app抓包的方式及工具。
前期準備工作
Android真機(推薦7.0以下比較容易,原因后面詳解)或者模擬器。
ProxyDroid或者postern等代理app。
charles或者burpsuite抓包工具。
frida或者xposed框架(后續可能會出刷機教程或者是商城上架手機可以兌換嗷)。
動手實踐
證書安裝
首先是證書的安裝,安裝Charles或者burpsuite的證書到手機或者是模擬器上,推薦Android7以下是因為證書安裝即可被信任,由于Android7以上只有系統級證書才能被信任,還需要移動證書。移動證書這個操作,常規操作還是很麻煩的。手機root后可以使用Magisk框架下的MoveCertificates,然后重啟后證書就自動移動到系統級證書下面了。
第一層
最簡單的抓包方式莫過于直接修改wifi配置設置代理,填入相應的ip及端口即可。

(網圖 非真實ip)
第二層
有時https服務端會校驗客戶端的抓包,這時除了進行hook相關方法之外,還可以將apk后綴改為rar或者zip(apk的本質就是一個壓縮包),然后搜索crt,cer,p12等與證書相關的后綴名,將這些證書直接導入到Charles或者burpsuite中,就可以成功對抗客戶端校驗了。
第三層
利用vpn代理抓包,設置postern或者是ProxyDroid,在手機上設置流量轉發,charles設置socks端口。


第四層
證書綁定機制(SSLpinning),這就是說程序中直接不默認信任系統根證書目錄中的證書了,中間人攻擊的要點就是偽造一個假的服務端證書給了客戶端,讓客戶端信以為真。這時SSL pinning就是說 客戶端內直接內置一份證書,進行校驗,如果校驗不通過,直接就斷開連接不再進行數據通信。
SSL pinning有兩種方式:
證書鎖定和公鑰鎖定
證書鎖定
需要在客戶端代碼內置僅接受指定域名的證書,而不接受操作系統或瀏覽器內置的CA根證書對應的任何證書,通過這種授權方式,保障了APP與服務端通信的唯一性和安全性,因此客戶端與服務端(例如API網關)之間的通信是可以保證絕對安全。但是CA簽發證書都存在有效期問題,缺點是在
公鑰鎖定
提取證書中的公鑰并內置到客戶端中,通過與服務器對比公鑰值來驗證連接的正確性。制作證書密鑰時,公鑰在證書的續期前后都可以保持不變(即密鑰對不變),所以可以避免證書有效期問題,一般推薦這種做法。
此時主要是就是利用hook關鍵函數的操作來進行了。
簡單總結

R0capture使用
仔細想了一下,問題應該是出在了沒有安裝frida上。此處以模擬器(天然root)安裝frida為例,首先在PC上安裝frida。
pip install fridapip install frida-tools
安裝完成后輸入frida --version出現版本就說明安裝成功了。
接下來就是在模擬器上安裝frida服務端,第一步先查看手機設備信息,避免下載之后沒法用。
getprop ro.product.cpu.abi
這是查看cpu版本后,找到對應的server,注意frida版本也要對應。
下載下來后,盡量改一下名字,比如f14.2這樣子的,因為有些app可能只是檢測frida這個名字來進行frida檢測。修改名字后可能就會有概率直接過了frida檢測。
然后chmod 777 frida-server給權限。
再./frida-server就成功運行了。
更加詳細的frida安裝過程可以看一下子炎師傅的這一篇文章
https://zone.huoxian.cn/d/389-app
然后此時將R0capture中的庫安裝完成,就可以進行抓包了。
python3 R0capture.py -U 包名 -v -p test.pcap
推薦使用attach模式,可以在任何你想抓包的地方進行抓包,避免了抓出來的流量包過多,干擾分析。
總結
抓包問題更加詳細的文章火線zone上也有很多,有什么問題大家一起交流呀。