Bộ công cụ phát triển bộ kiểm tra bảo mật Android (STS SDK)

Bộ kiểm tra bảo mật Liên đoàn thương mại (sts-tradefed) được xây dựng dựa trên khai thác kiểm tra Liên đoàn thương mại Android để kiểm tra tất cả các thiết bị Android để kiểm tra bản vá bảo mật không thuộc Bộ kiểm tra tương thích. Các thử nghiệm này chỉ dành riêng cho các bản sửa lỗi có liên quan (hoặc sẽ liên quan) với các lỗ hổng và nguy cơ phơi nhiễm phổ biến (CVE).

SDK cho phép phát triển các thử nghiệm STS bên ngoài cây nguồn Android bằng Android Studio hoặc SDK Android tiêu chuẩn. Nó bao gồm tất cả các tiện ích cần thiết để xây dựng và chạy thử nghiệm STS.

Nhận 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 cài đặt từ 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à có 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 của bạn.
    • Nếu 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 , cũng có thể được cài đặt thông qua trình quản lý gói của bản phân phối của bạn.

Bắt đầu sử dụng Android Studio

Sau khi giải nén kho lưu trữ, hãy mở thư mục trong Android Studio như một dự án hiện có. Chạy mục tiêu xây dựng assembleSTSARM hoặc assembleSTSx86 để xây dựng thử nghiệm khung, tùy thuộc vào kiến ​​trúc của thiết bị Android mục tiêu. Chạy mục tiêu xây dựng runSTS để chạy thử nghiệm khung trên thiết bị được kết nối (ADB phải được ủy quyền).

Bắt đầu sử dụng Gradle

Sau khi giải nén kho lưu trữ, hãy đặt thuộc tính sdk.dir trong tệp local.properties ở thư mục gốc của dự án Gradle, sau đó chạy tác vụ assembleSTSARM Gradle để xây dựng thử nghiệm khung xương. Sau khi quá trình xây dựng kết thúc, thử nghiệm có thể được chạy 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 bài kiểm tra STS

Có ba phần trong bài kiểm tra STS:

  1. Thử nghiệm Tradefed 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 khái niệm gốc tùy chọn được đẩy lên thiết bị thông qua adb push và được thực thi bởi thử nghiệm phía máy chủ trong thư mục con native-poc .
  3. APK ứng dụng hoặc dịch vụ tùy chọn được cài đặt trên thiết bị thông qua adb install và cũng được khởi chạy bởi thử nghiệm 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 người chạy phía máy chủ. Đây là trong thư mục con test-app .

Luồng thử nghiệm STS điển hình thường tuân theo một trong hai mẫu:

  • Bằng chứng gốc về khái niệm:

    1. Quá trình kiểm tra 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 tra phía máy chủ sẽ kiểm tra các sự cố, xem xét vết ngược 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 thử nghiệm thiết bị:

    1. Quá trình kiểm tra phía máy chủ sẽ đẩy APK bao gồm một ứng dụng hoặc dịch vụ lên thiết bị.
    2. Thử nghiệm phía máy chủ bắt đầu thử nghiệm JUnit phía thiết bị đi kèm với APK thông qua runDeviceTest()
    3. JUnit phía thiết bị kiểm tra các nút nhấn và xem ứng dụng bằ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. Sự thành công hay thất bại của các bài kiểm tra JUnit phía thiết bị sẽ được trả về bài kiểm tra phía máy chủ, bài kiểm tra này có thể được sử dụng để xác định xem bài kiểm tra có vượt qua hay không.

Cũng có thể kết hợp cả hai mẫu (ví dụ: chạy chương trình gốc kết hợp với kiểm tra phía thiết bị). Một số khung công cụ khác, chẳng hạn như frida-inject , cũng có sẵn. Để biết chi tiết, hãy xem tài liệu tham khảo Bộ kiểm tra bảo mậttài liệu tham khảo Tradefed .

Cuộc tấn công bằng chứng khái niệm của tôi không cần ứng dụng thử nghiệm và/hoặc tệp thực thi gốc

Hầu hết các thử nghiệm 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 ứng dụng/dịch vụ trên thiết bị, bạn chỉ cần xóa thư mục con test-app . Tương tự, nếu thử nghiệm của bạn không sử dụng tệp thực thi gốc, hãy xóa thư mục con native-poc sau đó đồng bộ hóa Gradle dự án. Dự án được thiết lập để tự động bỏ qua việc xây dựng các mô-đun đó khi chúng không tồn tại.

Cuộc tấn công bằng chứng 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ô-đun mới vào dự án cho ứng dụng/dịch vụ thứ hai của bạn và viết mô-đun đó giống như bất kỳ APK nào khác.

Tiếp theo, chỉnh sửa build.gradle ở thư mục 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 sẽ đảm bảo APK đã biên dịch được sao chép vào thư mục đầu ra của STS và cho phép cài đặt/gọi ứng dụng mới dưới dạng thử nghiệm.

Cuối cùng, đồng bộ hóa Gradle dự án.

Nộp bài kiểm tra STS

Chạy tác vụ zipForSubmission (với Android Studio hoặc với Gradle trên dòng lệnh). Một tệp mới, codesubmission.zip , phải được tạo trong thư mục build ở thư mục gốc của dự án. Tải tệp đó lên cùng với nội dung 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 của Android.