• 如何反向工程 Android APK並尋找敏感性資訊?

    這篇文章主要說明如何將一個Android的應用程式反組譯,讓我們可以進一步分析

    這個Android App是否有讀取或是含有敏感性資訊。

    透過這篇文章說明Android App反向工程的技巧與工具。

    基本步驟

    1. 透過APKtool 反組譯Android APK

    2. 分析APKTool 所產生的檔案(特別是 YML, XML, Smali),並且尋找關鍵字 (電子信箱、帳號、密碼等)

    3. 將步驟1與2自動化

    如何下載與安裝 APKtool?

    筆者建議這個套裝工具,Appie

    可以執行於Windows/Linux,包含所有Android APK所需要用到的分析工具

    http://sourceforge.net/projects/appiefiles/files/

    Reverse Engineering APK簡介

    一般的APK檔案,可以使用WinZip 或是一般的解壓縮工具開啟,

    APK open by ZIP

    APK檔案結構

    使用APKtool 的工具,將APK的內容進行反組譯,

    apktool   d   xxxx.apk

    APKTool執行後,會得到下列的檔案結構

    • META-INF (APK 檔案的認證資訊)
      • MANIFEST.MF
      • CERT.RSA—The certificate of the application.
      • CERT.SF—The list of resources and SHA-1 digest of the corresponding lines in the Manifest.MF file.
    • lib: (每個不同處理器的編譯碼)
      • armeabi—compiled code for all ARM based processors only.
      • armeabi-v7a—compiled code for all ARMv7 and above based processors only.
      • x86—compiled code for x86 processors only.
      • mips—compiled code for MIPS processors only.
    • assets: 應用程式相關的資源檔案
    • AndroidManifest.xml
    • classes.dex:  Dalvik virtual machine的程式執行碼
    • resources.arsc : pre-compiled 的資源檔案.
    • res: 資源檔案
    • smali: 讓人比較好閱讀的反編譯程式碼

    我們就可以針對輸出的檔案進行搜尋,看看是包含有敏感性的關鍵字。

    例如:IP位址、電子郵件、帳號密碼等。

     

    敏感性關鍵字搜尋

    哪些關鍵字是我們要搜尋的呢?

    IP位址,看看是否有異常的IP位址對外傳輸資訊,用regular expression 表示法如下

    • ip = re.compile(((?:\d{1,3}\.){3}\d{1,3}))

    email,是否有異常的email信箱傳輸資訊,用regular expression 表示法如下

    • email=re.compile(([\w.]+)@([\w.]+))

    其它關鍵字,例如帳號、密碼等關鍵字

    • pwlist,sql,dbconnect,dbname,username,pass,passwd,pwd,user,IMEI,connecTodb,dbname,server,API, apikey,api,ftp:

     

    檔案類型

    哪些檔案類型是我們主要關心的呢? XML、Smali、YML

    [‘.xml’,’.smali’,’.yml’]

     

    自動化整個過程(moblizer)

    這個python程式 moblizer會將所指定的APK先執行APKtool反組譯後,

    針對 XML, Smali, YML等檔案,進行檔案內容特殊關鍵字(IP, email, 帳號密碼)的搜尋,

    如果有搜尋到特殊關鍵字,則列印出找到的檔案與行數。

    1. 下載moblizer.py 至Apktool目錄
    2. 將APK檔案拷貝至該目錄
    3. Python   moblizer.py

     

    Mobilizer程式碼

    https://github.com/SudhanshuC/Android-Testing/blob/master/moblizer

    (Windows執行,將程式中,修改為 call([‘apktool.bat‘,’d’,b]))

    Posted by Tony @ 11:47 pm

  • Leave a Reply

    Your email address will not be published.