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
- **Identificação do trecho de código responsável pela detecção: **
isEmulator()
função que verifica parâmetros do build.prop.
- **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)
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.