Bypass Biometric Authentication (Android)

Support HackTricks

Metodo 1 – Bypass senza 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 NULL CryptoObject in onAuthenticationSucceeded(...). Lo script forza un bypass automatico dell'autenticazione tramite impronta digitale al momento dell'invocazione del metodo. Di seguito è riportato un frammento semplificato che dimostra il bypass in un contesto di impronta digitale 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 Frida:

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

Metodo 2 – Approccio alla Gestione delle Eccezioni

Un altro Frida script di WithSecure affronta il bypass dell'uso di oggetti crittografici insicuri. Lo script invoca onAuthenticationSucceeded con un CryptoObject che non è stato autorizzato da un'impronta digitale. Se l'applicazione tenta di utilizzare un oggetto cifrato diverso, verrà generata un'eccezione. Lo script si prepara a invocare onAuthenticationSucceeded e gestire il javax.crypto.IllegalBlockSizeException nella classe Cipher, assicurando 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

Al raggiungimento dello schermo delle impronte digitali e all'inizio 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 – Framework di Strumentazione

I framework di strumentazione come Xposed o Frida possono essere utilizzati per agganciarsi ai metodi dell'applicazione durante l'esecuzione. Per l'autenticazione tramite impronta digitale, questi framework possono:

  1. Fingere i Callback di Autenticazione: Agganciandosi ai metodi onAuthenticationSucceeded, onAuthenticationFailed o onAuthenticationError del BiometricPrompt.AuthenticationCallback, puoi controllare l'esito del processo di autenticazione tramite impronta digitale.

  2. Evitare il SSL Pinning: Questo 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 – Ingegneria inversa e modifica del codice

Strumenti di ingegneria inversa come APKTool, dex2jar e JD-GUI possono essere utilizzati per decompilare un'applicazione Android, leggere il suo 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 (come il codice Java).

  2. Analisi del codice: Cercare l'implementazione dell'autenticazione tramite impronte digitali e identificare potenziali vulnerabilità (come meccanismi di fallback o controlli di validazione inadeguati).

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

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 rootare i propri dispositivi e aggiungere moduli che possono modificare o falsificare informazioni a livello hardware, comprese le impronte digitali.

  2. Script personalizzati: Possono essere scritti script per interagire con l'Android Debug Bridge (ADB) o direttamente con il backend dell'applicazione per simulare o bypassare l'autenticazione tramite impronte digitali.

Riferimenti

Support HackTricks

Last updated