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

74 lines
6.5 KiB
Markdown
Raw Normal View History

# Saltar la Autenticación Biométrica (Android)
2023-06-05 18:33:24 +00:00
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿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)**.**
2023-06-05 18:33:24 +00:00
* **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)**.
</details>
### **Método 1 Saltar sin Usar Objeto Criptográfico**
2023-06-05 18:33:24 +00:00
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).
2023-06-05 18:33:24 +00:00
```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();
}
2023-06-05 18:33:24 +00:00
});
```
Comando para ejecutar el script de Frida:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
2023-06-05 18:33:24 +00:00
```
### **Método 2 - Enfoque de Manejo de Excepciones**
2023-06-05 18:33:24 +00:00
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
2023-06-05 18:33:24 +00:00
```
Al llegar a la pantalla de huellas dactilares y al iniciar `authenticate()`, escribe `bypass()` en la consola de Frida para activar el bypass:
2023-06-05 18:33:24 +00:00
```
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
2023-06-05 18:33:24 +00:00
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
2023-06-05 18:33:24 +00:00
```
### **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/)