Play Integrity Attestation Bypass (SafetyNet Replacement)

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Cosa fa Play Integrity

Play Integrity è il successore di Google di SafetyNet per l’app attestation. L’app chiama l’API, Google Play Services raccoglie segnali software/hardware, li invia criptati a googleapis.com, e Google restituisce un JWT che è firmato e criptato da Google. L’app inoltra il token al suo backend, che valida la firma con la chiave pubblica di Google, decripta il payload e applica le policy basate sui campi di verdetto:

  • appIntegrity: corrispondenza build/firma dell’APK (nessun repack/tamper).
  • deviceIntegrity: dispositivo genuino & certificato, bootloader bloccato, nessun root/manomissione del sistema.
  • accountDetails: installazione tramite Google Play.

Flag di verdetto chiave comunemente applicati:

  • MEETS_BASIC_INTEGRITY: token generato da genuine Play Services (non emulator/trasporto manomesso).
  • MEETS_DEVICE_INTEGRITY: dispositivo genuino/certificato, bootloader bloccato, nessun root/manomissione del sistema.
  • MEETS_STRONG_INTEGRITY: richiede DEVICE più recenti patch di sicurezza su tutte le partition (OS + vendor).

Modello di Bypass

Invece di forgiare il JWT di Google, spoofare i segnali che Google valuta in modo che corrispondano a un diverso profilo dispositivo legittimo. La catena d’attacco:

  1. Nascondere il root così che i controlli locali e le probe di Play Services non vedano Magisk/su.
  2. Sostituire la catena di certificati di key attestation (keybox.xml) con una proveniente da un dispositivo genuino così Play Integrity vede un dispositivo certificato/bloccato.
  3. Spoofare il security patch level per soddisfare MEETS_STRONG_INTEGRITY.

Google mitiga revocando i keybox abusati; è necessaria la rotazione quando un keybox viene bloccato.

Prerequisiti & Tooling

Ottenere MEETS_BASIC_INTEGRITY + MEETS_DEVICE_INTEGRITY

  1. Installare i moduli & reboot: Flash TrickyStore e Tricky Addon in Magisk, reboot.
  2. Configurare TrickyStore (via KSU Web UI): Select TrickyStoreSelect AllDeselect UnnecessarySave.
  3. Iniettare un keybox valido: In Keybox, scegliere Valid per scaricare/applicare un nuovo keybox.xml (credenziali di attestation vendor). Questo file sostiene la key attestation hardware ed è ora spoofato da un dispositivo certificato/bloccato.
  4. Verificare: Eseguire Play Integrity API CheckerMEETS_BASIC_INTEGRITY e MEETS_DEVICE_INTEGRITY dovrebbero passare. In Key Attestation il bootloader appare locked perché la catena di attestation è stata sostituita.

Ottenere MEETS_STRONG_INTEGRITY (Patch-Level Spoof)

STRONG fallisce su patch level obsoleti. TrickyStore può spoofare una data di security patch moderna per tutte le partition:

  1. In TrickyStore, scegliere Set Security PatchGet Security Patch DateSave.
  2. Rieseguire Play Integrity API Checker; MEETS_STRONG_INTEGRITY dovrebbe ora passare.

Note Operative

  • Rischio di revoca: Colpire ripetutamente l’API con lo stesso keybox.xml può segnalarlo e bloccarlo. Se bloccato, sostituire con un keybox valido nuovo.
  • Arms race: I keybox condivisi pubblicamente si esauriscono in fretta; mantenere copie private e seguire gli aggiornamenti dei moduli della community (XDA/Telegram/GitHub) per nuove catene funzionanti.
  • Scope: Questo bypass spoofa solo gli input di attestation; la verifica della firma sul backend da parte di Google continua a riuscire perché il JWT stesso è genuino.

Riferimenti

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks