# Saltar la Autenticación Biométrica (Android)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
### **Método 1 – Saltar sin Usar Objeto Criptográfico** El enfoque aquí está en el callback *onAuthenticationSucceeded*, que es crucial en el proceso de autenticación. Los investigadores de WithSecure desarrollaron un [script de Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js), que permite saltar el *CryptoObject* NULL en *onAuthenticationSucceeded(...)*. El script fuerza un salto automático de la autenticación biométrica al invocar el método. A continuación se muestra un fragmento simplificado que demuestra el salto en un contexto de huella dactilar de Android, con la aplicación completa disponible en [GitHub](https://github.com/St3v3nsS/InsecureBanking). ```javascript 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(); } }); ``` Comando para ejecutar el script de Frida: ```bash frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js ``` ### **Método 2 - Enfoque de Manejo de Excepciones** Otro [script de Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) de WithSecure aborda eludir el uso inseguro de objetos criptográficos. El script invoca *onAuthenticationSucceeded* con un *CryptoObject* que no ha sido autorizado por una huella dactilar. Si la aplicación intenta usar un objeto de cifrado diferente, desencadenará una excepción. El script se prepara para invocar *onAuthenticationSucceeded* y manejar la *javax.crypto.IllegalBlockSizeException* en la clase _Cipher_, asegurando que los objetos subsecuentes utilizados por la aplicación estén encriptados con la nueva clave. Comando para ejecutar el script de Frida: ```bash frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js ``` Al llegar a la pantalla de huellas dactilares y al iniciar `authenticate()`, escribe `bypass()` en la consola de Frida para activar el bypass: ``` 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étodo 3 – Marcos de Instrumentación** Los marcos de instrumentación como Xposed o Frida se pueden utilizar para engancharse en los métodos de la aplicación en tiempo de ejecución. Para la autenticación biométrica, estos marcos pueden: 1. **Falsificar las Devoluciones de Autenticación**: Al engancharse en los métodos `onAuthenticationSucceeded`, `onAuthenticationFailed` o `onAuthenticationError` del `BiometricPrompt.AuthenticationCallback`, se puede controlar el resultado del proceso de autenticación biométrica. 2. **Saltar el Pinning SSL**: Esto permite a un atacante interceptar y modificar el tráfico entre el cliente y el servidor, potencialmente alterando el proceso de autenticación o robando datos sensibles. Ejemplo de comando para Frida: ```bash frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in ``` ### **Método 4 – Ingeniería Inversa y Modificación de Código** Herramientas de ingeniería inversa como `APKTool`, `dex2jar` y `JD-GUI` se pueden utilizar para descompilar una aplicación de Android, leer su código fuente y comprender su mecanismo de autenticación. Los pasos generalmente incluyen: 1. **Descompilar el APK**: Convertir el archivo APK a un formato más legible para humanos (como código Java). 2. **Analizar el Código**: Buscar la implementación de la autenticación por huella dactilar e identificar posibles debilidades (como mecanismos de respaldo o validaciones inadecuadas). 3. **Recompilar el APK**: Después de modificar el código para evitar la autenticación por huella dactilar, la aplicación se vuelve a compilar, firmar e instalar en el dispositivo para su prueba. ### **Método 5 – Uso de Herramientas de Autenticación Personalizadas** Existen herramientas y scripts especializados diseñados para probar y evadir mecanismos de autenticación. Por ejemplo: 1. **Módulos MAGISK**: MAGISK es una herramienta para Android que permite a los usuarios rootear sus dispositivos y agregar módulos que pueden modificar o falsificar información a nivel de hardware, incluidas las huellas dactilares. 2. **Scripts Personalizados**: Se pueden escribir scripts para interactuar con el Android Debug Bridge (ADB) o directamente con el backend de la aplicación para simular o evadir la autenticación por huella dactilar. # Referencias * [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)