android7.0以上https抓包


 

Android 7 以上版本,繞過CA限制,抓取https

原文地址: https://www.jianshu.com/p/035f7d7a0f7e

環境

手機:小米5A
系統:MIUI 10
電腦:win10
抓包:mitmdump (可替換成其他抓包軟件)
電腦需要安裝:

  • mitmdump(可替換成任意抓包軟件)
  • adb
  • openssl

背景

我需要抓取https請求,蘋果手機可以毫無問題的抓取,而安卓就不可以。原因是安卓7之后對證書的策略進行變更,應用不再使用用戶證書。

有兩種方式繞過:

  • 在手機上安裝系統證書
  • 修改app的manifest文件重新打包

這里我們只講第一種方法, 所以我們需要把證書添加到系統證書中。

為此,我們需要一台已經root的小米手機。root教程在miui論壇中已經非常詳細了。官方給出了詳細的步驟和工具。

開始

假設到這里你已經有一台root成功的小米手機。

安卓受信任的CA證書以特定的格式存儲在 /system/etc/security/cacerts 目錄下。我們可以在adb shell中查看到:


 
image.png

證書處理

這里我們用到的是mitmproxy,它的證書存放在user/Administrator/.mitmproxy/ 目錄下。pem為后綴的文件。

查看openssl版本

openssl version

如果是1.0以上的版本:

openssl x509 -inform DER -in cacert.der -out cacert.pem  
openssl x509 -inform PEM -subject_hash_old -in cacert.pem

如果是1.0以下的版本:

openssl x509 -inform DER -in cacert.der -out cacert.pem  
openssl x509 -inform PEM -subject_hash -in cacert.pem

上面的兩條語句,如果已經是pem后綴的文件,可以直接執行第二條, cacert.pem就是你的證書文件。

第一行會輸出一個類似這樣的hash串:

7672ac4b

然后重命名證書

cp cacert.pem 7672ac4b.0  

復制證書到設備上

可以直接粘貼到手機中,也可以用adb復制過去,這里的7672ac4b換成前面你得到的那個hash串

adb root  
adb remount  
adb push 7672ac4b.0 /sdcard/  

復制到系統目錄並修改權限

adb shell
su
mount -o rw,remount /system mv /sdcard/<cert>.0 /system/etc/security/cacerts/ chmod 644 /system/etc/security/cacerts/7672ac4b.0 reboot 

驗證

然后我們在手機中依次進入:設置→安全→信任證書→系統證書
此處就可以看到你安裝的證書了。

測試

證書安裝成功就沒什么問題了:


 
image.png

可能遇到的問題

可問題:
remount of /system failed: Read-only file system
remount failed
解決方法:
adb root
adb disable-verity
adb reboot
adb remount
adb shell
mount -o rw,remount /system

參考文章:

Configuring Burp Suite with Android Nougat
Android 7 Nougat and certificate authorities



作者:WangLane
鏈接:https://www.jianshu.com/p/035f7d7a0f7e
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

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



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