Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
android-hardware-attestation-demo — An Android HW Attestation 데모 | Kitploit
도구/GitHubGitHub/quarkslab/android-hardware-attestation-demo
Android SecurityAuthentication & AuthorizationMobile App PentestingMobile SecurityHardware SecurityLearning & Education
GitHubquarkslab/android-hardware-attestation-demo

android-hardware-attestation-demo

An Android HW Attestation 데모

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
546701개월 전Kitploit 검토 완료

Android 하드웨어 증명 우회 — 데모

이 저장소는 Android 하드웨어 키 증명(Key Attestation)에 관한 Quarkslab 기사와 함께 제공되며, 이를 예시로 보여주기 위해 존재합니다.

루팅된 휴대폰의 분석가가 **릴레이(relaying)**를 통해 백엔드의 하드웨어 증명 검사를 우회하는 간단한 방법을 보여주는 소규모 엔드투엔드 개념 증명입니다. 어떤 것도 위조되지 않습니다. 수정되지 않은 장치에서 생성되고 백엔드 자체 논스(nonce)에 바인딩된 진짜 증명 체인이 루팅된 장치의 거부된 체인 대신 전달됩니다.

범위 및 윤리. 이 자료는 보안 연구를 위한 교육용 자료입니다. 일반 HTTP를 사용하며 의도적으로 안전 검사를 비활성화합니다(전체에 "데모 전용" 표시). 신뢰할 수 있는 로컬 네트워크에서 자신의 장치와 자신의 백엔드를 대상으로 실행하세요.

우회 작동 방식

루팅된 장치의 Keystore 증명은 잠금 해제된 부트로더를 보고하므로 백엔드가 이를 거부합니다. 분석가는 암호화를 공격하는 대신 앱 자체의 증명 호출을 가로채 동일한 챌린지에 대해 클린 장치에서 실시간으로 가져온 체인으로 교체합니다.

후크는 데모 앱에서 KeystoreAttestation.generateAttestedKey(challenge)를 대체하며 로컬 Keystore를 호출하지 않으므로 루팅된 장치의 체인은 생성되지 않습니다. 릴레이된 체인은 진짜이며 백엔드의 검증된 부팅 및 하드웨어 기반 검사를 통과합니다.

구성 요소

구성 요소경로역할실행 위치
데모 클라이언트apps/QuarkslabAttestationDemo/대상 앱. 논스를 요청하고, 증명하고, 체인을 백엔드로 전송합니다. Frida로 후킹됩니다.루팅된 분석 장치
증명 서버apps/QuarkslabAttestationServer/증명 오라클. 주어진 논스에 대해 진짜 체인을 생성합니다. 아무것도 검증하지 않습니다.클린(수정되지 않은) 장치
계측instrumentation/Frida 에이전트(후크)와 논스를 클린 장치로 릴레이하는 컨트롤러.분석가 워크스테이션 + 루팅된 장치
백엔드backend/신뢰 당사자(Relying Party). 논스를 발급하고 증명 체인을 검증합니다.장치에서 접근 가능한 모든 머신

각 구성 요소에는 전체 세부 정보를 담은 자체 README가 있으며, 이 파일은 이를 하나로 묶습니다.

사전 요구 사항

  • 실제 장치 두 대. 증명에는 실제 하드웨어가 필요합니다. 에뮬레이터는 백엔드가 거부하는 소프트웨어 기반 체인을 반환합니다.
    • 데모 앱이 설치된 frida-server 17.16.4를 실행하는 루팅된 "분석" 장치.
    • 증명 서버 앱이 설치된 클린(clean), 수정되지 않은 장치(잠긴 부트로더, StrongBox 또는 TEE).
  • 백엔드용으로 동일한 네트워크에 있는 머신(Python 3, 의존성은 backend/requirements.txt에 있음).
  • 두 Android 앱을 빌드하기 위한 JDK 17-21(Android Studio 또는 Gradle 래퍼(./gradlew assembleDebug)를 사용한 명령줄에서 빌드).
  • Frida 에이전트를 재빌드하는 경우에만 워크스테이션에 Node 20 또는 22 LTS. 컴파일된 에이전트(instrumentation/_agent.js)는 커밋되어 있으므로 재빌드는 선택 사항입니다.
  • 세 개(장치 및 백엔드) 모두 네트워크를 통해 서로 연결할 수 있어야 합니다.

엔드투엔드 실행

다음 순서로 구성 요소를 가동합니다.

  1. 백엔드. 두 장치 모두에서 접근 가능한 머신에서:

    cd backend
    pip install -r requirements.txt
    python3 attestation_backend.py      # listens on 0.0.0.0:8080
    
  2. 클린 장치. 증명 서버 앱을 빌드하여 설치한 다음 열고 START SERVER를 탭하고 표시된 URL(예: http://192.168.1.42:8080)을 기록해 둡니다.

  3. 루팅된 장치. frida-server를 시작하고 데모 앱을 빌드하여 설치한 다음 열고 백엔드 주소(host:port)를 입력합니다.

    두 앱 모두 Android Studio 또는 Gradle 래퍼(./gradlew assembleDebug, JDK 17-21)를 사용한 명령줄에서 빌드할 수 있습니다. 자세한 내용은 각 앱의 README를 참조하세요.

  4. 릴레이. 워크스테이션에서:

    cd instrumentation
    python3 control.py --host <clean-device-ip> --port 8080
    

    컨트롤러는 데모 앱을 실행하고 후크를 설치한 다음 앱을 재개합니다.

  5. 트리거. 데모 앱에서 RUN ATTESTATION을 탭합니다. 백엔드는 valid(유효)를 반환합니다. 릴레이된 체인은 잠긴 부트로더를 보고합니다.

  6. 음성 대조군. control.py를 중지하고 RUN ATTESTATION을 다시 탭합니다. 이제 데모 앱은 루팅된 장치 자체의 체인을 보내며 백엔드는 이를 거부합니다. 이것이 릴레이가 무력화하는 검사입니다.

에이전트 재빌드(agent/agent.ts를 변경하는 경우에만):

cd instrumentation
nvm use          # Node 22 from .nvmrc
npm install
npm run build    # regenerates _agent.js

저장소 구조

apps/
  QuarkslabAttestationDemo/     target client app (Android Studio project)
  QuarkslabAttestationServer/   clean-device attestation oracle (Android Studio project)
instrumentation/                Frida agent + relay controller
backend/                        Python attestation validator
LICENSE                         MIT

라이선스 및 저작자 표시

Copyright 2026 Quarkslab. MIT 라이선스에 따라 사용이 허가됩니다. LICENSE를 참조하세요.

이 저장소는 Quarkslab 기사를 예시로 보여줍니다.

도구 다운로드