hacktricks/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md

7.4 KiB
Raw Blame History

Bypass Biometric Authentication (Android)

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Méthode 1 Contournement sans utilisation d'objet Crypto

L'accent est mis ici sur le onAuthenticationSucceeded callback, qui est crucial dans le processus d'authentification. Des chercheurs de WithSecure ont développé un script Frida, permettant de contourner le NULL CryptoObject dans onAuthenticationSucceeded(...). Le script force un contournement automatique de l'authentification par empreinte digitale lors de l'invocation de la méthode. Ci-dessous se trouve un extrait simplifié démontrant le contournement dans un contexte d'empreinte digitale Android, avec l'application complète disponible sur GitHub.

biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
});

Commande pour exécuter le script Frida :

frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js

Méthode 2 Approche de gestion des exceptions

Un autre script Frida de WithSecure traite du contournement de l'utilisation d'objets cryptographiques non sécurisés. Le script invoque onAuthenticationSucceeded avec un CryptoObject qui n'a pas été autorisé par une empreinte digitale. Si l'application essaie d'utiliser un objet de chiffrement différent, cela déclenchera une exception. Le script se prépare à invoquer onAuthenticationSucceeded et à gérer le javax.crypto.IllegalBlockSizeException dans la classe Cipher, garantissant que les objets suivants utilisés par l'application sont chiffrés avec la nouvelle clé.

Commande pour exécuter le script Frida :

frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js

Lors de l'accès à l'écran d'empreinte digitale et de l'initiation de authenticate(), tapez bypass() dans la console Frida pour activer le contournement :

Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()

Méthode 3 Cadres d'instrumentation

Les cadres d'instrumentation comme Xposed ou Frida peuvent être utilisés pour s'accrocher aux méthodes d'application à l'exécution. Pour l'authentification par empreinte digitale, ces cadres peuvent :

  1. Simuler les rappels d'authentification : En s'accrochant aux méthodes onAuthenticationSucceeded, onAuthenticationFailed ou onAuthenticationError de BiometricPrompt.AuthenticationCallback, vous pouvez contrôler le résultat du processus d'authentification par empreinte digitale.
  2. Contourner le SSL Pinning : Cela permet à un attaquant d'intercepter et de modifier le trafic entre le client et le serveur, potentiellement en altérant le processus d'authentification ou en volant des données sensibles.

Exemple de commande pour Frida :

frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in

Méthode 4 Ingénierie Inverse & Modification de Code

Les outils d'ingénierie inverse comme APKTool, dex2jar et JD-GUI peuvent être utilisés pour décompiler une application Android, lire son code source et comprendre son mécanisme d'authentification. Les étapes incluent généralement :

  1. Décompiler l'APK : Convertir le fichier APK en un format plus lisible par l'homme (comme le code Java).
  2. Analyser le Code : Rechercher l'implémentation de l'authentification par empreinte digitale et identifier les faiblesses potentielles (comme les mécanismes de secours ou les vérifications de validation incorrectes).
  3. Recompiler l'APK : Après avoir modifié le code pour contourner l'authentification par empreinte digitale, l'application est recompilée, signée et installée sur l'appareil pour des tests.

Méthode 5 Utilisation d'Outils d'Authentification Personnalisés

Il existe des outils et des scripts spécialisés conçus pour tester et contourner les mécanismes d'authentification. Par exemple :

  1. Modules MAGISK : MAGISK est un outil pour Android qui permet aux utilisateurs de rooter leurs appareils et d'ajouter des modules qui peuvent modifier ou usurper des informations au niveau matériel, y compris les empreintes digitales.
  2. Scripts Personnalisés : Des scripts peuvent être écrits pour interagir avec l'Android Debug Bridge (ADB) ou directement avec le backend de l'application pour simuler ou contourner l'authentification par empreinte digitale.

Références

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}