巧破某報價大全APP加密引數-iOS逆向抓取

王平發表於2020-06-09

iOS作為一種閉源系統,沒有Android那麼多的packers和so庫,iOS官方封裝了自己統一的Crypto庫,所以我們HOOK起來也很方便。我以某報價大全 iOS v10.5.5版為例,記錄一下巧破加密引數的過程和一些知識點。

此次逆向教程使用到的工具如下:

一部越獄iPhone或iPad

抓包工具:Charles

Hook 框架:frida v12.8.11

一、抓包分析

通過Charles抓取目標APP列表頁請求的資料,我們發現含有32位的“sign”引數,且向下滑動載入更多時“sign”引數都會變化。兩次抓包請求引數對比如下圖:

iOS逆向抓取-巧破某報價大全APP加密引數1

通過對比抓包資料,我們猜測可能使用了MD5加密演算法,接下來我們就用frida-trace監控iOS系統封裝的CC_MD5加密函式,看能不能巧破該APP的“sign”引數。

二、frida-trace分析

首先通過 frida-ps -Ua (請自行安裝frida)檢視目標APP的程式id為4934:
iOS逆向抓取-巧破某報價大全APP加密引數2

 

再通過frida-trace跟蹤“CC_MD5”函式,命令如下:

iOS逆向抓取-巧破某報價大全APP加密引數3

 

frida-trace引數說明如下:

-U                  使用USB資料線連線裝置

-i                    追蹤函式

“CC_MD5”    要追蹤的函式名

4934              目標APP程式id

接著在終端介面按 Ctrl+C 停止執行。然後在__handlers__/ASEProcessing資料夾中找到CC_MD5.js檔案,將程式碼修改為如下並儲存:

iOS逆向抓取-巧破某報價大全APP加密引數4

 

以上程式碼會在追蹤到CC_MD5函式步入時列印待加密的引數值,步出時列印加密後的md5返回值。
接著我們繼續使用之前的命令執行frida-trace,然後在目標APP列表頁繼續滑動即可看到frida-trace追蹤到的引數和返回值。然後我們用Charles抓包看到的sign值到frida-trace視窗中搜尋即可找到對應引數,如下圖:

iOS逆向抓取-巧破某報價大全APP加密引數5

對比請求的url和加密引數:
-請求的url:api.ashx?cateid=3&cityid=&method=news.list&pageindex=3&pagesize=25&productid=7&serialid=&sign=fbe1c8222424f38371f0b59592a6293b-加密的引數:?cateid=3&cityid=&method=news.list&pageindex=3&pagesize=25&productid=7&serialid=2CB3147B-D93C-964B-47AE-EEE448C84E3C

請求url中標註部分與加密引數標註部分完全一致,我們可以確定鹽值為:2CB3147B-D93C-964B-47AE-EEE448C84E3C。至此“sign”引數md5加密演算法不攻自破了。

iOS逆向抓取-巧破某報價大全APP加密引數6

 

三、總結

本文重點在通過Charles抓包看到“sign”引數為32位字串,猜測是md5加密,從而使用frida-trace監控目標APP是否使用了iOS系統封裝的CC_MD5加密函式。之後一擊即中巧破了“sign”引數加密演算法。

對於我們爬蟲工作者在抓取資料時遇到加密“sign”引數,首先可以猜測其大致的演算法,之後用frida-trace去監測系統預設的加密函式,比如iOS系統的:CC_MD5,CC_SHA1,CCHmac等,有可能會有意想不到的收穫。如果此方法行不通,我們可以再去想辦法逆向分析。

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章