安卓移動應用程式碼安全加固系統設計及實現

技術那些事發表於2020-05-20

安卓平臺已經逐漸成為最受歡迎的移動終端作業系統,基於安卓系統的軟體應用數量眾多,同時安全威脅也在不斷增加。介紹了Android系統的安全風險及加固的核心技術,據此提出了一種安卓應用程式的安全加固系統,設計和實現了基於程式碼混淆的加固技術,從而達到了移動應用安全 加固的目的。

安卓系統安全風險

在Android應用軟體迅速發展的同時,Android使用者也面臨著許多威脅。常見的惡意威脅如下:

1、惡意扣費

移動應用威脅中最常見的惡意行為是惡意扣費。威脅手段包括使用者在不知曉或者不知情的情況下,擅自使用非法手段讓使用者訂購各種收費,活在無意識狀態下使用手機支付服務的情況下,它會遮蔽服務簡訊傳送回服務提供商,破壞系統的正常功能。

2、隱私竊取

隱私竊取是近年來流行的一種應用威脅,它是使用者不知道的情況下擅自竊取使用者的秘密資訊。該病毒感染手機後,開始竊取使用者隱私資訊的背景,包括通話記錄、簡訊內容、地理位置、通訊錄、瀏覽器歷史記錄資訊,然後透過病毒上傳資訊到遠端伺服器被駭客控制。如果使用者在手機上有網路支付和其他行為,該賬戶的隱私也將是一個嚴重的威脅。

3、遠端控制

病毒會自動在後臺引導載人,並在使用者不知道或不授權的情況下與伺服器連線。進一步,透過與伺服器互動,在沒有許可權的情況下對受害手機進行控制,從而進一步扣除費用,下載惡意軟體和其他惡意行為。

4、資源消耗

在使用者不知道或者不授權的情況下,導致使用者收費的損失,自動傳送簡訊、多媒體簡訊、電子郵件、網路連線等。

5、惡意通訊

在使用者不知道或者不授權的情況下,傳播病毒或木馬本身,使得它的衍生工具或者其他移動網際網路惡意程式碼可以透過其進行復制、感染或者提供下載。

6、其他

病毒在後臺大量下載軟體,並消耗使用者手機流量,或者執行一些更耗電的操作來消耗手機的功率,從而影響正常手機通訊。

幾維安全 系統的實現

1、防逆向保護

針對Android應用的Java、C、C++程式碼採取混淆、虛擬化、加殼等安全保護措施,防止攻擊者透過逆向手段反編譯Dex和So檔案。同時滿足等保2.0中的資料保密性保護要求:應採取加密、混淆等措施,對移動應用程式進行保密性保護,防止被反編譯。

2、Dex檔案加殼

Dex檔案加殼可以防止dex2Jar、Apktool、AndroidKiller、JEB等逆向工具反編譯Dex檔案,從而避免Java程式碼被惡意分析、核心技術被竊取。Dex檔案加殼基於類載入的方式實現,對Classes.dex檔案進行整體加密,並拆解存放在APK的資源中,在APP應用執行時先在記憶體中解密Classes.dex,並讓Dalvik虛擬機器動態載入Dex並開始執行。

效果對比:

利用JEB反編譯原始Dex檔案效果如下,可以清晰看到原始的Java程式碼。

安卓加固-1.png

利用JEB反編譯已加密Dex檔案效果如下,只能看到kiwivm殼的程式碼,無法檢視原始Java程式碼。

安卓加固-2.png

3、Dex-Java2C保護

Dex-Java2C是針對Java函式進行深度加密,將Java自動化翻譯為C程式碼,並進行Native層的虛擬化加密,相比Dex檔案加殼粒度更細,安全更高。攻擊者無法還原Java函式,從而避免關鍵Java程式碼被惡意分析、核心技術被竊取。

Dex-Java2C基於LLVM編譯器實現,利用複雜的處理流程將Android-Dex指令程式碼轉換成LLVM-IR,然後利用LLVM後端編譯器直接生成【或者與程式碼虛擬化配合使用】Native指令。該方案的轉換是不可逆的,從根本上讓逆向工程不具備可行性,從達到保護關鍵Java程式碼的目的。

效果對比:

利用JEB反編譯原始Dex檔案效果如下,可以清晰看到原始的Java程式碼的函式體。

安卓加固-3.png

4、So檔案加殼

So檔案加殼可以防止IDA、ghidra等逆向工具的反編譯分析,從而避免C/C++程式碼被惡意分析,核心技術被竊取。So檔案加殼技術與Windows平臺的加殼技術類似,利用特殊的演算法對檔案進行加密處理、抹掉ELF格式中的關鍵節區描述資料,並行檔案壓縮儲存,從而造成IDA等工具解析失敗,達到防反編譯,保護C/C++程式碼的目的。

效果對比

採用IDA工具反編譯未加殼的So檔案,可以看到相關的函式資訊。

安卓加固-4.png

採用IDA工具反編譯已加殼的So檔案,出現解析錯誤,造成反編譯失敗

安卓加固-5.jpg

幾維安全安卓加固技術優勢

1、安全覆蓋全面

能夠保護應用Dex檔案和So檔案,並且提供主動防禦保護機制,全面保護APP安全;

2、安全強度高

獨家Dex-Java2C和原始碼虛擬化技術配合使用,對Java程式碼進行高強度加密,可抵擋專業駭客的逆向攻擊;

3、加密粒度細

以Java/C/C++程式碼的函式為單位進行加密保護,粒度細、可控性高、隱蔽性強;

4、相容性高

適配APP內的各種業務邏輯,並且高階版的Java2C透過中間程式碼進行加密保護,相容性與原始應用一致;

5、效能損耗低

Dex加殼方案的啟動時間增量小於1s,是業界做得最好的方案。Java函式級加密影響非常小,可以忽略不計。

Android 開發人員已經為廣大使用者開發出海量的應用程式,這給使用者帶來方便的同時也帶來了巨大的安全隱患。幾維安全在長期的攻防實戰之中推出了一站式、全生命週期移動安全解決方案,面對中小企業免費提供APP檢測與加固服務,登入幾維安全官網即可免費申請使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31481590/viewspace-2693345/,如需轉載,請註明出處,否則將追究法律責任。

相關文章