Security Test Suite Trade Federation (sts-tradefed) được xây dựng dựa trên Liên đoàn Thương mại Android khai thác kiểm thử để kiểm thử tính bảo mật của tất cả thiết bị Android các bản vá kiểm thử không thuộc Bộ kiểm tra tính tương thích. Các kiểm thử này dành riêng cho bản sửa lỗi được liên kết (hoặc sẽ được liên kết) với một Các lỗ hổng và vấn đề tiếp xúc phổ biến (CVE).
SDK cho phép phát triển các chương trình kiểm thử STS bên ngoài cây nguồn Android thông qua Android Studio hoặc SDK Android tiêu chuẩn. Dịch vụ này bao gồm tất cả tiện ích cần thiết để xây dựng và chạy kiểm thử STS.
Điều kiện tiên quyết
- Máy tính Linux 64 bit.
- Android Studio (cũng có thể cài đặt từ trình quản lý gói của bản phân phối.
- Công cụ nền tảng Android
(
adb
,fastboot
) cần được cài đặt và nằm trong$PATH
của bạn (tức là bạn có thể chạyadb
từ dòng lệnh). Cách dễ nhất để cài đặt công cụ nền tảng thông qua trình quản lý gói của bản phân phối.- Trường hợp bạn sử dụng trình quản lý SDK của Android Studio thay vì một nền tảng độc lập
công cụ, hãy nhớ thêm thư mục
platform-tools
của SDK vào $PATH của bạn.
- Trường hợp bạn sử dụng trình quản lý SDK của Android Studio thay vì một nền tảng độc lập
công cụ, hãy nhớ thêm thư mục
- aapt, Bạn cũng có thể cài đặt gói này qua trình quản lý gói của bản phân phối.
Làm quen với Android Studio
Sau khi giải nén tệp lưu trữ, hãy mở thư mục trong Android Studio dưới dạng
dự án hiện có. Chạy mục tiêu bản dựng assembleSTSARM
hoặc assembleSTSx86
để
tạo kiểm thử khung, tuỳ thuộc vào cấu trúc của Android mục tiêu
thiết bị. Chạy mục tiêu bản dựng runSTS
để chạy kiểm thử khung trên
thiết bị (phải được cấp quyền ADB).
Làm quen với Gradle
Sau khi trích xuất bản lưu trữ, hãy đặt thuộc tính sdk.dir
trong
local.properties
ở gốc của dự án Gradle, sau đó chạy
Tác vụ assembleSTSARM
của Gradle để tạo chương trình kiểm thử khung. Sau khi bản dựng là
đã hoàn tất, bạn có thể chạy kiểm thử bằng cách điều hướng (cd
) vào
build/android-sts/tools
và thực thi trình bao bọc 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
Viết kiểm thử STS
Có ba phần của một bài kiểm thử STS:
- Chương trình kiểm thử Tradefeed phía máy chủ tương tác với thiết bị thông qua adb, trong
sts-test
thư mục con. - Tấn công bằng chứng gốc không bắt buộc về khái niệm được đẩy lên
thiết bị thông qua
adb push
và được thực thi bởi chương trình kiểm thử phía máy chủ trong Thư mục connative-poc
. - Một tệp APK dịch vụ hoặc ứng dụng không bắt buộc được cài đặt trên thiết bị thông qua
adb install
và cũng được khởi chạy bằng bài kiểm thử phía máy chủ. Ứng dụng hoặc dịch vụ cũng có thể chứa tập hợp xác nhận JUnit riêng được báo cáo cho trình chạy phía máy chủ. Tệp này nằm trong thư mục contest-app
.
Một quy trình kiểm tra STS điển hình thường tuân theo một trong hai mẫu:
Bằng chứng về khái niệm gốc:
- Quy trình kiểm thử phía máy chủ sẽ đẩy và khởi chạy một tệp thực thi gốc trên thiết bị.
- Chương trình gốc gặp sự cố hoặc trả về một mã thoát cụ thể.
- Quá trình kiểm thử phía máy chủ sẽ kiểm tra các sự cố, xem xét dấu vết ngược logcat, hoặc tìm mã thoát cụ thể để xác định xem cuộc tấn công đã thành công.
Ứng dụng kiểm thử đo lường:
- Quy trình kiểm thử phía máy chủ đẩy một APK bao gồm một ứng dụng hoặc dịch vụ lên thiết bị.
- Bài kiểm thử phía máy chủ bắt đầu các bài kiểm thử JUnit phía thiết bị được đi kèm
bằng APK thông qua
runDeviceTest()
- JUnit phía thiết bị kiểm thử thao tác nhấn vào các nút và xem ứng dụng bằng cách sử dụng UIAutomator hoặc truy cập vào hệ thống Android theo những cách phát hiện các lỗ hổng bảo mật.
- Thành công hay thất bại của thử nghiệm JUnit phía thiết bị sẽ được trả về cho kiểm thử phía máy chủ để xác định xem kiểm thử có thành công không hay không.
Sự kết hợp của hai mẫu (ví dụ: chạy một chương trình gốc trong
kết hợp với kiểm thử phía thiết bị). Một số khả năng đo lường khác
cũng có các khung hỗ trợ như frida-inject
.
Để biết chi tiết, hãy xem
Tài liệu tham khảo về Bộ kiểm tra bảo mật và
Tài liệu tham khảo đã trao đổi.
Cuộc tấn công bằng chứng về khái niệm của tôi không cần ứng dụng thử nghiệm hoặc tệp thực thi gốc
Hầu hết các chương trình kiểm thử sẽ không cần cả ứng dụng phía thiết bị và tệp thực thi gốc.
Nếu thử nghiệm của bạn không liên quan đến việc sử dụng một ứng dụng/dịch vụ trên thiết bị, bạn chỉ cần xoá
thư mục con test-app
. Tương tự, nếu chương trình kiểm thử của bạn không sử dụng
có thể thực thi, hãy xoá thư mục con native-poc
rồi đồng bộ hoá Gradle dự án.
Dự án được thiết lập để tự động bỏ qua việc tạo các mô-đun đó khi
không tồn tại.
Cuộc tấn công bằng chứng về khái niệm của tôi liên quan đến ứng dụng/dịch vụ thứ hai
Trước tiên, hãy thêm một Mô-đun mới vào dự án của bạn cho ứng dụng/dịch vụ thứ hai rồi viết giống như cách bạn làm với bất kỳ APK nào khác.
Tiếp theo, hãy chỉnh sửa build.gradle
ở gốc của thư mục này và thêm mô-đun của bạn
theo hướng dẫn trong copyArtifacts
, assembleStsARM
và
assembleStsx86
. Thao tác này sẽ đảm bảo sao chép tệp APK đã biên dịch sang dữ liệu đầu ra
STS và cho phép cài đặt/gọi ứng dụng mới từ bài kiểm thử.
Cuối cùng, hãy đồng bộ hoá dự án Gradle.
Gửi bài kiểm tra STS
Chạy tác vụ zipForSubmission
(bằng Android Studio hoặc Gradle trên
dòng lệnh). Bạn cần tạo một tệp mới là codesubmission.zip
trong build
thư mục gốc của dự án. Tải tệp đó lên cùng với
gửi tới Chương trình Phần thưởng phát hiện lỗ hổng bảo mật Android.