hacktricks/mobile-pentesting/android-app-pentesting/bypass-biometric-authentication-android.md
2023-06-03 13:10:46 +00:00

6.2 KiB

Contourner l'authentification biométrique (Android)

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Ces méthodes ont été copiées depuis https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/

Méthode 1 - Lorsque l'objet crypto n'est pas utilisé

La mise en œuvre de l'authentification repose sur l'appel du rappel onAuthenticationSucceded . Les chercheurs de F-Secure ont développé un script Frida qui peut être utilisé pour contourner l'objet CryptoObject NULL dans onAuthenticationSucceeded(…). Le script contournera automatiquement l'empreinte digitale lorsque la méthode susmentionnée est appelée. Voici un court exemple qui montre le contournement pour l'empreinte digitale Android. L'application complète peut être téléchargée depuis mon 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();
            }
});
frida -U -f com.st3v3nss.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js

Méthode 2 - Gestion des exceptions

Ce script Frida développé par F-Secure peut être utilisé pour contourner l'utilisation non sécurisée de l'objet crypto. Tout ce que le script doit faire est d'appeler manuellement onAuthenticationSucceded avec un CryptoObject non autorisé (non déverrouillé par empreinte digitale) stocké dans le Keystore. Le problème est que si l'application tente d'utiliser un autre objet de chiffrement, alors une exception sera levée. Ce script tentera d'appeler onAuthenticationSucceded et de capturer l'exception javax.crypto.IllegalBlockSizeException dans la classe Cipher. Désormais, tous les objets utilisés par l'application seront chiffrés à l'aide de cette nouvelle clé.

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

Maintenant, allez sur l'écran d'empreinte digitale et attendez que la fonction authenticate() soit appelée. Une fois que vous la voyez à l'écran, tapez bypass() dans la console Frida :

Spawning `com.st3v3nss.insecurebankingfingerprint`...                   
[Android Emulator 5554::com.st3v3nss.insecurebankingfingerprint ]-> Hooking BiometricPrompt.authenticate()...
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
[Android Emulator 5554::com.st3v3nss.insecurebankingfingerprint ]-> bypass()
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥