Android Security Test Suite 開發套件 (STS SDK)

安全測試套件 Trade Federation (sts-tradefed) 是建構在 Android Trade Federation 測試套件之上,可測試所有 Android 裝置,以便進行不屬於相容性測試套件的安全性修補程式測試。這些測試僅適用於與常見安全漏洞與資料外洩風險 (CVE) 相關 (或將相關) 的修正程式。

這個 SDK 可讓您使用 Android Studio 或標準 Android SDK,在 Android 來源樹狀結構之外開發 STS 測試。其中包含建構及執行 STS 測試所需的所有公用程式。

取得最新版 STS SDK

必要條件

  • 64 位元 Linux 電腦。
  • Android Studio (也可以透過發行的套件管理員安裝)。
  • 您必須安裝 Android 平台工具 (adbfastboot),並將其放在 $PATH 中 (也就是說,您應該可以透過指令列執行 adb)。如要安裝平台工具,最簡單的方法是透過發布板的套件管理工具。
    • 如果使用 Android Studio 的 SDK Manager,而非獨立的平台工具,請記得將 SDK 的 platform-tools 目錄新增至 $PATH。
  • aapt,也可以透過發布版本的套件管理工具安裝。

開始使用 Android Studio

解壓縮封存檔後,請在 Android Studio 中將目錄設為現有專案。根據目標 Android 裝置的架構,執行 assembleSTSARMassembleSTSx86 建構目標來建構架構測試。執行 runSTS 建構目標,即可在已連結的裝置上執行骨架測試 (必須授權 ADB)。

開始使用 Gradle

擷取封存檔後,請在 Gradle 專案根目錄的 local.properties 檔案中設定 sdk.dir 屬性,然後執行 assembleSTSARM Gradle 工作來建構骨架測試。建構完成後,要執行測試,方法是前往 (cd) 加入 build/android-sts/tools 並執行 sts-tradefed 包裝函式。

$ echo 'sdk.dir=/home/<myusername>/Android/Sdk' > local.properties
$ ./gradlew assembleSTSARM
$ cd build/android-sts/tools
$ ./sts-tradefed run sts-dynamic-develop -m hostsidetest

編寫 STS 測試

STS 測試包含三個部分:

  1. 透過 ADB 與裝置互動的主機端交易測試,位於 sts-test 子目錄。
  2. 一種選用的原生概念驗證攻擊,會透過 adb push 推送至裝置,並透過 native-poc 子目錄中的主機端測試執行。
  3. 透過 adb install 安裝在裝置上,且由主機端測試啟動的選用應用程式或服務 APK。應用程式或服務也可以包含自己的 JUnit 斷言組合,並回報給主機端執行程式。這個檔案位於 test-app 子目錄中。

典型的 STS 測試流程通常會遵循下列兩種模式之一:

  • 原生概念驗證:

    1. 主機端測試會在裝置上推送及啟動原生可執行檔。
    2. 原生程式異常終止或傳回特定的結束代碼。
    3. 主機端測試會檢查當機情形、查看 logcat 回溯追蹤,或查看特定結束碼,以判斷攻擊是否成功。
  • 檢測設備測試應用程式:

    1. 主機端測試會將包含應用程式或服務的 APK 推送至裝置。
    2. 主機端測試會透過 runDeviceTest() 啟動 APK 隨附的裝置端 JUnit 測試
    3. 裝置端的 JUnit 測試輕觸按鈕,並使用 UIAutomator 監控應用程式,或以揭露安全漏洞的方式存取 Android 系統。
    4. 裝置端 JUnit 測試的成功或失敗結果會傳回至主機端測試,可用於判斷測試是否通過。

此外,也可以結合兩種模式 (例如,搭配裝置端測試執行原生程式)。您也可以使用其他一些檢測架構,例如 frida-inject。詳情請參閱安全測試套件參考文件交易參考文件

概念驗證攻擊不需要測試應用程式或原生執行檔

大多數測試都不需要同時使用裝置端應用程式和原生執行檔。

如果測試不涉及使用裝置端應用程式/服務,請直接刪除 test-app 子目錄。同樣地,如果您的測試並未使用原生執行檔,請刪除 native-poc 子目錄,然後用 Gradle 同步處理專案。專案會在這些模組不存在時,自動略過建構這些模組。

我的概念驗證攻擊涉及第二個應用程式/服務

首先,在專案中為第二個應用程式/服務新增模組,並編寫方式與任何其他 APK 相同。

接著,請編輯這個目錄根目錄中的 build.gradle,並按照 copyArtifactsassembleStsARMassembleStsx86 中的操作說明新增模組。這樣做可確保已編譯的 APK 會複製到 STS 的輸出目錄,並在測試中安裝/呼叫新應用程式。

最後,Gradle 會同步處理專案。

提交 STS 測試

執行 zipForSubmission 工作 (透過 Android Studio 或在指令列使用 Gradle)。新檔案 codesubmission.zip 應在專案根目錄的 build 目錄中建立。請將該檔案與提交至 Android 安全漏洞獎勵計畫的內容一併上傳。