Bypass Biometric Authentication (Android)

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Metodo 1 - Bypass tramite l'assenza di utilizzo di Crypto Object

L'attenzione qui è sul callback onAuthenticationSucceeded, che è cruciale nel processo di autenticazione. I ricercatori di WithSecure hanno sviluppato uno script Frida, che consente di bypassare il CryptoObject NULL in onAuthenticationSucceeded(...). Lo script forza un bypass automatico dell'autenticazione delle impronte digitali al momento dell'invocazione del metodo. Di seguito è riportato un frammento semplificato che illustra il bypass in un contesto di impronte digitali Android, con l'applicazione completa disponibile su 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();
}
});

Comando per eseguire lo script di Frida:

frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js

Metodo 2 - Approccio di gestione delle eccezioni

Un altro script Frida di WithSecure affronta il bypass dell'uso insicuro dell'oggetto crittografico. Lo script invoca onAuthenticationSucceeded con un CryptoObject che non è stato autorizzato da un'impronta digitale. Se l'applicazione cerca di utilizzare un oggetto cifratura diverso, verrà generata un'eccezione. Lo script si prepara ad invocare onAuthenticationSucceeded e gestisce l'eccezione javax.crypto.IllegalBlockSizeException nella classe Cipher, garantendo che gli oggetti successivi utilizzati dall'applicazione siano crittografati con la nuova chiave.

Comando per eseguire lo script Frida:

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

Una volta raggiunta la schermata dell'impronta digitale e l'avvio di authenticate(), digita bypass() nella console di Frida per attivare il 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()

Metodo 3 - Strumenti di Instrumentation

I framework di instrumentazione come Xposed o Frida possono essere utilizzati per agganciarsi ai metodi dell'applicazione durante l'esecuzione. Per l'autenticazione delle impronte digitali, questi framework possono:

  1. Simulare i Callback di Autenticazione: Agganciandosi ai metodi onAuthenticationSucceeded, onAuthenticationFailed o onAuthenticationError dell'AuthenticationCallback di BiometricPrompt, è possibile controllare l'esito del processo di autenticazione delle impronte digitali.

  2. Bypassare l'SSL Pinning: Ciò consente a un attaccante di intercettare e modificare il traffico tra il client e il server, potenzialmente alterando il processo di autenticazione o rubando dati sensibili.

Esempio di comando per Frida:

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

Metodo 4 - Reverse Engineering e Modifica del Codice

Strumenti di reverse engineering come APKTool, dex2jar e JD-GUI possono essere utilizzati per decompilare un'applicazione Android, leggerne il codice sorgente e comprendere il suo meccanismo di autenticazione. I passaggi generalmente includono:

  1. Decompilazione dell'APK: Convertire il file APK in un formato più leggibile per gli esseri umani (come il codice Java).

  2. Analisi del Codice: Cercare l'implementazione dell'autenticazione tramite impronta digitale e individuare eventuali debolezze (come meccanismi di fallback o controlli di convalida impropri).

  3. Ricompilazione dell'APK: Dopo aver modificato il codice per bypassare l'autenticazione tramite impronta digitale, l'applicazione viene ricompilata, firmata e installata sul dispositivo per il testing.

Metodo 5 - Utilizzo di Strumenti di Autenticazione Personalizzati

Esistono strumenti e script specializzati progettati per testare e bypassare i meccanismi di autenticazione. Ad esempio:

  1. Moduli MAGISK: MAGISK è uno strumento per Android che consente agli utenti di eseguire il root dei propri dispositivi e aggiungere moduli in grado di modificare o falsificare informazioni a livello hardware, inclusi le impronte digitali.

  2. Script personalizzati: Gli script possono essere scritti per interagire con il ponte di debug di Android (ADB) o direttamente con il backend dell'applicazione per simulare o bypassare l'autenticazione tramite impronta digitale.

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Last updated