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 bộ 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 cho các bài kiểm tra bản vá bảo mật không thuộc Bộ kiểm tra khả năng tương thích. Các thử nghiệm này dành riêng cho các bản sửa lỗi được liên kết (hoặc sẽ được liên kết) với Lỗ hổng và điểm tiếp xúc 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 cách sử dụ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à nằm trong $PATH của bạn (nghĩa 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 distro 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 dưới dạng một dự án hiện có. Chạy mục tiêu xây dựng assembleSTSARM 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 cấp 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. Sau khi quá trình xây dựng hoàn tất, có thể chạy thử nghiệm 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 dịch vụ hoặc ứng dụng 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 các xác nhận JUnit của riêng nó được báo cáo cho trình chạy phía máy chủ. Đây là trong thư mục con test-app .

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

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

    1. Thử nghiệm phía máy chủ đẩy và khởi chạy 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. Thử nghiệm phía máy chủ kiểm tra sự cố, xem xét logcat backtrace hoặc tìm kiế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 cụ:

    1. Thử nghiệm phía máy chủ đẩy APK bao gồm ứ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. Kiểm tra JUnit phía thiết bị chạm 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 cách tiết lộ các lỗ hổng bảo mật.
    4. Thành công hay thất bại của các bài kiểm tra JUnit phía thiết bị được trả lại cho bài kiểm tra phía máy chủ, 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 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ị, 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 rồi đồng bộ hóa 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ộ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 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 , assembleStsARM assembleStsx86 . Đ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 từ thử nghiệm.

Cuối cùng, Gradle-đồng bộ hóa 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 , nên được tạo trong thư mục bản build ở thư mục gốc của dự án. Tải tệp đó lên cùng với nội dung gửi của bạn tới Chương trình phần thưởng cho lỗ hổng bảo mật của Android.