Security Test Suite Trade Federation (sts-tradefed) dibangun di atas Federasi Perdagangan Android perangkat uji untuk menguji keamanan semua perangkat Android yang tidak termasuk dalam Compatibility Test Suite. Pengujian ini khusus untuk perbaikan yang terkait (atau akan dikaitkan) dengan Kerentanan dan Eksposur Umum (CVE).
SDK memungkinkan pengembangan pengujian STS di luar hierarki sumber Android menggunakan Android Studio atau Android SDK standar. Hal ini mencakup semua utilitas yang diperlukan untuk membuat dan menjalankan pengujian STS.
Prasyarat
- PC Linux 64 bit.
- Android Studio (juga dapat diinstal dari pengelola paket distro Anda.
- Alat platform Android
(
adb
,fastboot
) harus diinstal dan berada di$PATH
(yaitu Anda harus dapat menjalankanadb
dari command line). Cara termudah untuk menginstal alat platform adalah melalui pengelola paket distro Anda.- Jika menggunakan SDK Manager Android Studio, bukan platform mandiri
jangan lupa untuk menambahkan direktori
platform-tools
SDK ke $PATH Anda.
- Jika menggunakan SDK Manager Android Studio, bukan platform mandiri
jangan lupa untuk menambahkan direktori
- aapt, yang juga dapat diinstal melalui pengelola paket distro Anda.
Mulai menggunakan Android Studio
Setelah mengekstrak arsip, buka direktori di Android Studio sebagai
project yang sudah ada. Jalankan target build assembleSTSARM
atau assembleSTSx86
untuk
membangun pengujian kerangka, bergantung pada arsitektur Android target
perangkat seluler. Jalankan target build runSTS
untuk menjalankan pengujian kerangka pada
perangkat (ADB harus diberi otorisasi).
Mulai menggunakan Gradle
Setelah mengekstrak arsip, setel properti sdk.dir
di
local.properties
di root project Gradle, lalu jalankan
assembleSTSARM
Tugas Gradle untuk membangun pengujian kerangka. Setelah build
selesai, pengujian dapat dijalankan dengan menavigasi (cd
) ke
build/android-sts/tools
dan menjalankan wrapper 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
Menulis pengujian STS
Ada tiga bagian untuk pengujian STS:
- Pengujian Tradefed sisi host yang berinteraksi dengan perangkat melalui adb, di
Subdirektori
sts-test
. - Serangan bukti konsep native opsional yang didorong ke
perangkat melalui
adb push
dan dijalankan oleh pengujian sisi host di Subdirektorinative-poc
. - APK aplikasi atau layanan opsional yang diinstal ke perangkat melalui
adb install
dan juga diluncurkan oleh pengujian sisi host. Aplikasi atau layanan juga dapat berisi seperangkat pernyataan JUnit-nya sendiri yang dilaporkan ke {i>host<i} dari sisi {i>host<i}. ID ini ada di subdirektoritest-app
.
Alur pengujian STS umum biasanya mengikuti salah satu dari dua pola:
Bukti konsep asli:
- Pengujian sisi host mendorong dan meluncurkan native yang dapat dieksekusi di perangkat seluler.
- Program native mengalami error atau menampilkan kode keluar tertentu.
- Pengujian sisi {i>host<i} memeriksa {i> error<i}, melihat {i>backtrace<i} logcat, atau mencari kode keluar tertentu untuk menentukan apakah serangan itu berhasil.
Aplikasi pengujian berinstrumen:
- Pengujian sisi host mengirim APK yang terdiri dari aplikasi atau layanan ke perangkat.
- Pengujian sisi host memulai pengujian JUnit sisi perangkat yang dipaketkan
dengan APK melalui
runDeviceTest()
- Pengujian JUnit sisi perangkat mengetuk tombol dan mengamati aplikasi menggunakan UIAutomator, atau mengakses sistem Android dengan cara yang kerentanan keamanan.
- Keberhasilan atau kegagalan pengujian JUnit sisi perangkat akan dikembalikan ke pengujian sisi host, yang dapat digunakan untuk menentukan apakah pengujian lulus atau tidak.
Kombinasi dari dua pola tersebut (misalnya, menjalankan program native di
bersama dengan pengujian sisi perangkat) juga dimungkinkan. Beberapa instrumentasi lainnya
framework, seperti frida-inject
, juga tersedia.
Untuk mengetahui detailnya, lihat
Dokumen referensi Security Test Suite dan
Dokumen referensi tertradef.
Serangan bukti konsep saya tidak memerlukan aplikasi pengujian atau native yang dapat dieksekusi
Sebagian besar pengujian tidak memerlukan aplikasi sisi perangkat dan file native yang dapat dieksekusi.
Jika pengujian Anda tidak melibatkan penggunaan aplikasi/layanan di perangkat, cukup hapus
subdirektori test-app
. Demikian pula, jika pengujian Anda tidak menggunakan
yang dapat dieksekusi, hapus subdirektori native-poc
, lalu sinkronkan project dengan Gradle.
Project ini disiapkan untuk otomatis melewati pembuatan modul tersebut ketika
tidak ada.
Serangan bukti konsep saya melibatkan aplikasi/layanan kedua
Pertama, tambahkan Modul baru ke project untuk aplikasi/layanan kedua Anda dan tulis seperti yang Anda lakukan pada APK lainnya.
Selanjutnya, edit build.gradle
di root direktori ini dan tambahkan modul Anda
mengikuti petunjuk di copyArtifacts
, assembleStsARM
, dan
assembleStsx86
. Ini akan memastikan APK yang dikompilasi disalin ke output
STS dan memungkinkan penginstalan/panggilan aplikasi baru dari pengujian.
Terakhir, sinkronkan project melalui Gradle.
Mengirim pengujian STS
Jalankan tugas zipForSubmission
(dengan Android Studio atau dengan Gradle di
command line). File baru, codesubmission.zip
, harus dibuat di build
di {i>root <i}proyek. Unggah file tersebut bersama dengan
pengiriman ke Android Vulnerability Reward Program.