Detecção de Emuladores em Dispositivos Android

Jul 19, 2024

Detecção de Emuladores em Dispositivos Android

Introdução

  • Apresentador: Iran Macedo
  • Tema: Detecção de emuladores em dispositivos móveis e como aplicar proteção contra eles
  • Plataforma usada: Gene Motion com Android 8 API 26 em um Nexus 4 emulado
  • Objetivo: Analisar e burlar a proteção de emulador em um aplicativo.

Contexto e Problemas Relacionados

  • Segurança: Aplicativos de banco e e-commerce bloqueiam execução em emuladores por segurança.
  • Importância: Emuladores facilitam técnicas de ataque (maior número de dispositivos virtuais, facilidade de root).
  • Frameworks de segurança:
    • OWASP MASVS (Mobile Application Security Verification Standard) define padrões para verificar a segurança de apps mobile.
    • Níveis de segurança: Nível 1 (segurança genérica) e Nível 2 (para apps com dados sensíveis, como bancários).

Controles de Segurança Relevantes (MASVS)

  • 8.1: Detecta dispositivo com jailbreak ou rooted.
  • 8.5: Detecta execução em emulador.
    • Implementação: Aplicações devem responder fechando ou alertando o usuário.
    • Indicadores no arquivo build.prop: atributos como ro.product.model, ro.product.brand, ro.hardware.
    • TelephonyManager: atributos como IMEI, network type, SIM serial number.

Engenharia Reversa para Burlar Detecção

  • Ferramentas necessárias: Frida, JaDX, adb, Gene Motion
  • **Passos principais: **
    • Extrair APK do emulador com adb (adb shell pm path)
    • Decompilar APK com JaDX
    • Analisar AndroidManifest.xml para identificar a activity de detecção de emulador
    • Escrever um script em JavaScript para substituir o retorno da detecção

Implementação do Bypass

  1. **Identificação do trecho de código responsável pela detecção: **
    • isEmulator() função que verifica parâmetros do build.prop.
  2. **Escrita do script bypass: **
    • Interceptar chamada da função e modificar o retorno para false (indicando que não é um emulador).
    • Utilizar Frida para injetar o script no APK em execução.

Hands-On: Exemplo de Bypass (Usando Frida e JavaScript)

  • **Script Base: **
Java.perform(function() {
  var Activity = Java.use('oas.sat.aGold.EmulatorDetectionActivity');
  Activity.isEmulator.implementation = function() {
    return false;
  };
});
  • Execução:
    • Rodar Frida server no emulador
    • Injetar o script JavaScript para manipular a função de detecção

Conclusão

  • Resultado: Conseguimos burlar a detecção de que o dispositivo é um emulador.
  • Observações finais: Nem todos os aplicativos terão bypass simples, aumento de camadas de segurança pode dificultar.
  • Sugestão: Sempre revisar e entender o build.prop e TelephonyManager para ajustes de segurança contínuos.

Dicas Gerais

  • Consulte sempre documentação da OWASP para melhores práticas.
  • Mantenha-se atualizado sobre novas técnicas e ferramentas de engenharia reversa.
  • Teste seus aplicativos extensivamente em diversos cenários para identificar possíveis vulnerabilidades.