Bộ phát triển Bộ kiểm thử bảo mật Android (SDK STS)

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.

Tải SDK STS mới nhất

Đ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ạy adb 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.
  • 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:

  1. 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.
  2. 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 con native-poc.
  3. 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 con test-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:

    1. 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ị.
    2. Chương trình gốc gặp sự cố hoặc trả về một mã thoát cụ thể.
    3. 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:

    1. 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ị.
    2. 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()
    3. 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.
    4. 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ậttà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, assembleStsARMassembleStsx86. Đ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.