mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-02 09:29:59 +00:00
85 lines
8.2 KiB
Markdown
85 lines
8.2 KiB
Markdown
# Eludir la Autenticación Biométrica (Android)
|
||
|
||
<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 acceder a la **última versión de 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||
* Consigue el [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**.
|
||
|
||
</details>
|
||
|
||
### **Método 1 – Eludir con No Uso de Objeto Crypto**
|
||
|
||
El enfoque aquí está en el callback *onAuthenticationSucceeded*, que es crucial en el proceso de autenticación. Investigadores de WithSecure desarrollaron un [script de Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js), que permite eludir el *CryptoObject* NULL en *onAuthenticationSucceeded(...)*. El script fuerza un bypass automático de la autenticación de huella digital al invocar el método. A continuación se muestra un fragmento simplificado que demuestra el bypass en un contexto de Huella Digital 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 la elusión del uso inseguro de objetos criptográficos. El script invoca *onAuthenticationSucceeded* con un *CryptoObject* que no ha sido autorizado por una huella digital. Si la aplicación intenta usar un objeto de cifrado diferente, se 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 subsiguientes 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 huella digital y al inicio de `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**
|
||
|
||
Marcos de instrumentación como Xposed o Frida pueden ser utilizados para intervenir en métodos de aplicaciones en tiempo de ejecución. Para la autenticación por huella dactilar, estos marcos pueden:
|
||
|
||
1. **Simular los Callbacks de Autenticación**: Al intervenir en los métodos `onAuthenticationSucceeded`, `onAuthenticationFailed`, o `onAuthenticationError` de `BiometricPrompt.AuthenticationCallback`, puedes controlar el resultado del proceso de autenticación por huella dactilar.
|
||
2. **Evitar SSL Pinning**: Esto permite a un atacante interceptar y modificar el tráfico entre el cliente y el servidor, alterando potencialmente 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` pueden ser utilizadas para descompilar una aplicación Android, leer su código fuente y entender su mecanismo de autenticación. Los pasos generalmente incluyen:
|
||
|
||
1. **Descompilación del APK**: Convertir el archivo APK a un formato más legible por humanos (como código Java).
|
||
2. **Análisis del Código**: Buscar la implementación de la autenticación por huella dactilar e identificar posibles debilidades (como mecanismos de reserva o verificaciones de validación inadecuadas).
|
||
3. **Recompilación del APK**: Después de modificar el código para eludir la autenticación por huella dactilar, la aplicación se recompila, firma y se instala en el dispositivo para pruebas.
|
||
|
||
### **Método 5 – Uso de Herramientas de Autenticación Personalizadas**
|
||
|
||
Existen herramientas y scripts especializados diseñados para probar y eludir 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 añadir módulos que pueden modificar o falsificar información a nivel de hardware, incluyendo 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 eludir 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/)
|
||
|
||
<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 de 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||
* Consigue el [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**.
|
||
|
||
</details>
|