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呢?
方法一:
- Connect to WIFI network (e.g. ‘Alex’)
- Settings->WIFI
- Long tap on connected network’s name (e.g. on ‘Alex’)
- Modify network config-> Show advanced options
- 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的內容。
- apktool https://code.google.com/p/android-apktool/
- dex2jar https://code.google.com/p/dex2jar/
- JD-GUI http://jd.benow.ca/
這三個測試工具也包含在上述 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
VirusTotal 分析報告範例
VirusTotal https://www.virustotal.com
DexTer 分析報告範例
Dexter http://dexter.dexlabs.org/