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

87 lines
7.6 KiB
Markdown
Raw Normal View History

2024-02-10 13:03:23 +00:00
# Bypass dell'autenticazione biometrica (Android)
2022-10-26 09:06:33 +00:00
2024-02-08 03:06:37 +00:00
2022-10-26 09:06:33 +00:00
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-10-26 09:06:33 +00:00
2024-02-10 13:03:23 +00:00
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-10-26 09:06:33 +00:00
</details>
2024-02-10 13:03:23 +00:00
## **Metodo 1 - Bypass tramite l'assenza di utilizzo di Crypto Object**
2022-10-26 09:06:33 +00:00
2024-02-10 13:03:23 +00:00
L'attenzione qui è sul callback *onAuthenticationSucceeded*, che è cruciale nel processo di autenticazione. I ricercatori di WithSecure hanno sviluppato uno [script Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js), 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](https://github.com/St3v3nsS/InsecureBanking).
2022-10-26 09:06:33 +00:00
```javascript
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
2024-02-10 13:03:23 +00:00
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
2022-10-26 09:06:33 +00:00
});
```
2024-02-10 13:03:23 +00:00
Comando per eseguire lo script di Frida:
2024-02-03 14:45:32 +00:00
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
2022-10-26 09:06:33 +00:00
```
2024-02-10 13:03:23 +00:00
## **Metodo 2 - Approccio di gestione delle eccezioni**
2022-10-26 09:06:33 +00:00
2024-02-10 13:03:23 +00:00
Un altro [script Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) 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.
2022-10-26 09:06:33 +00:00
2024-02-10 13:03:23 +00:00
Comando per eseguire lo script Frida:
2024-02-03 14:45:32 +00:00
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
2022-10-26 09:06:33 +00:00
```
2024-02-10 13:03:23 +00:00
Una volta raggiunta la schermata dell'impronta digitale e l'avvio di `authenticate()`, digita `bypass()` nella console di Frida per attivare il bypass:
2022-10-26 09:06:33 +00:00
```
2024-02-03 14:45:32 +00:00
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
2022-10-26 09:06:33 +00:00
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
2024-02-03 14:45:32 +00:00
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()
2022-10-26 09:06:33 +00:00
```
2024-02-10 13:03:23 +00:00
## **Metodo 3 - Strumenti di Instrumentation**
2022-10-26 09:06:33 +00:00
2024-02-10 13:03:23 +00:00
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:
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
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.
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
Esempio di comando per Frida:
2024-02-03 14:45:32 +00:00
```bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
```
2024-02-10 13:03:23 +00:00
## **Metodo 4 - Reverse Engineering e Modifica del Codice**
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
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:
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
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.
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
## **Metodo 5 - Utilizzo di Strumenti di Autenticazione Personalizzati**
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
Esistono strumenti e script specializzati progettati per testare e bypassare i meccanismi di autenticazione. Ad esempio:
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
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.
2024-02-03 14:45:32 +00:00
2024-02-10 13:03:23 +00:00
## Riferimenti
2024-02-03 14:45:32 +00:00
* [https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/](https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/)
2022-10-26 09:06:33 +00:00
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-10-26 09:06:33 +00:00
2024-02-10 13:03:23 +00:00
* Lavori in un'**azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-10-26 09:06:33 +00:00
</details>