*oulapp的雙向證書破解

*oulapp的雙向證書破解

今天簡單說一下雙向證書的破解,順便說一個比較好用的工具,案例: c291bA==

破解雙向證書:
之前見過單向證書校驗,比如企查查、餓了麼等,這個最簡單的方法就是使用JustTrustMe,當然這個要依賴Xposed,手機沒有root的話,你也可以使用太極、 VirtualXposed 等一些免root的xposed框架,這裏就不主要說了,今天的重點是雙向證書校驗的破解。
雙向證書校驗顧名思義,就是雙向認證,服務端會校驗客戶端(也就是我們的app)的證書;客戶端也會校驗服務端的證書,先來看看這篇文章的資料。SSL/TLS 雙向認證(一) — SSL/TLS工作原理_網絡_ustccw-CSDN博客,看完這篇文章就可以瞭解到,對於雙向證書校驗要破解有:
1. 證書密碼
2. cer或者p12證書
知道上邊兩點,那就開始探索這個app吧。

定位

下載一個app(豌豆莢下載最新版),然後在資源文件裏面找cer或者p12證書文件。


直接找到,省了很多事。。。。
然後我們要繼續看它的證書密碼了,這個先來逆向反編譯看一看。然後我們全局搜他的關鍵詞client.cer(我這裏用的是jadx)。

如上邊的圖,直接就定位到了(第一個是全局變量,可以直接去看第二個,這裏jadx反編譯沒全部成功,但是也能閱讀),我們跳轉看看。

又找到了它的關鍵點load,這個load是幹什麼的呢???
KeyStore (Java 2 Platform SE 6)根據JavaApi文檔來看,

第一個參數就是證書的文件io,可以不用管,第二個參數就是我們需要的證書密碼,這裏就很方便的找到了hook點(我們也可以直接根據jadx來分析他的的構造)。

上邊是三個步驟中第一步和第二步就是他最後需要的處理密碼的地方,透露一下,這是最後追蹤到native了,這裏我們繼續看,看a方法在哪。


找到這個方法的實例化位置,然後在SoulNetworkSDK這個類下面找a方法。

這獲取密碼,名字都很那啥。就跟那啥似的。我們繼續查找用例。下圖就是我們最後需要的。

HOOK

現在到了hook的時候,打開frida,打開開發工具。。。。。。。其實這裏有個問題,它密碼會不會在app啓動的時候就已經初始化了呢??
firda的spawn是可以應對這種問題的(這裏我嘗試好幾次,都沒hook到,應該是我使用方法有問題。),但是我們今天要說的是另外一個xposed工具,很方便、經常用、10幾分鐘一個算法都有可能。
工具就是:Inspeckage [GitHub - ac-pm/Inspeckage: Android Package Inspector - dynamic analysis with api hooks, start unexported activities and more. (Xposed Module)](https://github.com/ac-pm/Inspeckage) 

這是我之前看的一篇文章也推薦給大家。Inspeckage使用筆記(app安全檢測工具)_移動開發_coderchc的專欄-CSDN博客
我們安裝Inspeckage,然後在xposed裏面打鉤、重啓.


記得先在電腦執行adb forward tcp:8008 tcp:8008 ,並打開127.0.0.1:8008

現在打開app,等待出現密碼。。。。。(這裏我清理了app數據,密碼纔出來)

驗證

有了密碼和證書,我們就該做爬蟲改乾的事了。
這裏推薦一個[GitHub - m-click/requests_pkcs12: Add PKCS#12 support to the Python requests library in a clean way, without monkey patching or temporary files](https://github.com/m-click/requests_pkcs12)框架,有p12和密碼就能直接請求。

錯誤:

正確:

導入Charles

這裏我比較喜歡用Charles,不喜歡fd

最後就確定,開始抓包玩吧。。。。
這個app的參數破解挺有意思,喜歡的可以抽時間玩玩。
全篇廢話較多,想什麼寫什麼,思維有點跳躍。
以上分析僅用於學習交流。
歡迎關注小白微信公衆號【小白技術社】,一起學習一起交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章