Play Integrity Attestation Bypass (SafetyNet Replacement)

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

What Play Integrity Does

Play Integrity는 앱 attestation을 위한 Google의 SafetyNet 후속입니다. 앱이 API를 호출하면 Google Play Services가 소프트웨어/하드웨어 신호를 수집해 googleapis.com으로 암호화 전송하고, Google은 JWT서명하고 암호화된 형태로 반환합니다. 앱은 토큰을 백엔드로 전달하고, 백엔드는 Google의 공개키로 서명을 검증하고 페이로드를 복호화한 뒤 다음 verdict 필드에 따라 정책을 적용합니다:

  • appIntegrity: APK 빌드/서명 일치(재패키지/변조 없음).
  • deviceIntegrity: 정품 & 인증된 디바이스, 잠긴 bootloader, 루트/시스템 변조 없음.
  • accountDetails: Google Play를 통한 설치.

일반적으로 강제되는 주요 verdict 플래그:

  • MEETS_BASIC_INTEGRITY: 토큰이 정품 Play Services(에뮬레이터/변조된 전송 아님)에서 생성됨.
  • MEETS_DEVICE_INTEGRITY: 정품/인증된 디바이스, bootloader 잠김, 루트/시스템 변조 없음.
  • MEETS_STRONG_INTEGRITY: DEVICE에 더해 모든 파티션(OS + vendor)에 대한 최신 보안 패치가 필요함.

Bypass Model

Google의 JWT를 위조하는 대신, Google이 평가하는 신호를 스푸핑하여 다른 합법적인 디바이스 프로파일과 일치시키는 방식입니다. 공격 체인은 다음과 같습니다:

  1. 로컬 검사와 Play Services 프로브가 Magisk/su를 발견하지 못하도록 루트 숨기기.
  2. Play Integrity가 인증된/잠긴 디바이스로 인식하도록 key attestation certificate chain(keybox.xml)을 정품 디바이스의 것으로 교체.
  3. MEETS_STRONG_INTEGRITY를 만족시키기 위해 security patch level 스푸핑.

Google은 남용된 keybox를 **폐기(revoke)**함으로써 완화합니다; 차단된 경우 keybox 교체가 필요합니다.

Prerequisites & Tooling

Achieve MEETS_BASIC_INTEGRITY + MEETS_DEVICE_INTEGRITY

  1. Install modules & reboot: Magisk에 TrickyStoreTricky Addon을 플래시하고 재부팅.
  2. Configure TrickyStore (via KSU Web UI): TrickyStoreSelect AllDeselect UnnecessarySave 선택.
  3. Inject a valid keybox: Keybox에서 Valid를 선택해 새로운 keybox.xml(vendor attestation credentials)을 다운로드/적용. 이 파일은 하드웨어 키 attestation을 지탱하며, 이제 인증된/잠긴 디바이스에서 가져온 것으로 스푸핑됩니다.
  4. Verify: Play Integrity API Checker 실행 → MEETS_BASIC_INTEGRITYMEETS_DEVICE_INTEGRITY가 통과해야 함. Key Attestation에서는 attestation 체인이 교체되어 bootloader가 locked로 표시됩니다.

Achieve MEETS_STRONG_INTEGRITY (Patch-Level Spoof)

STRONG은 오래된 패치 레벨에서 실패합니다. TrickyStore는 모든 파티션에 대해 최신 보안 패치 날짜를 스푸핑할 수 있습니다:

  1. TrickyStore에서 Set Security PatchGet Security Patch DateSave 선택.
  2. Play Integrity API Checker를 다시 실행; MEETS_STRONG_INTEGRITY가 통과해야 합니다.

Operational Notes

  • Revocation risk: 동일한 keybox.xml로 API를 반복 호출하면 플래그되어 차단될 수 있습니다. 차단되면 새로운 유효 keybox로 교체하세요.
  • Arms race: 공개 공유된 keybox는 빠르게 소모됩니다; 개인 사본을 유지하고 커뮤니티 모듈 업데이트(XDA/Telegram/GitHub)를 추적하세요.
  • Scope: 이 우회는 attestation 입력만 스푸핑합니다; JWT 자체는 정품이기 때문에 Google의 백엔드 서명 검증은 여전히 성공합니다.

References

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기