marp | theme | class | paginate | header | footer |
---|---|---|---|---|---|
true |
acceis |
invert |
true |
![height:20px](themes/logo_acceis_white.svg) |
**SafetyNet Attestation API bypass** - 14/02/2023 - Alexandre ZANNi (@noraj) |
SafetyNet Attestation API est une API Android … (blahblah) … permet d'évaluer l'intégrité de l'appareil.
- SNCF Connect (Pass Navigo)
- Netflix
- Pokémon Go
- Fortnite
- Android Pay
- des apps de banque…
- Concordance du profil CTS :
- Détection des chargeurs d'amorçage (bootloader) déverrouillés
- Détection des ROM personnalisées
- Détections des appareils non certifiés
- Intégrité basique :
- Détection des émulateurs
- Détection des appareils débridés (root)
- Détection des cadriciels crochetage
cf. DroidGuard: A Deep Dive into SafetyNet — Romain Thomas
Réponse
{
"timestampMs": 9860437986543,
"nonce": "R2Rra24fVm5xa2Mg",
"apkPackageName": "com.package.name.of.requesting.app",
"apkCertificateDigestSha256": ["base64 encoded, SHA-256 hash of the
certificate used to sign requesting app"],
"ctsProfileMatch": true,
"basicIntegrity": true,
"evaluationType": "BASIC",
"deprecationInformation": "..."
}
evaluationType
2 valeurs possibles :
BASIC
basée sur les mesures et données de référencesHARDWARE_BACKED
utilise des fonctionnalités de sécurité matérielles comme les clés d'attestation matérielles (> Android 8.0 / API 26)
Pour accéder aux applications qui font la vérification et qui nous bloque dans les cas suivants :
- ROM personallisée
- Téléphone débridé (root)
- Les deux à la fois
- Souvent pas possible ou souhaitable de re-verrouiller le chargeur d'amorçage (bootloader)
basicIntegrity
: ne pose pas de problème, facile à contourner 😎ctsProfileMatch
: potentiellement plus complexe 🫤
- Usurper l’empreinte de l'appareil (
ro.build.fingerprint
) - Usurper le niveau de correctif de sécurité
ro.build.version.security_patch
(date) - Usurpation du modèle
ro.product.model
➕ d'autres trucs
Module Magisk utilisant resetprop
https://github.com/Magisk-Modules-Repo/MagiskHidePropsConf
MagiskHide Props Config v6.1.2
by Didgeridoohan @ XDA Developers
=====================================
Select an option below.
=====================================
1 - Edit device fingerprint
2 - Force BASIC key attestation
3 - Device simulation (disabled)
4 - Edit MagiskHide props (active)
5 - Add/edit custom props
6 - Delete prop values
7 - Script settings
8 - Collect logs
u - Perform module update check
r - Reset all options/settings
b - Reboot device
e - Exit
See the module readme or the
support thread @ XDA for details.
Enter your desired option:
Et les attestations matérielles (Android > 8) ?
Module Magisk
https://github.com/kdrag0n/safetynet-fix
Ce module permet de contourner les attestations matérielles de profil CTS SafetyNet et Play Integrity.
Utilise Zygisk pour injecter du code dans le processus Play Services et enregistre un faux magasin de clés (keystore) qui préempte le véritable. 🤔
- Zygisk (Magisk en Zygote, remplace Magisk Hide)
- Zygote (1er processus au démarrage)
- Cache le débridage sans interagir avec les applications
Lorsque Play Services tente d'utiliser l'attestation de clé, il lève une exception et prétend que l'appareil ne prend pas en charge l'attestation de clé. 😏
Cela oblige SafetyNet à se rabattre sur l'attestation de base, qui est beaucoup plus faible et peut être contournée avec les méthodes existantes. 💪
Mais les ingénieurs de Google ne sont pas si bêtes. 🤓 Ça ne va pas fonctionner aussi simplement. 😱
Google tiens à jour une base de données sur ses serveurs des appareils qui supportent les attestations basées sur le matériel et va donc bloquer l'attestation basique sur ces appareils. 🛑
Ce module va donc ajouter un espace au nom du modèle de l'appareil. Cela va avoir un impact minimal sur l'interface utilisateur et sera appliqué seulement pour Play Services et uniquement dans le cadre de SafetyNet. Le nom de modèle ne correspondra donc plus exactement. 💡
POCO/alioth_global/alioth:12/SKQ1.211006.001/V13.0.3.0.SKHMIXM:user/release-keys
2023-01-05
POCO/alioth_eea/alioth:12/SKQ1.211006.001/V13.0.9.0.SKHEUXM:user/release-keys
2022-11-01
Merci à Rémi
pour le partage des propriétés d'usine.