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

85 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bypass de Autenticação 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>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o repositório [hacktricks](https://github.com/carlospolop/hacktricks) e para o repositório [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
### **Método 1 Bypass com Uso de Objeto Crypto Nulo**
O foco aqui está no callback *onAuthenticationSucceeded*, que é crucial no processo de autenticação. Pesquisadores da WithSecure desenvolveram um [script Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass.js), que permite o bypass do objeto *CryptoObject* NULO em *onAuthenticationSucceeded(...)*. O script força um bypass automático da autenticação por impressão digital na invocação do método. Abaixo está um trecho simplificado demonstrando o bypass em um contexto de Impressão Digital Android, com a aplicação completa disponível no [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 executar o script Frida:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
```
### **Método 2 Abordagem de Tratamento de Exceções**
Outro [script Frida](https://github.com/WithSecureLABS/android-keystore-audit/blob/master/frida-scripts/fingerprint-bypass-via-exception-handling.js) da WithSecure aborda a questão de contornar o uso inseguro de objetos criptográficos. O script invoca *onAuthenticationSucceeded* com um *CryptoObject* que não foi autorizado por uma impressão digital. Se a aplicação tentar usar um objeto de cifra diferente, isso acionará uma exceção. O script se prepara para invocar *onAuthenticationSucceeded* e tratar a *javax.crypto.IllegalBlockSizeException* na classe _Cipher_, garantindo que os objetos subsequentes usados pela aplicação sejam criptografados com a nova chave.
Comando para executar o script Frida:
```bash
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
```
Ao chegar na tela de impressão digital e a iniciação de `authenticate()`, digite `bypass()` no console do Frida para ativar o 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 Frameworks de Instrumentação**
Frameworks de instrumentação como Xposed ou Frida podem ser usados para se conectar a métodos de aplicativos em tempo de execução. Para autenticação por impressão digital, esses frameworks podem:
1. **Simular os Callbacks de Autenticação**: Ao se conectar aos métodos `onAuthenticationSucceeded`, `onAuthenticationFailed` ou `onAuthenticationError` da `BiometricPrompt.AuthenticationCallback`, você pode controlar o resultado do processo de autenticação por impressão digital.
2. **Bypass SSL Pinning**: Isso permite que um atacante intercepte e modifique o tráfego entre o cliente e o servidor, alterando potencialmente o processo de autenticação ou roubando dados sensíveis.
Exemplo de comando para Frida:
```bash
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
```
### **Método 4 Engenharia Reversa & Modificação de Código**
Ferramentas de engenharia reversa como `APKTool`, `dex2jar` e `JD-GUI` podem ser usadas para descompilar um aplicativo Android, ler seu código-fonte e entender seu mecanismo de autenticação. Os passos geralmente incluem:
1. **Descompilando o APK**: Converter o arquivo APK para um formato mais legível por humanos (como código Java).
2. **Analisando o Código**: Procurar pela implementação da autenticação por impressão digital e identificar potenciais fraquezas (como mecanismos de fallback ou verificações de validação inadequadas).
3. **Recompilando o APK**: Após modificar o código para contornar a autenticação por impressão digital, o aplicativo é recompilado, assinado e instalado no dispositivo para testes.
### **Método 5 Usando Ferramentas de Autenticação Personalizadas**
Existem ferramentas e scripts especializados projetados para testar e contornar mecanismos de autenticação. Por exemplo:
1. **Módulos MAGISK**: MAGISK é uma ferramenta para Android que permite aos usuários fazer root em seus dispositivos e adicionar módulos que podem modificar ou falsificar informações a nível de hardware, incluindo impressões digitais.
2. **Scripts Personalizados**: Scripts podem ser escritos para interagir com a Android Debug Bridge (ADB) ou diretamente com o backend do aplicativo para simular ou contornar a autenticação por impressão digital.
# Referências
* [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>
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o repositório [hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>