安全測試套件 Trade Federation (sts-tradefed) 建構在Android Trade Federation測試工具之上,用於測試所有 Android 設備,以進行不屬於相容性測試套件的安全性修補程式測試。這些測試專門針對與常見漏洞和揭露 (CVE) 相關(或將相關)的修復。
該 SDK 允許使用 Android Studio 或標準 Android SDK 在 Android 原始碼樹之外開發 STS 測試。它包括建置和運行 STS 測試所需的所有實用程式。
先決條件
- 64 位元 Linux 電腦。
- Android Studio (也可以從發行版的套件管理器安裝。
- Android 平台工具(
adb
、fastboot
)需要安裝並位於您的$PATH
中(即您應該能夠從命令列運行adb
)。安裝平台工具最簡單的方法是透過發行版的套件管理器。- 如果使用 Android Studio 的 SDK 管理員而不是獨立的平台工具,請記得將 SDK 的
platform-tools
目錄加入 $PATH 中。
- 如果使用 Android Studio 的 SDK 管理員而不是獨立的平台工具,請記得將 SDK 的
- aapt ,也可以透過發行版的套件管理器安裝。
開始使用 Android Studio
解壓縮存檔後,在 Android Studio 中將目錄作為現有項目開啟。執行assembleSTSARM
或assembleSTSx86
建置目標來建置框架測試,取決於目標 Android 裝置的架構。執行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 測驗分為三個部分:
- 主機端 Tradefed 測試,透過 adb 與裝置交互,位於
sts-test
子目錄中。 - 一種可選的本機概念驗證攻擊,透過
adb push
推送到裝置上,並由native-poc
子目錄中的主機端測試執行。 - 透過
adb install
安裝到裝置上並由主機端測試啟動的選用應用程式或服務 APK。應用程式或服務也可以包含自己的一組 JUnit 斷言,這些斷言會報告給主機端執行程式。它位於test-app
子目錄中。
典型的 STS 測試流程通常遵循以下兩種模式之一:
本機概念驗證:
- 主機端測試在裝置上推送並啟動本機執行檔。
- 本機程式崩潰或傳回特定的退出代碼。
- 主機端測試檢查崩潰情況,查看 logcat 回溯,或尋找特定的退出代碼以決定攻擊是否成功。
儀器化測試應用程式:
- 主機端測試將包含應用程式或服務的 APK 推送到裝置上。
- 主機端測試透過
runDeviceTest()
啟動與 APK 捆綁的裝置端 JUnit 測試 - 裝置端 JUnit 測試點擊按鈕並使用 UIAutomator 監視應用程序,或以其他方式存取 Android 系統,從而揭示安全漏洞。
- 設備端JUnit測試的成功或失敗會傳回給主機端測試,主機端測試可用來確定測試是否通過。
兩種模式的組合(例如,結合設備端測試運行本機程式)也是可能的。也可以使用其他一些儀器框架,例如frida-inject
。有關詳細信息,請參閱安全測試套件參考文件和Tradefed 參考文件。
我的概念驗證攻擊不需要測試應用程式和/或本機執行檔
大多數測試不需要裝置端應用程式和本機可執行檔。
如果您的測試不涉及使用裝置上的應用程式/服務,只需刪除test-app
子目錄。同樣,如果您的測試不使用本機可執行文件,請刪除native-poc
子目錄,然後 Gradle 同步該項目。該專案設定為在這些模組不存在時自動跳過建置這些模組。
我的概念驗證攻擊涉及第二個應用程式/服務
首先,為您的第二個應用程式/服務添加一個新模組到您的專案中,並像編寫任何其他 APK 一樣編寫它。
接下來,編輯此目錄根目錄下的build.gradle
並按照copyArtifacts
、 assembleStsARM
和assembleStsx86
中的說明添加模組。這將確保編譯的 APK 被複製到 STS 的輸出目錄,並能夠從測試中安裝/呼叫新應用程式。
最後,Gradle 同步專案。
提交STS測試
執行zipForSubmission
任務(使用 Android Studio 或使用命令列上的 Gradle)。應在專案根目錄的build
目錄中建立一個新檔案codesubmission.zip
。將該文件與您提交的內容一起上傳到 Android 漏洞獎勵計劃。