• 5+ Android 安全(駭客)測試必備工具密技

    這篇文章主要說明對於 Android App 進行資訊安全測試 (駭客攻擊)時,

    安全測試有哪些測試工具是必備,也是筆者強烈推薦一定要學會的。

    手機Android App因為開放,所以容易導致的安全或是駭客攻擊也比較多。

    手機Android App的安全測試工具與一般網站或是Windows電腦等還是有所不同。

    筆者針對Android App安全測試所特別必備的工具說明。

    All in one 工具包

    Appie (Android Pentesting Portable Integrated Environment)

    筆者個人使用這個工具包。幾乎包含所有必要的Android 測試工具。Windows/Linux 都可以執行。

    https://manifestsecurity.com/appie/

     

    Man in the Middle (Web Proxy)

    由於大部分的手機應用程式會透過 Http/Https 與遠端網站溝通,

    因此可以將手機與伺服器間的訊息溝通透過 web proxy,模擬 Man in the Middle,

    透過這個方式可以修改任何 Http Request,並且檢視溝通訊息中是否有敏感性資訊。

    這樣的工具有很多,筆者推薦兩個免費且功能強大的Web Proxy工具。

    如果使用上述的 Appie,內建也有 Burp不需要額外安裝。

    Android 手機如何設定連接到 WebProxy呢?

    方法一:

    1. Connect to WIFI network (e.g. ‘Alex’)
    2. Settings->WIFI
    3. Long tap on connected network’s name (e.g. on ‘Alex’)
    4. Modify network config-> Show advanced options
    5. Set proxy settings

    方法二: 透過 Emulator 啟動參數

    emulator -avd myavd -http-proxy 168.192.1.2:8080

    Reverse Engineering

    另外一個常見的技巧就是將 Android APK檔案進行 reverse Engineering。

    主要分析檔案結構與內容、Android Manifest.xml權限與Activity的設定、程式碼 Java的內容。

    這三個測試工具也包含在上述 Appie的工具包中。

    Reverse Engineering 三個步驟

    第一步驟: 原始檔案結構與內容 AndroidManifest.xml

    這個步驟可以將APK檔案內容還原成原始檔案,並且得到 AndroidManifest.xml 與其他 resource 檔案。

    java –jar    apktool.jar   d    Testing.apk

    產生的檔案smali 可以讓我知知道相關的 ContentProvider.smali

    例如: “content://com.testing.contentprovider.MyProvider/details”

    接著利用 adb shell 的指令查詢,

    content   query  –uri   content://com.testing.contentprovider.MyProvider/details

    (或是可以參考這篇  如何得知手機程式的 Package與Launch Activity Name?)

     

    第二步驟: 產生 JAR

    這個步驟主要將 APK檔案還原為 JAR,

    dex2jar     Testing.APK

     

    第三步驟: 原始程式碼

    接著我們就可以用 JD-GUI將JAR開啟,看到還原的Java 原始程式碼。

    啟動 JD-GUI  > 開啟  Testing.APK

     

    ADB 基本指令使用

    Android Security Testing 會用到一些 ADB 基本的指令。

    情境 指令
    安裝 APK adb install   Testing.apk
     輸出所有相關 Log檢視是否有敏感性資訊 adb  shell  logcat
     檢查目前是否有連接的 Android or Emulator adb devices
     拷貝或是複製檔案到 Andorid to/from PC複製檔案到記憶卡位置 adb -e push <name of file to be copied to emulator>adb –e pull <name of file to be copied to PC>adb push <fileName> /mnt/sdcard/
    檢查 Android 版本資訊 adb versioncat /proc/version
    重新啟動 Android ADB adb start-serveradb kill-server
    取得應用程式 SQLite資料庫 adb  pull  /data/data/<PackageName>/Databases/SQLite.DB
    查詢 Content Provider 資訊 adb  shellcontent query –uri  content://<PackageNAme>/XXXX
    啟動特定 Activity, services adb  shellam   start  -n  PackageName/.ActivityName(適用於 AndroidManifest.xml中,定義為 exported=”true”)am startservice <package name>/<component name> <INTENT>
    列出所有 world readable檔案列出所有 world writable檔案 find [path-to-search] –perm 0444 –exec ls –al {} \;find [path-to-search] –perm 0222 –exec ls –al {} \;
    所有使用者都有執行權限 find [path-to-search] –perm 0111 –exec ls –al {} \;
     列出所有安裝程式  pm list packages

     讀取SQLite資料庫

    1. 將SQLite資料庫從 emulator拷貝出來

    adb pull /data/data/[package-name]/databases/[databasefilename]

    2. 檢視資料庫內容

    可以使用 sqlite3 [database-filename]

    或是筆者建議可以使用FireFox這個 addon ,簡單好用。

    https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

     

    雲端Android 靜態與動態分析

    上述工具某些程度需要自己動手分析,有沒有全自動的分析呢?

    我們可以靠一些雲端工具幫忙,將 APK上傳後,該雲端分析就會給一個資訊安全風險分析報告。

    下列是筆者推薦的雲端分析工具。其他線上分析工具可另外參考這篇 (http://www.qa-knowhow.com/?p=3252)

    • VisualThreat http://cn.visualthreat.com (推薦: 由病毒分析的角度,提供完整靜態與動態執行時的分析報告)
    • VirusTotal https://www.virustotal.com (推薦: 由病毒分析的角度,提供完整靜態與動態執行時的分析報告)
    • Dexter http://dexter.dexlabs.org/ (推薦: 主要是提供原始程式碼的分析。用各式圖形化的呈現原始程式碼物件間的關係。)

    透過這些工具分析完之後,接著要做什麼防護措施呢?  可以參考筆者這篇文章

    10+個Android 安全設計風險實務個案討論 http://www.qa-knowhow.com/?p=3309

     

    VisualThreat分析報告範例

    VisualThreat http://cn.visualthreat.com

    VisualThreat1

     

    VirusTotal 分析報告範例

    VirusTotal https://www.virustotal.com

    DexTer 分析報告範例

    Dexter http://dexter.dexlabs.org/

    ../_images/analysis1.png

    Posted by Tony @ 1:03 pm

  • Leave a Reply

    Your email address will not be published.