Play Integrity Attestation Bypass (SafetyNet Replacement)

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

Що робить Play Integrity

Play Integrity — це наступник SafetyNet від Google для атестації додатків (app attestation). Додаток викликає API, Google Play Services збирає програмні/апаратні сигнали, відправляє їх зашифрованими на googleapis.com, а Google повертає JWT, який підписаний і зашифрований Google. Додаток пересилає токен на свій бекенд, який перевіряє підпис за публічним ключем Google, розшифровує payload і застосовує політику на основі полів вердикту:

  • appIntegrity: співпадіння збірки/підпису APK (без перепакування/підробки).
  • deviceIntegrity: справжній та сертифікований пристрій, заблокований bootloader, відсутність root/пошкоджень системи.
  • accountDetails: інсталяція через Google Play.

Поширені прапорці вердикту, що застосовуються:

  • MEETS_BASIC_INTEGRITY: токен згенеровано справжніми Play Services (не емулятор/не підроблений транспорт).
  • MEETS_DEVICE_INTEGRITY: справжній/сертифікований пристрій, bootloader заблокований, немає root/пошкодження системи.
  • MEETS_STRONG_INTEGRITY: вимагає DEVICE плюс свіжі патчі безпеки на всіх розділах (OS + vendor).

Bypass Model

Замість підробки JWT від Google, підмінюють сигнали, які оцінює Google, щоб вони відповідали іншому, легітимному профілю пристрою. Ланцюжок атаки:

  1. Сховати root, щоб локальні перевірки та запити Play Services не бачили Magisk/su.
  2. Замінити key attestation certificate chain (keybox.xml) на той з реального пристрою, щоб Play Integrity бачив сертифікований/заблокований пристрій.
  3. Підмінити security patch level, щоб задовольнити MEETS_STRONG_INTEGRITY.

Google пом’якшує наслідки шляхом відкликання зловживаних keyboxes; коли keybox заблоковано, потрібна ротація.

Prerequisites & Tooling

Achieve MEETS_BASIC_INTEGRITY + MEETS_DEVICE_INTEGRITY

  1. Install modules & reboot: Flash TrickyStore and Tricky Addon in Magisk, reboot.
  2. Configure TrickyStore (via KSU Web UI): Select TrickyStoreSelect AllDeselect UnnecessarySave.
  3. Inject a valid keybox: In Keybox, choose Valid to download/apply a new keybox.xml (vendor attestation credentials). This file underpins hardware key attestation and is now spoofed from a certified/locked device.
  4. Verify: Run Play Integrity API CheckerMEETS_BASIC_INTEGRITY and MEETS_DEVICE_INTEGRITY should pass. In Key Attestation the bootloader appears locked because the attestation chain is replaced.

Achieve MEETS_STRONG_INTEGRITY (Patch-Level Spoof)

STRONG fails on outdated patch levels. TrickyStore can spoof a modern security patch date for all partitions:

  1. In TrickyStore, pick Set Security PatchGet Security Patch DateSave.
  2. Re-run Play Integrity API Checker; MEETS_STRONG_INTEGRITY should now pass.

Operational Notes

  • Revocation risk: Hitting the API repeatedly with the same keybox.xml can flag and block it. If blocked, replace with a fresh valid keybox.
  • Arms race: Publicly shared keyboxes burn fast; keep private copies and track community module updates (XDA/Telegram/GitHub) for new working chains.
  • Scope: This bypass only spoofs attestation inputs; backend signature verification by Google still succeeds because the JWT itself is genuine.

References

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks