Security Test Suite Trade Federation (sts-tradefed) được xây dựng dựa trên bộ kiểm thử Android Trade Federation để kiểm thử tất cả thiết bị Android cho các kiểm thử bản vá bảo mật không thuộc Bộ kiểm thử tính tương thích. Các kiểm thử này chỉ dành cho các bản sửa lỗi được liên kết (hoặc sẽ được liên kết) với một Lỗ hổng và sự cố phổ biến (CVE).
SDK cho phép phát triển các bài kiểm thử STS bên ngoài cây nguồn Android bằng cách sử dụng Android Studio hoặc SDK Android tiêu chuẩn. Bộ công cụ này bao gồm tất cả các tiện ích cần thiết để tạo và chạy quy trình 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 qua trình quản lý gói của bản phân phối của bạn.
- Các 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ác công cụ nền tảng là thông qua trình quản lý gói của bản phân phối.- Nếu bạn sử dụng trình quản lý SDK của Android Studio thay vì các công cụ nền tảng độc lập, hãy nhớ thêm thư mục
platform-tools
của SDK vào $PATH của bạn.
- Nếu bạn sử dụng trình quản lý SDK của Android Studio thay vì các công cụ nền tảng độc lập, hãy nhớ thêm thư mục
- aapt, bạn cũng có thể cài đặt thông 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 một 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 thiết bị Android mục tiêu. Chạy mục tiêu bản dựng runSTS
để chạy quy trình kiểm thử khung trên thiết bị được kết nối (phải được cấp quyền ADB).
Làm quen với Gradle
Sau khi giải nén tệp lưu trữ, hãy đặt thuộc tính sdk.dir
trong tệp local.properties
ở gốc của dự án Gradle, sau đó chạy tác vụ Gradle assembleSTSARM
để tạo kiểm thử khung. Sau khi bản dựng 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
Kiểm thử STS có 3 phần:
- 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 thư mục con
sts-test
. - Một cuộc tấn công bằng chứng về khái niệm gốc (không bắt buộc) được đẩy trên thiết bị thông qua
adb push
và được thực thi bằng quy trình kiểm thử phía máy chủ trong thư mục connative-poc
. - Một ứng dụng hoặc tệp APK dịch vụ không bắt buộc được cài đặt trên thiết bị thông qua
adb install
và cũng được chạy bằng kiểm thử phía máy chủ. Ứng dụng hoặc dịch vụ cũng có thể chứa một tập hợp các câu nhận định 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 thử 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:
- Kiểm thử phía máy chủ đẩ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ể.
- Kiểm thử phía máy chủ sẽ kiểm tra sự cố, xem dấu vết lui logcat hoặc tìm mã thoát cụ thể để xác định xem cuộc tấn công có thành công hay không.
Ứng dụng kiểm thử đo lường:
- Quy trình kiểm thử phía máy chủ sẽ đẩy một tệp APK bao gồm một ứng dụng hoặc dịch vụ vào 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 với 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à theo dõi ứng dụng bằng UIAutomator hoặc truy cập vào hệ thống Android theo những cách cho thấy lỗ hổng bảo mật.
- Kết quả thành công hoặc không thành công của các kiểm thử JUnit phía thiết bị sẽ được trả về cho kiểm thử phía máy chủ. Kết quả này có thể được dùng để xác định xem kiểm thử có thành công hay không.
Bạn cũng có thể kết hợp 2 mẫu (ví dụ: chạy chương trình gốc kết hợp với kiểm thử phía thiết bị). Một số khung đo lường khác, chẳng hạn như frida-inject
, cũng có sẵn.
Để biết thông tin chi tiết, vui lòng 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 về giao dịch.
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ị lẫn tệp thực thi gốc.
Nếu kiểm thử của bạn không liên quan đến việc sử dụng ứ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 kiểm thử của bạn không sử dụng tệp thực thi gốc, hãy xoá thư mục con native-poc
rồi đồng bộ hoá dự án với Gradle.
Dự án được thiết lập để tự động bỏ qua việc tạo các mô-đun đó khi chúng không tồn tại.
Cuộc tấn công minh hoạ của tôi liên quan đến một ứ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 và viết giống như mọi APK 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
. Điều này đảm bảo APK đã biên dịch được sao chép sang thư mục đầu ra của STS và cho phép cài đặt/gọi ứng dụng mới tạo mẫu kiểm thử.
Cuối cùng, hãy đồng bộ hoá dự án bằng Gradle.
Gửi bài kiểm thử STS
Chạy tác vụ zipForSubmission
(bằng Android Studio hoặc bằng Gradle trên dòng lệnh). Bạn cần tạo một tệp mới, codesubmission.zip
, trong thư mục build
ở thư mục gốc của dự án. Tải tệp đó lên cùng với tệp bạn gửi tới Chương trình phần thưởng phát hiện lỗ hổng bảo mật Android.