APP雙向認證抓包_IOS


前言

隨着移動應用的發展和推廣,APP應用安全越來越受到重視。APP中各類防抓包的機制的出現,讓測試無法正常進行分析。

這篇文章算是總結一下我最近遇到的一款抓不到包的APP,給大家提供一個雙向證書認證應該如何解決的思路。

 

判斷證書雙向認證

剛拿到此app時候常規方法一把梭,發現只要一開啟手機代理,卻提示網絡異常,通過觀察burpsuite的記錄發現,只有請求包而沒有響應包。

直覺告訴我應該是使用SSL Pinning防止中間人攔截攻擊,然后我開啟了ssl-kill-switch2后發現該APP所有的響應包返回 400 No required SSL certificate was sent的報錯信息。

根據報錯提示,搜了一下發現該錯誤是指服務器端啟用了證書雙向認證。

當服務器啟用了證書雙向認證之后,除了客戶端去驗證服務器端的證書外,服務器也同時需要驗證客戶端的證書,也就是會要求客戶端提供自己的證書,如果沒有通過驗證,則會拒絕連接,如果通過驗證,服務器獲得用戶的公鑰。

該app直接封裝了客戶端的證書,相比於單項認證,無非就是多了一個服務器端驗證客戶端證書的過程,而在以往的用代理工具如burp這類工具,抓取https的包時,除了瀏覽器獲取的是代理工具的證書外,默認是不發送證書給服務器端的。burp在抓取https報文的過程中也提供了雙向認證的證書發送,但是是使用了burp提供的證書文件,也就是CA證書。app的服務端不認證這個burp提供的CA證書,那么我們就需要拿到匹配的證書,以其對服務端進行匹配。

 

突破思路

確定該APP是證書雙向認證,那么APP客戶端一定會存一個證書文件。通過對該APP解壓並進入payload目錄,發現只有一個.p12結尾的證書文件。

嘗試點開發現需要安裝密碼。

 

app解密的代碼邏輯

客戶端發送數據包以后,需要去從app中讀取這個證書文件,密碼是以硬編碼形式放在了代碼中,利用這個代碼中的密碼字段去解密證書文件,從中讀取以后,再進行解密並回傳給服務器端進行確認。由此推斷,尋找證書名稱應該就可以拿到安裝密碼。

 

獲取安裝證書密碼

首先對其APP進行砸殼,完成后我們解壓縮然后使用IDA加載二進制文件。

然后在String窗口搜索證書的名稱client,搜索后進入對應的類。

通過跟蹤發現了該證書密鑰,如下:

測試使用該密鑰發現可以成功安裝該證書:

 

burp添加客戶端證書

host填寫app服務端的主域名。

隨后選擇app客戶端內的client.p12證書文件,並輸入安裝密碼。

證書成功導入,勾選即可使用。

ok~發現可以正常抓包,如下。

參考文章,感謝各位大佬的傾情奉獻

https://se8s0n.github.io/2018/09/11/HTTP系列(五)/
https://xz.aliyun.com/t/6551#toc-14
https://juejin.im/post/5c9cbf1df265da60f6731f0a
https://www.secpulse.com/archives/54027.html


免責聲明!

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



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