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

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

Leave a Reply

Your email address will not be published. Required fields are marked *