MASTG-KNOW-0088: Detecção de Emulador
O objetivo da detecção de emuladores é aumentar a dificuldade de executar o aplicativo em um dispositivo emulado. Isso força o engenheiro reverso a contornar as verificações de emulação ou utilizar um dispositivo físico, impedindo assim o acesso necessário para uma análise de dispositivos em larga escala.
Conforme discutido na seção Testes no Simulador iOS do capítulo de testes básicos de segurança, o único simulador disponível é o que acompanha o Xcode. Os binários do simulador são compilados para código x86 em vez de código ARM, e aplicativos compilados para um dispositivo real (arquitetura ARM) não são executados no simulador. Por isso, a proteção contra simulação não era uma grande preocupação em aplicativos iOS, em contraste com o Android, que possui uma ampla gama de opções de emulação disponíveis.
No entanto, desde o seu lançamento, o Corellium (ferramenta comercial) possibilitou uma emulação real, diferenciando-se do simulador iOS. Além disso, por ser uma solução SaaS, o Corellium permite análises de dispositivos em larga escala, sendo o fator limitante apenas os recursos financeiros disponíveis.
Com o hardware Apple Silicon (ARM) amplamente disponível, as verificações tradicionais para a presença de arquitetura x86/x64 podem não ser suficientes. Uma estratégia potencial de detecção é identificar recursos e limitações presentes nas soluções de emulação comumente utilizadas. Por exemplo, o Corellium não oferece suporte a iCloud, serviços celulares, câmera, NFC, Bluetooth, acesso à App Store ou emulação de hardware de GPU (Metal). Portanto, combinar inteligentemente verificações que envolvam qualquer um desses recursos pode ser um indicador da presença de um ambiente emulado.