Android Güvenlik Test Paketi Geliştirme Kiti (STS SDK)

Güvenlik Testi Paketi Ticaret Federasyonu (sts-tradefed), Uyumluluk Testi Paketi'ne girmeyen güvenlik düzeltme eki testleri için tüm Android cihazlarını test etmek amacıyla Android Ticaret Federasyonu test donanımının üzerine kurulmuştur. Bu testler yalnızca Ortak Güvenlik Açıkları ve Etkilenmeler (CVE) ile ilişkili (veya ilişkilendirilecek) düzeltmeler içindir.

SDK, Android Studio veya standart Android SDK kullanılarak Android kaynak ağacının dışında STS testlerinin geliştirilmesine olanak tanır. Bir STS testi oluşturmak ve çalıştırmak için gereken tüm yardımcı programları içerir.

En Son STS SDK'yı Alın

Önkoşullar

  • 64 bit Linux'lu bilgisayar.
  • Android Studio (dağıtımınızın paket yöneticisinden de yüklenebilir.
  • Android platform araçlarının ( adb , fastboot ) yüklü olması ve $PATH dosyanızda olması gerekir (yani adb komut satırından çalıştırabilmeniz gerekir). Platform araçlarını kurmanın en kolay yolu dağıtımınızın paket yöneticisidir.
    • Bağımsız platform araçları yerine Android Studio'nun SDK yöneticisini kullanıyorsanız, SDK'nın platform-tools dizinini $PATH'inize eklemeyi unutmayın.
  • aapt dağıtımınızın paket yöneticisi aracılığıyla da kurulabilir.

Android Studio'yu kullanmaya başlayın

Arşivi çıkardıktan sonra dizini Android Studio'da mevcut bir proje olarak açın. Hedef Android cihazının mimarisine bağlı olarak iskelet testini oluşturmak için assembleSTSARM veya assembleSTSx86 derleme hedefini çalıştırın. Bağlı cihazda iskelet testini çalıştırmak için runSTS derleme hedefini çalıştırın (ADB'nin yetkilendirilmesi gerekir).

Gradle'ı kullanmaya başlayın

Arşivi çıkardıktan sonra, Gradle projesinin kökündeki local.properties dosyasında sdk.dir özelliğini ayarlayın, ardından iskelet testini oluşturmak için assembleSTSARM Gradle görevini çalıştırın. Derleme tamamlandıktan sonra test, ( cd ) build/android-sts/tools dosyasına giderek ve sts-tradefed sarmalayıcıyı çalıştırarak çalıştırılabilir.

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

Bir STS testi yazın

Bir STS testinin üç bölümü vardır:

  1. sts-test alt dizinindeki adb aracılığıyla cihazla etkileşime giren ana bilgisayar tarafı Tradefed testi.
  2. Cihaza adb push aracılığıyla gönderilen ve native-poc alt dizinindeki ana bilgisayar tarafı testi tarafından yürütülen, isteğe bağlı bir yerel kavram kanıtlama saldırısı.
  3. adb install aracılığıyla cihaza yüklenen ve ayrıca ana bilgisayar tarafı testi tarafından başlatılan isteğe bağlı bir uygulama veya hizmet APK'sı. Uygulama veya hizmet aynı zamanda ana bilgisayar tarafındaki çalıştırıcıya bildirilen kendi JUnit iddiaları kümesini de içerebilir. Bu, test-app alt dizinindedir.

Tipik bir STS test akışı genellikle iki modelden birini takip eder:

  • Yerel kavram kanıtı:

    1. Ana bilgisayar tarafı testi, cihazda yerel bir yürütülebilir dosyayı iter ve başlatır.
    2. Yerel program çöküyor veya belirli bir çıkış kodu döndürüyor.
    3. Ana bilgisayar tarafı testi çökmeleri kontrol eder, logcat geri izlemesine bakar veya saldırının başarılı olup olmadığını belirlemek için belirli çıkış kodunu arar.
  • Enstrümantal test uygulaması:

    1. Ana bilgisayar tarafı testi, bir uygulama veya hizmetten oluşan bir APK'yı cihaza aktarır.
    2. Ana bilgisayar tarafı testi, runDeviceTest() aracılığıyla APK ile birlikte verilen cihaz tarafı JUnit testlerini başlatır.
    3. Cihaz tarafındaki JUnit testleri, düğmelere dokunmayı ve UIAutomator kullanarak uygulamayı izlemeyi veya Android sistemine güvenlik açıklarını ortaya çıkaracak şekilde erişmeyi test ediyor.
    4. Cihaz tarafı JUnit testlerinin başarısı veya başarısızlığı, testin başarılı olup olmadığını belirlemek için kullanılabilen ana bilgisayar tarafı testine döndürülür.

İki modelin bir kombinasyonu (örneğin, yerel bir programın cihaz tarafı testleriyle birlikte çalıştırılması) da mümkündür. frida-inject gibi diğer bazı enstrümantasyon çerçeveleri de mevcuttur. Ayrıntılar için Security Test Suite referans belgelerine ve Tradefed referans belgelerine bakın.

Konsept kanıtı saldırımın bir test uygulamasına ve/veya yerel yürütülebilir dosyaya ihtiyacı yok

Çoğu testin hem cihaz tarafında bir uygulamaya hem de yerel bir yürütülebilir dosyaya ihtiyacı olmayacaktır.

Testiniz cihazdaki bir uygulamanın/hizmetin kullanımını içermiyorsa test-app alt dizinini silmeniz yeterlidir. Benzer şekilde, testiniz yerel bir yürütülebilir dosya kullanmıyorsa, native-poc alt dizinini silin ve ardından projeyi Gradle ile senkronize edin. Proje, mevcut olmadığında bu modüllerin oluşturulmasını otomatik olarak atlayacak şekilde ayarlanmıştır.

Kavram kanıtı saldırım ikinci bir uygulamayı/hizmeti içeriyor

Öncelikle ikinci uygulamanız/hizmetiniz için projenize yeni bir Modül ekleyin ve bunu diğer APK'larda yaptığınız gibi yazın.

Daha sonra bu dizinin kökündeki build.gradle düzenleyin ve copyArtifacts , assembleStsARM ve assembleStsx86 içindeki talimatları izleyerek modülünüzü ekleyin. Bu, derlenen APK'nın STS'nin çıkış dizinine kopyalanmasını sağlayacak ve testten yeni uygulamanın yüklenmesini/çağrılmasını mümkün kılacaktır.

Son olarak projeyi Gradle ile senkronize edin.

STS testinin gönderilmesi

zipForSubmission görevini çalıştırın (Android Studio ile veya komut satırındaki Gradle ile). Projenin kökündeki build dizininde codesubmission.zip yeni bir dosya oluşturulmalıdır. Bu dosyayı Android Güvenlik Açığı Ödül Programına gönderdiğiniz dosyayla birlikte yükleyin.