知物由學 | Android應用破解與防護,阻斷猖獗的應用亂象

網易易盾發表於2022-03-30

壹:前言

大資料時代,移動應用(APP)數量多、應用領域也廣泛。APP遭破解而導致資料被竊取、個人隱私資訊洩露、被盜版山寨的事件並不少見,不僅危害著使用者資訊保安與財產安全,也影響到正版開發者的智慧財產權經營。

據國家網際網路金融風險分析技術平臺釋出的監測資料,截至2020年2月底,發現網際網路金融盜版網站4.81萬個,受害使用者達12萬人次,網際網路金融盜版APP2801個,盜版APP下載量3343.7萬次。

APP的破解與反破解是Android應用攻防領域的永恆主題,由此衍生了許多攻防對抗的技術手段,如加殼與脫殼,除錯與反除錯等。本文以Android APP的二次打包與防護為例,梳理下常見的攻防對抗手段,從源頭提高APP的安全性。

貳:二次打包

通常對APP進行二次打包的步驟是:解包(反編譯)-->插入/篡改程式碼-->生成新包-->重簽名-->執行。簡單而言,破解者首先將APK包反編譯,對反編譯後產生的smali檔案中的關鍵程式碼進行篡改,再回編譯重簽名,從而實現破解的需求,如去除廣告、修改VIP會員狀態、內購破解等。

從APP被二次打包的整個流程可見,對APP進行防護,主要有以下幾個重要環節。

一、簽名效驗:在執行時校驗簽名,校驗簽名是否被篡改,在重簽名環節進行對抗。

二、檔案完整性校驗:在執行時對APK檔案進行校驗,校驗關鍵檔案是否被篡改,在生成新包環節進行對抗。

三、方法校驗:在執行時校驗關鍵函式,校驗方法是否被篡改,在篡改程式碼環節進行對抗。

一般的加固防護方案採取對APK檔案進行加固的方法,並在執行時對APK中的簽名和檔案進行校驗。隨著對抗的升級,加固保護技術原理已經被破解者充分研究。在此現狀下,傳統的保護手段容易被輕鬆繞過,具體看下面的案例。

叄:破解案例

某影視影片製作APP上線後不久被破解,導致其付費功能被免費使用。技術人員透過分析破解包,發現破解者替換了classes.dex檔案,透過類似熱更的方式篡改了付費相關邏輯;修改了AndroidManifest.xml配置檔案中的Application接管APP執行的入口;並且在APK的assets目錄下插入了用於hook的so檔案與外掛檔案,如下所示:

知物由學 | Android應用破解與防護,阻斷猖獗的應用亂象

在對抗APP自身的安全防護方面,破解包Hook了java層簽名,以獲取介面用來繞過APP的簽名校驗。另外,在執行時,破解者解壓出了原APK包,重定向APK的路徑到解壓出的原APK包路徑。傳統的完整性校驗以及native層的簽名校驗,因此而失效。這是由於輸入的APK路徑已經被劫持了,使用“偽造”的原包APK路徑進行校驗,無法檢測到破解行為。

知物由學 | Android應用破解與防護,阻斷猖獗的應用亂象

肆:對抗方案

針對這些破解與繞過的技術手段,易盾Android應用加固方案有針對性地增強了“簽名校驗”與“檔案完整性校驗”的強度,並且增加了執行時方法級校驗功能,可以在各環節有效遏制二次打包,讓應用遠離破解的威脅。

1簽名效驗

對Android系統獲取簽名相關介面進行校驗,如果發現被Hook則主動閃退,並且對PMS Hook方式繞過簽名校驗的行為進行檢測,使這種簽名繞過方式失效。

2完整性校驗

加固時對APK中關鍵檔案資訊進行快取,APP執行時獲取APK路徑並遍歷其中檔案,對比加固過程中快取的檔案資訊,發現被篡改則主動閃退。在獲取APK路徑時進行校驗,發現被重定向則主動退出,避免透過重定向攻擊完整性校驗導致校驗無效。

3方法級校驗

加固時對關鍵方法資訊抽取快取,APP執行時接管系統關鍵介面,當呼叫關鍵方法時,對其指令特徵進行校驗,發現特徵被篡改,則主動閃退。

4對抗效果

在接入易盾升級對抗的加固方案後,APP反饋線上破解風險得到有效遏制。

知物由學 | Android應用破解與防護,阻斷猖獗的應用亂象

伍:結語

本文總結了易盾在Android應用加固防護方案中,透過簽名校驗、完整性校驗、方法級校驗等方式,經過線上驗證,能夠起到較好的對抗效果。

然而,在利益的趨勢下,APP破解與盜版亂象形成了盤根錯節的灰色產業鏈,破解與反破解的攻防對抗還在不斷的持續演進。對此,易盾的安全團隊將持續跟進最新的破解手段,迭代保護方案,集合盜版監測、資料分析與風險預報等環節,不斷提升反破解的效果。


相關文章