Bypass Biometric Authentication (Android)

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Méthode 1 - Contournement sans utilisation d'objet Crypto

L'accent est mis ici sur le rappel onAuthenticationSucceeded, qui est crucial dans le processus d'authentification. Les chercheurs de WithSecure ont développé un script Frida, permettant de contourner le CryptoObject NULL 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 aborde le 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 tente d'utiliser un objet de chiffrement différent, cela déclenchera une exception. Le script se prépare à invoquer onAuthenticationSucceeded et à gérer l'exception javax.crypto.IllegalBlockSizeException dans la classe Cipher, garantissant que les objets ultérieurs 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

Lorsque vous atteignez l'écran d'empreintes digitales et que vous lancez authenticate(), saisissez 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 accrocher des méthodes d'application en temps d'exécution. Pour l'authentification par empreinte digitale, ces cadres peuvent :

  1. Simuler les rappels d'authentification : En accrochant les méthodes onAuthenticationSucceeded, onAuthenticationFailed, ou onAuthenticationError du BiometricPrompt.AuthenticationCallback, vous pouvez contrôler le résultat du processus d'authentification par empreinte digitale.

  2. Contourner l'épinglage SSL : Cela permet à un attaquant d'intercepter et de modifier le trafic entre le client et le serveur, potentiellement altérant le processus d'authentification ou volant des données sensibles.

Commande d'exemple pour Frida :

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

Méthode 4 – Rétro-ingénierie & Modification de Code

Des outils de rétro-ingénierie 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 comprennent généralement :

  1. Décompiler l'APK : Convertir le fichier APK dans un format plus lisible par les humains (comme du code Java).

  2. Analyser le Code : Rechercher l'implémentation de l'authentification par empreinte digitale et identifier les éventuelles faiblesses (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 les tests.

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

Il existe des outils spécialisés et des scripts 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 pouvant modifier ou imiter des informations au niveau matériel, y compris les empreintes digitales.

  2. Scripts Personnalisés : Des scripts peuvent être écrits pour interagir avec le Pont de Débogage Android (ADB) ou directement avec le backend de l'application pour simuler ou contourner l'authentification par empreinte digitale.

Références

Dernière mise à jour