Play Integrity Attestation Bypass (SafetyNet Replacement)

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

O que Play Integrity faz

Play Integrity é o sucessor do SafetyNet do Google para app attestation. O app chama a API, o Google Play Services coleta sinais de software/hardware, envia-os criptografados para googleapis.com, e o Google retorna um JWT que é assinado e criptografado pelo Google. O app encaminha o token para seu backend, que valida a assinatura com a chave pública do Google, descriptografa o payload e aplica políticas com base nos campos de veredicto:

  • appIntegrity: coincidência de build/assinatura do APK (sem repack/modificações).
  • deviceIntegrity: dispositivo genuíno & certificado, bootloader bloqueado, sem root/modificações no sistema.
  • accountDetails: instalação via Google Play.

Flags-chave de veredicto comumente aplicadas:

  • MEETS_BASIC_INTEGRITY: token gerado pelo Play Services genuíno (não emulador/transporte manipulado).
  • MEETS_DEVICE_INTEGRITY: dispositivo genuíno/certificado, bootloader bloqueado, sem root/modificações no sistema.
  • MEETS_STRONG_INTEGRITY: requer DEVICE mais patches de segurança recentes em todas as partições (OS + vendor).

Modelo de Bypass

Em vez de forjar o JWT do Google, falsifique os sinais que o Google avalia para que correspondam a um perfil de dispositivo legítimo diferente. A cadeia de ataque:

  1. Esconder o root para que checagens locais e sondas do Play Services não detectem Magisk/su.
  2. Substituir a key attestation certificate chain (keybox.xml) por uma vinda de um dispositivo genuíno para que o Play Integrity veja um dispositivo certificado/bootloader bloqueado.
  3. Falsificar o security patch level para satisfazer MEETS_STRONG_INTEGRITY.

O Google mitiga revogando keyboxes abusados; é necessário rotacionar quando um keybox é bloqueado.

Pré-requisitos & Tooling

Como atingir MEETS_BASIC_INTEGRITY + MEETS_DEVICE_INTEGRITY

  1. Instale os módulos & reinicie: Flash TrickyStore e Tricky Addon no Magisk, reinicie.
  2. Configure o TrickyStore (via KSU Web UI): Selecione TrickyStoreSelect AllDeselect UnnecessarySave.
  3. Injete um keybox válido: Em Keybox, escolha Valid para baixar/aplicar um novo keybox.xml (credenciais de attestation do vendor). Este arquivo sustenta a key attestation de hardware e agora é falsificado a partir de um dispositivo certificado/bootloader bloqueado.
  4. Verifique: Execute Play Integrity API CheckerMEETS_BASIC_INTEGRITY e MEETS_DEVICE_INTEGRITY devem passar. Em Key Attestation o bootloader aparece locked porque a cadeia de attestation foi substituída.

Como atingir MEETS_STRONG_INTEGRITY (Patch-Level Spoof)

STRONG falha em níveis de patch desatualizados. O TrickyStore pode falsificar uma data de security patch moderna para todas as partições:

  1. No TrickyStore, escolha Set Security PatchGet Security Patch DateSave.
  2. Reexecute o Play Integrity API Checker; MEETS_STRONG_INTEGRITY agora deve passar.

Notas Operacionais

  • Risco de revogação: Acionar a API repetidamente com o mesmo keybox.xml pode sinalizá-lo e bloqueá-lo. Se bloqueado, substitua por um keybox válido novo.
  • Corrida armamentista: Keyboxes compartilhados publicamente queimam rápido; mantenha cópias privadas e acompanhe atualizações de módulos da comunidade (XDA/Telegram/GitHub) para novas cadeias funcionando.
  • Escopo: Este bypass apenas falsifica os inputs de attestation; a verificação de assinatura no backend pelo Google ainda succeed porque o próprio JWT é genuíno.

References

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks