Security Test Suite Trade Federation (sts-tradefed), tüm Android cihazları Compatibility Test Suite'e dahil olmayan güvenlik yaması testleri açısından test etmek için Android Trade Federation test donanımının üzerine inşa edilmiştir. Bu testler yalnızca Common Vulnerabilities and Exposures (CVE) ile ilişkilendirilmiş (veya ilişkilendirilecek) düzeltmeler içindir.
SDK, Android Studio veya standart Android SDK'sı kullanılarak Android kaynak ağacının dışında STS testlerinin geliştirilmesine olanak tanır. STS testi oluşturmak ve çalıştırmak için gereken tüm yardımcı programları içerir.
Ön koşullar
- 64 bit Linux PC.
- Android Studio (distronuzun paket yöneticisinden de yüklenebilir.
- Android platform araçlarının (
adb
,fastboot
) yüklü ve$PATH
'inizde bulunması gerekir (yaniadb
'yi komut satırından çalıştırabilmeniz gerekir). Platform araçlarını yüklemenin en kolay yolu dağıtımınızın paket yöneticisini kullanmaktır.- Bağımsız platform araçları yerine Android Studio'nun SDK yöneticisini kullanıyorsanız SDK'nın
platform-tools
dizinini $PATH değişkeninize eklemeyi unutmayın.
- Bağımsız platform araçları yerine Android Studio'nun SDK yöneticisini kullanıyorsanız SDK'nın
- aapt, dağıtımınızın paket yöneticisi aracılığıyla da yüklenebilir.
Android Studio'yu kullanmaya başlama
Arşivi çıkardıktan sonra dizini Android Studio'da mevcut bir proje olarak açın. Hedef Android cihazın mimarisine bağlı olarak iskelet testi oluşturmak için assembleSTSARM
veya assembleSTSx86
derleme hedefini çalıştırın. İskelet testini bağlı cihazda çalıştırmak için runSTS
derleme hedefini çalıştırın (ADB yetkili olmalıdır).
Gradle'i kullanmaya başlama
Arşivi çıkardıktan sonra, Gradle projesinin kökündeki local.properties
dosyasında sdk.dir
mülkünü ayarlayın ve ardından iskelet testi oluşturmak için assembleSTSARM
Gradle görevini çalıştırın. Derleme tamamlandıktan sonra build/android-sts/tools
'a gidip (cd
) sts-tradefed
sarmalayıcısını çalıştırarak testi çalıştırabilirsiniz.
$ 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 testi yazma
STS testi üç bölümden oluşur:
sts-test
alt dizinindeki adb aracılığıyla cihazla etkileşime geçen ana makine tarafında bir Tradefed testi.adb push
aracılığıyla cihaza gönderilen venative-poc
alt dizinindeki ana makine tarafı test tarafından yürütülen isteğe bağlı yerel bir kavram kanıtı saldırısı.adb install
aracılığıyla cihaza yüklenen ve ana makine tarafı test tarafından da başlatılan isteğe bağlı bir uygulama veya hizmet APK'sı. Uygulama veya hizmet, ana makine tarafı çalıştırıcıya bildirilen kendi JUnit onayları grubunu da içerebilir. Bu,test-app
alt dizinindedir.
Tipik bir STS test akışı genellikle iki kalıptan birini izler:
Doğal kavram kanıtlama:
- Ana makine tarafı test, cihaza yerel bir yürütülebilir dosya gönderip başlatır.
- Yerel program kilitleniyor veya belirli bir çıkış kodu döndürüyor.
- Ana makine tarafındaki test, saldırının başarılı olup olmadığını belirlemek için kilitlenmeleri kontrol eder, logcat geri izlemesine bakar veya belirli çıkış kodunu arar.
Enstrümantasyonlu test uygulaması:
- Ana makine tarafı test, bir uygulama veya hizmetten oluşan bir APK'yı cihaza gönderir.
- Ana makine tarafı test, APK ile birlikte paketlenen cihaz tarafı JUnit testlerini
runDeviceTest()
üzerinden başlatır. - Cihaz tarafındaki JUnit testleri, düğmelere dokunur ve UIAutomator'u kullanarak uygulamayı izler ya da güvenlik açıklarını ortaya çıkaracak şekilde Android sistemine başka bir şekilde erişir.
- Cihaz tarafındaki JUnit testlerinin başarısı veya başarısızlığı, ana makine tarafındaki teste döndürülür. Bu test, testin geçip geçmediğini belirlemek için kullanılabilir.
Bu iki kalıbın birlikte kullanılması (örneğin, cihaz tarafı testlerle birlikte yerel bir programın çalıştırılması) da mümkündür. frida-inject
gibi başka araç çerçeveleri de vardır.
Ayrıntılar için Security Test Suite referans dokümanlarını ve Tradefed referans dokümanlarını inceleyin.
Kavram kanıtı saldırım için test uygulamasına veya yerel yürütülebilir dosyaya gerek yok
Çoğu test için hem cihaz tarafı uygulamaya hem de yerel bir yürütülebilir dosyaya gerek yoktur.
Testiniz cihaz üzerinde bir uygulama/hizmet 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, bu modüller mevcut olmadığında derlemeyi otomatik olarak atlayacak şekilde ayarlanmıştır.
Kavram kanıtı saldırım ikinci bir uygulama/hizmet içeriyor
Öncelikle, ikinci uygulamanız/hizmetiniz için projenize yeni bir modül ekleyin ve bu modülü diğer APK'lar gibi yazın.
Ardından, bu dizinin kökündeki build.gradle
dosyasını düzenleyin ve copyArtifacts
, assembleStsARM
ve assembleStsx86
'daki talimatları uygulayarak modülünüzü ekleyin. Bu işlem, derlenen APK'nın STS'nin çıkış dizinine kopyalanmasını ve testten yeni uygulamanın yüklenmesini/çağrısını sağlar.
Son olarak, projeyi Gradle ile senkronize edin.
STS testini gönderme
zipForSubmission
görevini çalıştırın (Android Studio ile veya komut satırında Gradle ile). Projenin kök dizinindeki build
dizininde yeni bir codesubmission.zip
dosyası oluşturulmalıdır. Bu dosyayı, Android Güvenlik Açıklarını Bildirenler İçin Ödül Programı'na gönderiminizle birlikte yükleyin.