Android Security Test Suite Development Kit (STS SDK)

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Security Test Suite Trade Federation (sts-tradefed) baut auf der Testumgebung der Android Trade Federation auf, um alle Android-Geräte auf Sicherheitspatch-Tests zu testen, die nicht in die Compatibility Test Suite fallen. Diese Tests gelten ausschließlich für Fixes, die mit einem Common Vulnerabilities and Exposures (CVE) verknüpft sind (oder verknüpft werden).

Das SDK ermöglicht die Entwicklung von STS-Tests außerhalb des Android-Quellbaums mit Android Studio oder dem Standard-Android-SDK. Es enthält alle Dienstprogramme, die zum Erstellen und Ausführen eines STS-Tests erforderlich sind.

Holen Sie sich das neueste STS SDK

Voraussetzungen

  • 64-Bit-Linux-PC.
  • Android Studio (kann auch über den Paketmanager Ihrer Distribution installiert werden.
  • Android-Plattform-Tools ( adb , fastboot ) müssen installiert sein und sich in Ihrem $PATH befinden (dh Sie sollten in der Lage sein, adb von der Befehlszeile aus auszuführen). Der einfachste Weg, die Plattform-Tools zu installieren, ist über den Paketmanager Ihrer Distribution.
    • Wenn Sie den SDK-Manager von Android Studio anstelle von eigenständigen Plattformtools verwenden, denken Sie daran, das Verzeichnis platform-tools des SDK zu Ihrem $PATH hinzuzufügen.
  • aapt , das auch über den Paketmanager Ihrer Distribution installiert werden kann.

Beginnen Sie mit der Verwendung von Android Studio

Öffnen Sie nach dem Extrahieren des Archivs das Verzeichnis in Android Studio als vorhandenes Projekt. Führen Sie je nach Architektur des Android-Zielgeräts das Buildziel „ assembleSTSARM oder assembleSTSx86 “ aus, um den Skeletttest zu erstellen. Führen Sie das Build-Ziel runSTS , um den Skeleton-Test auf dem verbundenen Gerät auszuführen (ADB muss autorisiert sein).

Beginnen Sie mit der Verwendung von Gradle

Legen Sie nach dem Extrahieren des Archivs die Eigenschaft „ sdk.dir “ in der Datei local.properties “ im Stammverzeichnis des Gradle-Projekts fest und führen Sie dann die Gradle-Aufgabe „ assembleSTSARM “ aus, um den Skeleton-Test zu erstellen. Nachdem der Build abgeschlossen ist, kann der Test ausgeführt werden, indem Sie ( cd ) zu build/android-sts/tools navigieren und den sts-tradefed Wrapper ausführen.

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

Schreiben Sie einen STS-Test

Ein STS-Test besteht aus drei Teilen:

  1. Ein hostseitiger Tradefed-Test, der über adb im Unterverzeichnis sts sts-test test mit dem Gerät interagiert.
  2. Ein optionaler nativer Proof-of-Concept-Angriff, der über adb push auf das Gerät übertragen und vom hostseitigen Test im Unterverzeichnis native-poc ausgeführt wird.
  3. Eine optionale App oder Dienst-APK, die über adb install auf dem Gerät installiert und auch durch den hostseitigen Test gestartet wird. Die App oder der Dienst kann auch einen eigenen Satz von JUnit-Zusicherungen enthalten, die an den hostseitigen Runner gemeldet werden. Diese befindet sich im Unterverzeichnis test-app .

Ein typischer STS-Testablauf folgt normalerweise einem von zwei Mustern:

  • Nativer Proof-of-Concept:

    1. Der hostseitige Test pusht und startet eine native ausführbare Datei auf dem Gerät.
    2. Das native Programm stürzt ab oder gibt einen bestimmten Exit-Code zurück.
    3. Der hostseitige Test prüft auf Abstürze, schaut sich den Logcat-Backtrace an oder sucht nach dem spezifischen Exit-Code, um festzustellen, ob der Angriff erfolgreich war.
  • Instrumentierte Test-App:

    1. Der hostseitige Test pusht ein APK, das aus einer App oder einem Dienst besteht, auf das Gerät.
    2. Der hostseitige Test startet die geräteseitigen JUnit-Tests, die mit dem APK über runDeviceTest() gebündelt sind.
    3. Das geräteseitige JUnit testet, tippt auf Schaltflächen und beobachtet die App mit UIAutomator oder greift auf andere Weise auf das Android-System zu, um Sicherheitslücken aufzudecken.
    4. Der Erfolg oder Misserfolg der geräteseitigen JUnit-Tests wird an den hostseitigen Test zurückgegeben, der verwendet werden kann, um festzustellen, ob der Test bestanden wurde oder nicht.

Auch eine Kombination der beiden Muster (z. B. Ausführen eines nativen Programms in Verbindung mit geräteseitigen Tests) ist möglich. Einige andere Instrumentierungs-Frameworks, wie z. B. frida-inject , sind ebenfalls verfügbar. Einzelheiten finden Sie in den Referenzdokumenten zur Security Test Suite und in den Tradefed-Referenzdokumenten .

Mein Proof-of-Concept-Angriff benötigt keine Test-App und/oder native ausführbare Datei

Die meisten Tests benötigen weder eine geräteseitige App noch eine native ausführbare Datei.

Wenn Ihr Test nicht die Verwendung einer App/eines Dienstes auf dem Gerät beinhaltet, löschen Sie einfach das Unterverzeichnis test-app . Wenn Ihr Test keine native ausführbare Datei verwendet, löschen Sie das Unterverzeichnis native-poc und synchronisieren Sie das Projekt dann mit Gradle. Das Projekt ist so eingerichtet, dass das Erstellen dieser Module automatisch übersprungen wird, wenn sie nicht vorhanden sind.

Mein Proof-of-Concept-Angriff beinhaltet eine zweite App/einen zweiten Dienst

Fügen Sie Ihrem Projekt zunächst ein neues Modul für Ihre zweite App/Ihren zweiten Dienst hinzu und schreiben Sie das wie jedes andere APK.

Bearbeiten Sie als Nächstes build.gradle im Stammverzeichnis dieses Verzeichnisses und fügen Sie Ihr Modul hinzu, indem Sie den Anweisungen in copyArtifacts , assembleStsARM und assembleStsx86 folgen. Dadurch wird sichergestellt, dass das kompilierte APK in das Ausgabeverzeichnis von STS kopiert wird, und ermöglicht das Installieren/Aufrufen der neuen App aus dem Test.

Abschließend synchronisieren Sie das Projekt mit Gradle.

Abgabe des STS-Tests

Führen Sie die Aufgabe zipForSubmission (entweder mit Android Studio oder mit Gradle in der Befehlszeile). Eine neue Datei, codesubmission.zip , sollte im build -Verzeichnis im Stammverzeichnis des Projekts erstellt werden. Laden Sie diese Datei zusammen mit Ihrer Einreichung beim Android Vulnerability Reward Program hoch.