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 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.

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

  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 sts-test thư mục con.
  2. 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 con native-poc.
  3. 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 con test-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:

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

    1. 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ị.
    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 bằng 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à 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.
    4. 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ậtTà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, assembleStsARMassembleStsx86. 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.