Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
rtx-cve-2023-45779 — Android APEX 키 재사용 취약점에 대한 개념 증명 코드 | Kitploit
도구/GitHubGitHub/metaredteam/rtx-cve-2023-45779
Android SecurityVulnerability AnalysisExploitationBinary AnalysisSupply Chain SecurityPayload Development
GitHubmetaredteam/rtx-cve-2023-45779

rtx-cve-2023-45779

Android APEX 키 재사용 취약점에 대한 개념 증명 코드

저장소 보기
109842년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

이 저장소는 Meta Red Team X 취약점 공개를 함께 제공하기 위해 현 상태 그대로 제공됩니다. 공식 Meta 프로젝트가 아니며 공식 프로젝트처럼 지원되지 않습니다.

AOSP의 테스트 키로 서명된 APEX를 탑재한 Android 기기의 탐지 및 익스플로잇을 보여주는 스크립트와 아티팩트 모음입니다. 자세한 내용은 블로그 게시물 "누락된 서명: 여러 브랜드가 Android의 핵심 요소를 보호하는 방법을 잊어버린 방법"을 참조하세요.

파일

  • apex-checker/: 알려진 테스트 키의 다이제스트를 저장하고 대량의 APEX에서 해당 키의 서명을 확인하는 Bash 스크립트 세트입니다.
  • apex-forger/: AOSP의 apexer 및 deapexer 도구에 대한 경량 래퍼로, APEX를 쉽게 풀고, 수정하고, 다시 패키징할 수 있습니다. APEX용 apktool과 같습니다.
  • vndk-libt/: 취약한 APEX에 추가하여 코드 실행이 가능함을 증명하기 위해 만든 라이브러리의 소스 코드입니다. 이 라이브러리는 로드하는 각 프로세스의 명령줄을 logcat에 출력하는 기능만 합니다.

익스플로잇 실행

  1. 최신 AOSP 소스 트리(Android 13 정도)를 클론하고, envsetup+lunch를 실행한 후 m apexer deapexer apksigner를 실행하여 필요한 도구를 빌드합니다.
  2. envsetup.sh (여기 있는 파일, AOSP에 있는 파일이 아님)를 업데이트하여 $AOSP와 $ANDROID_HOST_OUT을 적절한 위치로 지정합니다.
  3. Android 기기를 준비합니다. 업데이트하고 ADB를 활성화합니다.
  4. adb shell getprop ro.build.version.sdk 및 adb shell getprop ro.vndk.version을 실행합니다.
  5. 두 값이 일치하면 adb pull /system/apex/com.android.vndk.current.apex vndk.apex를 실행합니다. 일치하지 않으면 adb pull /system_ext/apex/com.android.vndk.v<NN>.apex vndk.apex를 실행합니다. 여기서 <NN>은 ro.vndk.version입니다.
  6. apex-checker/check.sh vndk.apex로 APEX가 취약한지 확인합니다. 출력이 "OI"(외부 및 내부 서명 모두 테스트 키에서 왔음을 나타냄)로 시작하지 않으면 이 PoC를 사용할 수 없습니다. (단, 이는 기기가 안전하다는 것을 보장하지 않으며 다른 APEX가 여전히 취약할 수 있습니다.)
  7. apex-forger/unpack.sh vndk.apex vndk로 APEX를 압축 해제합니다.
  8. 추출된 APEX에서 libutils.so를 패치하여 삽입된 libt.so를 로드하도록 시도합니다: git apply --directory=vndk vndk-libt/libutils-v31.patch. 작동하지 않으면(예: 다른 VNDK 버전) 16진수 편집기를 사용하여 vndk/payload/lib64/libutils.so의 적절한 DT_NEEDED에서 libc.so를 libt.so로 수동으로 변경합니다.
  9. vndk-libt/ 내에서 ndk-build를 실행하여 libt.so를 빌드합니다. vndk-libt/libs/arm64-v8a/libt.so를 vndk/payload/lib64/libt.so로 복사합니다.
  10. apex_build_info.bp에서 canned_fs_config를 추출합니다. 이를 쉽게 수행하는 도구는 없습니다. 가장 가까운 방법은 protoc --decode_raw <vndk/apex_build_info.bp를 실행한 다음 필드 #3을 수동으로 이스케이프 해제하는 것입니다. canned_fs_config를 vndk/에 배치합니다.
  11. 다른 행과 마찬가지로 canned_fs_config에 /lib64/libt.so에 대한 줄을 추가합니다.
  12. 여기에서 적절한 VNDK 버전에 대한 테스트 키를 다운로드합니다.
  13. apex-forger/repack.sh vndk com.android.vndk.v<NN>.{pem,pubkey,pk8,x509.pem}으로 APEX를 다시 패키징합니다.
  14. adb install vndk/forged.apex를 실행합니다.
  15. adb reboot && adb logcat -s RTXPoC:D를 실행합니다.
  16. 각각 코드를 실행할 수 있는 프로세스에서 수많은 RTXPoC 로그 메시지를 관찰합니다.

apex-checker에 알려진 테스트 키

apex-checker/apk-keys.txt 및 apex-checker/avb-keys.txt의 해시는 다음 APEX의 외부 및 내부 테스트 키에 해당합니다. 또한 초기 보고 후 Google이 생성한 두 목록의 -goog 변형도 있습니다. 이러한 목록은 일반적으로 더 완전하지만 정확히 어떤 키가 포함되어 있는지는 알 수 없습니다.

  • com.android.appsearch
  • com.android.art
  • com.android.btservices
  • com.android.i18n
  • com.android.mediaprovider
  • com.android.ondevicepersonalization
  • com.android.permission
  • com.android.rkpd
  • com.android.runtime
  • com.android.uwb
  • com.android.virt
  • com.android.vndk.v28
  • com.android.vndk.v29
  • com.android.vndk.v30
  • com.android.vndk.v31
  • com.android.vndk.v32
  • com.android.vndk.v33
  • com.android.wifi
도구 다운로드