2016年8月26日 星期五

【資安小百科】當安卓遇上虎克 : Android Hook - Xposed Framework

這次我們將介紹 Android Hook 概述,以 Xposed 框架(Framework)為例,並實作 System Clock 的修改!在此提醒,此份文件僅共學術研究,後果請自行負責(逃~。 XD

◆ Hook 介紹
  Hook 英文單字為鉤子,其概念也如同鉤子一樣,意旨利用鉤子把 Android 系統內額外想要處理的流程資訊勾出來(Hook)並於修改後放回原處。  在 Android 中可將滲透測試分為兩種類別:靜態與動態。常見的靜態分析是經過反編譯 APK 後,透過分析程式碼來理解整個 APP 運作流程並找尋是否有程式漏洞或人見人愛的Hard Code;動態則是在 APP 執行中,經由封包解析、Log 監看和 Hook 技術等方法來蒐集、監聽、試著竄改傳輸時的資料。
  可以監聽 APP 與系統的通訊內容、也能竄改內部傳遞的相關資料,若想要透過Hook技術進行滲透測試,需要知道想監聽的服務和方法為何,再透過程式碼撰寫出Hook的行為。

◆ Zygote 介紹
  Zygote 是 Android 的核心之一,由 init.rc 文件所建立的服務。其設計目的是為了降低系統記憶體與處理時間,透過共享的概念,讓新孵化出的程序不需要重新裝載一次資源。所有的系統服務(system server)以及APP(com.xxx.xxx….)都會經由 Zygote 孵化出來,舉例來說,當 ActivityManagerService 需要啟動一個新的服務,會通過 Socket 與 Zygote 進行溝通,以請求 Zygote fork 一個新的程序出來。而這個 fork 的行為,就會執行/system/bin/app_process,並產生出一個新的 app_process, app_process 就可以啟動一個新的服務了。

◆ Xposed 簡介
  Xposed 是一套框架服務,能在不修改 APK 的狀況下,對 Java 層的函數進行 Hook,進而影響手機程序(Process)執行。其原理是透過覆蓋原有的 app_process 程序,讓每個 APP 啟動時能經過 Xposed,之後使用者就可透過該框架對目標服務或 APP 進行監聽或資料修改。若您對此有興趣,也可自行製作模組並透過 Xposed 執行,或是到 Xposed Module Repository(http://repo.xposed.info/)找免費的模組來玩。


  • 若有任何問題,歡迎與我們聯繫:hgservice@hitcon.org

主講者:Elven Liu