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

7.4 KiB
Raw Blame History

Bypassar Autenticação Biométrica (Android)

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Método 1 Bypass sem Uso de Objeto Criptográfico

O foco aqui está no callback onAuthenticationSucceeded, que é crucial no processo de autenticação. Pesquisadores da WithSecure desenvolveram um script Frida, permitindo o bypass do CryptoObject NULL em onAuthenticationSucceeded(...). O script força um bypass automático da autenticação por impressão digital ao ser invocado pelo 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.

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:

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

Método 2 - Abordagem de Manipulação de Exceções

Outro script Frida da WithSecure aborda a bypassagem do uso inseguro do objeto de criptografia. 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 irá desencadear uma exceção. O script se prepara para invocar onAuthenticationSucceeded e lidar com a javax.crypto.IllegalBlockSizeException na classe Cipher, garantindo que objetos subsequentes usados pela aplicação sejam criptografados com a nova chave.

Comando para executar o script Frida:

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 inicializaçã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 aos métodos da aplicação 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 do BiometricPrompt.AuthenticationCallback, é possível controlar o resultado do processo de autenticação por impressão digital.
  2. Burlar o SSL Pinning: Isso permite que um atacante intercepte e modifique o tráfego entre o cliente e o servidor, potencialmente alterando o processo de autenticação ou roubando dados sensíveis.

Comando de exemplo para Frida:

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

Método 4 - Engenharia Reversa e 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. Descompilar o APK: Converter o arquivo APK para um formato mais legível para humanos (como código Java).
  2. Analisar o Código: Procure a implementação da autenticação por impressão digital e identifique possíveis vulnerabilidades (como mecanismos de fallback ou verificações de validação inadequadas).
  3. Recompilar 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 em 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

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!