Android逆向之旅---逆向「某借款理財App第一版」防抓包策略

​一、前言

最近在編碼美麗小密圈裏面有人問了最近很多app都做了應用防抓包策略,沒法抓包了,這個最近我正好需要手機樣本然後分析出現在大部分的應用的防抓包策略,整理說一下,當然前提需要先分析多個樣本才能總結,所以就在小密圈裏收到了很多人反饋的一些app,後續會對這些樣本進行防抓包策略分析,今天首先來看一下這款借款理財應用的防抓包策略。

 

二、逆向抓包分析

首先我下載了最新的版本應用之後,按照正規流程來先裝Charles證書,然後開始抓包,一般有防護的這時候都是失敗的:

這裏毋庸置疑,直接用通用的Xposed工具JustTrustMe工具,不過可惜的是這個工具沒生效,因爲這個工具是有日誌輸出的,可以直接通過日誌查看發現日誌也沒有,也就是說這個工具Hook失敗無效了,然後Jadx中查看代碼:

 

因爲懷疑他對Xposed等hook工具做了防護,所以全局搜索Xposed即可看到的確有一個Hook檢查類,不過可惜的是這個這裏的方法全局搜索都沒有地方調用,可能懷疑在so中用反射調用的,當然要去分析so,不過可惜的這不是我們本文的目的,因爲這個工作要到後面的第二版逆向來做了,到這裏我們知道他最新版已經做了Xposed防護了,所以那個工具沒用了,那麼到這裏我們怎麼辦呢?其實按照之前的思路是最新版有問題,可以碰運氣去看他的歷史版本最好是越早越好,當然網上搜到了他的第一版,發現的確沒有做防護,直接用JustTrustMe就可以抓包了:

這裏看到了可以正常抓包了,不過可惜的是沒法用,因爲大家都能猜到,應用在新版做了防護,不可能讓你在繼續使用舊版的,所以會有一個強提示升級:

如果不更新肯定是沒法用的,所以這時候怎麼辦呢?其實很簡單直接把本地版本號改成最新版即可,這個直接修改AndroidManifest.xml文件即可:

然後回編譯即可。


拓展說明:
首先第一版app我們會發現這個應用幾乎是所有防護都沒做,用最新的apktool工具即可反編譯和回編譯操作,沒有任何報錯,由此發現這個應用在第一版是多麼忽略安全問題,最主要是這個應用還是一個借款的應用,之前說過有些應用不選擇安全防護因爲需要犧牲一些成本或者性能問題,但是對於涉及到錢財的應用第一個想法不是把應用趕緊做出來,而是需要把安全放到第一位,如果安全不過關最好不要發版,因爲那是對用戶不負責任!

 

好了上面說的一些題外話,繼續看改了版本號之後安裝再看,還是一樣沒效果,這個後面再說爲什麼,那麼我們全局搜索這個更新提示信息:

繼續查看:

看到這裏有個更新對話框展示邏輯,有個強更新判斷,這個簡單直接找到對應的smali代碼註釋即可:

然後再回編譯回去安裝運行:

我們點擊登錄的時候發現彈出提示還是說版本過低,這個就是和上面那個問題一樣,我們雖然修改了AndroidManifest.xml中的值爲最新版其實沒什麼用,那麼就看看他是怎麼讀取版本號的:

繼續抓包看看他的上傳信息裏面也沒有攜帶版本號信息,這個就需要想到我們之前在逆向秒拍的簽名算法的時候就遇到了,除了這個上傳參數地方可以加數據,還有一個地方就是Header信息中:

果然在Headers中攜帶了很多信息,他把這些信息放到了Headers字段中了,看到這裏的版本號的確還是第一版的值,然後全局搜索這個字段:

看到這裏的定義值,繼續看方法:

這裏讀取的是一個常量值:

這裏竟然是直接讀取常量值版本號,不是調用系統Api讀取xml中的versionCode的,所以上面看到的確是無效的,所以以後如果發現改了xml裏面的版本號無效就全局搜索版本號值,那麼知道這個地方了,修改最新版即可,不過這裏其實有個坑,因爲我們知道Android編譯過程中會做優化操作,會把static final類型的值直接全局替換到指定用到的地方,所以現在看看全局用到的地方:

這裏直接用命令搜索:0x2715=10005,看到其實還是蠻多的,如果笨一點的方法就是依次把這些文件打開替換成最新的版本即可:0x4f4d=20301,不過笨辦法的操作這裏就不說了,這裏我們可以利用Mac中的命令全局替換,說到這裏真的不得不說Mac中的命令行工具比Windows強大不少,感覺還是Mac更適合開發哈哈哈,不過可惜的是現在很多好用的破解小工具都是在Windows下編寫的,Mac上沒法使用,這一點挺可惜的

全局替換命令很常用,大家可以記住:

Mac中查找命令:

find . |xargs grep -ri "find_str" 或者 grep -rn "find_str" /.

Mac中查找全局替換內容:

grep -rl 'src_str' ./ |xargs sed -i "" "s/src_str/new_str/g"

 

通過上面的命令我們就把全局的版本號替換成最新的了,然後再回編譯運行即可:

這時候在登錄就成功了,然後就是信息認證的過程了:

 

這裏有個諷刺的地方,他每個頁面都聲稱是銀行加密標準,結果登錄接口竟然把密碼明文上傳:

 

三、知識點回顧

好了到這裏我們其實已經過掉他的防抓包策略,可以正常抓包了,只是這個不是真正意義上的過掉,而是我們用了一個巧妙的方式操作的,所以通過本文我們可以學習到這些重要知識點:

  • 第一、當我們抓包發現我們想要的信息沒有在請求參數列表中,有可能藏在Headers字段中

  • 第二、如果發現一些應用抓包防護很厲害,即使一些工具也沒法用,可以曲線救國碰運氣的去找他的歷史版本,因爲現在的應用製作非常浮躁,第一版都覺得先把功能做好就上線了,後續版本再說安全問題,那麼這時候我們就可以去弄舊版本,當然這時候需要解決強更新操作

  • 第三、如果有的應用有強更新操作,但是我們又不想更新,可以直接修改xml中的versionCode值來進行操作,但是如果發現失敗了,可以直接全局搜索反編譯之後的代碼中是否有指定的版本號,如果有直接用命令全局替換即可

 

嚴重說明

本文的目的只有一個就是學習逆向分析技巧,如果有人利用本文技術進行非法操作帶來的後果都是操作者自己承擔,和本文以及本文作者沒有任何關係,本文涉及到的代碼項目可以去編碼美麗小密圈自取,長按下方二維碼加入小密圈一起學習探討技術

 

四、總結

感覺這個應用的第一版作爲這種借款類型的應用幾乎是不合格的就發佈了,對用戶來說信息安全是最重要的,雖然在最新版進行了防護操作,其實也就是hook防護,簽名防護等,這個後續還會繼續出第二版的操作過程,敬請期待!

 

《Android應用安全防護和逆向分析》

點擊立即購買:京東  天貓  

更多內容:點擊這裏

關注微信公衆號,最新技術乾貨實時推送

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