app雙向校驗


系統校驗

在Android 7.0 之后,默認情況下 app 只信任系統級別的 CA 。從 chls.pro/ssl 安裝的證書是在用戶級,這導致了無法攔截應用流量

配置burp

配置代理

burp導出證書

也可以在做了代理的手機瀏覽器中輸入 http://burp 下載證書

在電腦端為手機安裝證書 需要手機root

openssl x509 -inform DER -in cacert.der -out cacert.pem  #導出的der證書轉換為pem格式
openssl x509 -inform PEM -subject_hash_old -in cacert.pem|head -1 #打印hash,得到9a5ba575
cp burp.pem 9a5ba575.0 
adb push 9a5ba575.0 /system/etc/security/cacerts/#將證書傳到系統根證書目錄
adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0 
abd reboot

自簽名證書

有時候會碰到安裝了證書也無法抓包的問題,這時可以考慮生成一個自簽名證書導入burpsuite
OPENSSL下載地址:https://slproweb.com/products/Win32OpenSSL.html

生成一個自簽名的證書

cp "C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf" .
openssl req -x509 -days 730 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca -config openssl.cnf  #創建一個新的根證書
openssl rsa -in server.key -inform pem -out server.key.der -outform der  #轉為der格式
openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der –nocrypt  #將key轉換為pkcs8格式

將證書導入到burp中

在Burp內導入自簽名證書后,掛上Burp的代理訪問,Burp會自動使用我們剛才生成的根證書簽發當前域名的證書。
證書的簽發者信息就是我們剛才在openssl req內所填寫的。

在手機上安裝剛才生成的證書

adb shell
su
cd /data/misc/user/0/cacerts-added/  #進入證書安裝路徑
ls  #顯示安裝的證書
mount -o rw,remount /system  #重新掛載 /
chmod 777 /system  #給予權限
mv d58e1f78.0 /system/etc/security/cacerts/  #將證書復制到根目錄
reboot

雙向認證

APP 雙向校驗,即服務器要認證請求淶源是否真實客戶端(來自真實證書),大概原理這樣:
app -->服務端(證書)---- ok
app(證書)<--服務端---- ok

解決方案分為兩種:
1.服務端以為 burp 是客戶端 (逆向 APP ,獲得證書導入到 burp)
2.APP 以為 burp是服務端( Hook 繞過)

解決方案1

導出apk
修改.apk后綴為.zip並解壓
從assets等資源目錄找到后綴名為p12/pfx/pem等的證書文件
如果是p12類型,可將其直接導入Burpsuite。
host寫app的域名如:*.baidu.com

導入找到的p12證書,可能需要密碼

獲取密碼,將apk放入jeb搜索證書文件關鍵字符

解決方案2

某些客戶端也會驗證服務器證書是否是指定的證書。
除逆向直接刪除這部分邏輯外,更簡便的方法是,使用Frida對客戶端進行Hook,讓客戶端的所有驗證都能通過。
使用Frida的優勢在於不用逆向,基本上針對大部分此類App都是可用的。

電腦端安裝

python3 -m pip install frida
python3 -m pip install frida-tools

手機端安裝

adb shell 
su
getprop ro.product.cpu.abi  #查看Android手機設備設置 返回arm64-v8a
frida -version  #在電腦端查看安裝的frida版本

下載對應frida-server並安裝,注意版本號對應
下載地址:https://github.com/frida/frida/releases

下載后進行解壓,解壓后的文件重命名為frida-server並復制到手機

adb push firda-server /data/local/tmp #將frida-server放到手機的這個目錄下
adb forward tcp:27042 tcp:27042    #轉發端口
adb forward tcp:27043 tcp:27043
adb shell 
su
cd /data/local/tmp
chmod 755 frida-server   #賦予可執行權限
./frida-server #后台運行frida-server

在起一個窗口

frida-ps -U

加載腳本:frida -U -1 www.js -f 名稱 –-no-pause
名稱:app名稱如 com.baidu.a

burp就能夠正常抓包了


免責聲明!

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



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