Android 安全测试套件开发套件 (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 管理器而不是独立的平台工具,请记住将 SDK 的platform-tools目录添加到 $PATH 中。
  • aapt ,也可以通过发行版的包管理器安装。

开始使用 Android Studio

解压存档后,在 Android Studio 中将目录作为现有项目打开。运行assembleSTSARMassembleSTSx86构建目标来构建框架测试,具体取决于目标 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 测试分为三个部分:

  1. 主机端 Tradefed 测试,通过 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 。有关详细信息,请参阅安全测试套件参考文档Tradefed 参考文档

我的概念验证攻击不需要测试应用程序和/或本机可执行文件

大多数测试不需要设备端应用程序和本机可执行文件。

如果您的测试不涉及使用设备上的应用程序/服务,只需删除test-app子目录即可。同样,如果您的测试不使用本机可执行文件,请删除native-poc子目录,然后 Gradle 同步该项目。该项目设置为在这些模块不存在时自动跳过构建这些模块。

我的概念验证攻击涉及第二个应用程序/服务

首先,为您的第二个应用程序/服务添加一个新模块到您的项目中,并像编写任何其他 APK 一样编写它。

接下来,编辑此目录根目录下的build.gradle并按照copyArtifactsassembleStsARMassembleStsx86中的说明添加模块。这将确保编译的 APK 被复制到 STS 的输出目录,并能够从测试中安装/调用新应用程序。

最后,Gradle 同步项目。

提交STS测试

运行zipForSubmission任务(使用 Android Studio 或使用命令行上的 Gradle)。应在项目根目录的build目录中创建一个新文件codesubmission.zip 。将该文件与您提交的内容一起上传到 Android 漏洞奖励计划。