O cenário de ameaças móveis evolui e apresenta desafios cada vez mais sofisticados para a comunidade de cibersegurança. Compreender as ferramentas e técnicas fundamentais para a análise de malware em dispositivos como smartphones e tablets é crucial para equipes de pesquisa, analistas forenses e profissionais de segurança digital.
Por isso, a seguir, veremos um guia básico para servir de referência na hora de realizar nossas análises em dispositivos com sistema operacional Android ou iOS.
Por que a análise de malware para esses dispositivos é diferente em relação aos sistemas tradicionais?
A análise de malware em dispositivos móveis, ao contrário da análise em sistemas Windows, Linux ou macOS, apresenta desafios únicos:
- Sistemas operacionais fechados ou semiabertos (como o iOS);
- Ambientes virtualizados e emulados que são facilmente detectáveis;
- Restrições rígidas de permissões e acesso ao sistema de arquivos;
- Técnicas avançadas de evasão, como carregamento dinâmico de código e detecção do processo de análise.
- No entanto, essas diferenças não devem nos afastar, mas sim nos motivar a superar esses desafios.
Ao analisar malware, tanto em Android quanto em iOS, contamos com dois enfoques de análise bem diferentes que nos ajudam a determinar as características e o comportamento do malware que estamos examinando.
De um lado, temos o enfoque estático, no qual analisamos a amostra sem executá-la. Nesse método, observamos características como o hash, os cabeçalhos do arquivo e sua arquitetura, as strings, a identificação de ofuscação e as chamadas a APIs, entre outros aspectos.
Por outro lado, o enfoque dinâmico analisa as características observadas na análise estática, buscando determinar como o código que estamos examinando se comporta no sistema. Neste momento, verificamos se o malware executa processos, se injeta em outros processos, se cria, modifica ou apaga arquivos, além da atividade de rede, entre outras ações.
Embora, tanto no Android quanto no iOS, a lógica de se usar um ambiente isolado para análise e depois realizar análises estáticas e dinâmicas se mantenha, na prática existem diferenças que abordaremos em cada etapa, pois, afinal, são sistemas diferentes, cada um com sua própria natureza.
Considerações para um ambiente de laboratório seguro
Antes de começar, é importante entender que precisaremos de um ambiente de testes isolado e seguro para realizar as análises. Vale lembrar que estaremos lidando com trechos de código potencialmente maliciosos e devemos evitar ser vítimas deles.
Como mencionamos anteriormente, existem diferenças entre Android e iOS, por isso detalharemos as considerações específicas para cada sistema no qual realizaremos as análises.
Ambiente de testes para Android
Será essencial dispor de um computador específico onde você possa ter:
- Emuladores personalizados, como o Android Studio Emulator e o Genymotion, com suporte para arquiteturas x86 e ARM. Isso permitirá emular os códigos, com a possibilidade de escolher versões específicas do sistema operacional, além de diferentes modelos de smartphones.
- ADB (Android Debug Bridge) para controle e extração de dados.
Também é importante contar com dispositivos físicos rootados, pois, diante da detecção de emulação, é mais confiável ter um smartphone dedicado que nos ajudará a identificar muitos comportamentos das amostras que analisarmos.
Ambiente de testes para iOS
Preferencialmente, tenha um equipamento com Xcode e uma conta de desenvolvedor Apple, pois em muitos casos será necessário reempacotar trechos de código e assiná-los.
Também é importante dispor de iPhones que suportem as últimas versões do iOS e para os quais seja possível realizar jailbreak. O uso de dispositivos físicos continua sendo preferido para análises mais precisas, já que muitas amostras de malware detectam emuladores e alteram seu comportamento.
Frida, Cycript e Objection são as ferramentas de instrumentação e hooking que você deve ter à disposição.
Análise estática e dinâmica em Android
Em seguida, de acordo com o tipo de enfoque, estático ou dinâmico, adicionaremos uma série de ferramentas para complementar as análises.
Tanto para Android quanto para iOS, é fundamental dispor de ambientes que possam ser facilmente restaurados a um estado limpo após cada análise. Veremos que será muito comum precisar retornar repetidamente à instância do sistema base.
Análise estática em Android:
A análise estática permite inspecionar o código sem executá-lo. Entre as técnicas básicas que precisaremos aplicar estão:
1) Técnicas
Descompilação do APK
- Extração do AndroidManifest.xml, recursos e classes DEX
- Ferramentas: apktool, JADX, dex2jar
Revisão do AndroidManifest
- Verificação de permissões suspeitas (por exemplo, READ_SMS, SEND_SMS, INTERNET, SYSTEM_ALERT_WINDOW)
- Identificação de componentes maliciosos ocultos (services, receivers)
Análise de strings
- Buscar domínios, IPs, comandos, caminhos, credenciais.
- Ferramentas: strings, grep, MobSF.
Análise de código Java/Dalvik
- Buscar padrões suspeitos: Runtime.exec, Base64, Crypto, WebView.loadUrl.
- Identificação de técnicas de ofuscação.
Inspeção de certificados
- Validar assinatura do APK e certificados de terceiros incorporados.
Análise de bibliotecas nativas (C/C++)
- Revisão de bibliotecas .so suspeitas com Ghidra ou IDA.
2) Ferramentas
| Ferramenta | Descrição |
| APKTool | Descompila recursos e manifestos de APK |
| JADX / JEB / CFR | Descompiladores de código DEX para Java |
| MobSF | Análise automatizada de APK estático e dinâmico |
| Androguard | Framework em Python para analisar código DEX/APK |
| Bytecode Viewer | Visualizador múltiplo de bytecode para DEX/JAR/APK |
| ClassyShark | Visualizador de APK e estruturas de classes |
| Quark Engine | Analisador estático com heurísticas para detectar malware em APK |
| VirusTotal | Upload de APK para escaneamento rápido com múltiplos motores |
| ApkLeaks | Busca informações sensíveis (tokens, chaves, endpoints) em APKs |
Análise dinâmica em Android:
O comportamento do malware geralmente se revela somente durante a execução, e por isso, ao executar o malware, devemos considerar os seguintes pontos:
Execução controlada do APK
- Em emulador ou dispositivo real com ADB.
- Configurar a rede para monitoramento do tráfego.
Monitoramento do comportamento em tempo real
- Uso de logcat, strace, Frida, Objection.
Captura de tráfego de rede
- Proxy: Burp Suite, mitmproxy, Wireshark.
- Verificar se há SSL pinning ativo.
Hooking e instrumentação
Interceptar funções e modificar comportamentos.
- Ferramentas: Frida, Xposed, AppMon.
Bypass de técnicas anti-análise
- Desativar detecção de root/emulador.
- Desofuscar código dinamicamente.
Extração de dados em runtime
- Obter variáveis, memória e credenciais da RAM.
| Ferramenta | Descrição |
| Xposed Framework | Permite hooks dentro de apps Android (root requerido) |
| Frida | Instrumentação dinâmica em tempo real (ideal para hooking em apps) |
| Magisk + LSPosed | Alternativa moderna ao Xposed para ambientes rooteados |
| Genymotion / AVD | Emuladores para rodar e monitorar comportamento de apps |
| Wireshark | Monitora tráfego de rede da aplicação |
| tcpdump | Captura de pacotes no Android (usando root ou ADB) |
| Strace / Logcat | Monitoramento de processos e logs do sistema |
| CuckooDroid | Sandbox para análise automatizada de APKs (baseado no Cuckoo) |
| AppMon (Frida) | Instrumentação automática de chamadas de métodos Android |
| Objection | Ferramenta baseada em Frida para bypass de root/jail, dumps, etc. |
Análise estática e dinâmica em iOS
Análise estática em iOS:
- Assim como no Android, existem técnicas básicas que precisaremos aplicar, entre elas:
Extração do arquivo IPA
- Desempacotar o .ipa e extrair o binário Mach-O.
Inspeção das estruturas Mach-O
- Revisar seções, cabeçalhos e bibliotecas vinculadas.
- Ferramentas: otool, MachOView.
Reversão do binário
- Desmontagem de ARM/ARM64.
- Ferramentas: Hopper, IDA, Ghidra.
Extração de classes Objective-C
- Usar class-dump ou class-dump-z para analisar interfaces públicas.
Busca por strings e funções suspeitas
- APIs de rede, uso de NSURLSession, objc_msgSend, dlopen, etc.
Análise de permissões e plist
- Revisão dos arquivos .plist, Entitlements, uso de serviços privados.
Nota: A Apple aplica técnicas de code signing, o que dificulta a injeção de código ou modificação de binários, exceto em ambientes com jailbreak.
| Ferramenta | Descrição |
| class-dump / class-dump-z | Extrai interfaces Objective-C de binários |
| Hopper / Ghidra / IDA Pro | Disassemblers para binários ARM/ARM64 |
| Cycript | Para inspeção ao vivo e manipulação de objetos do runtime Objective-C |
| Genymotion / AVD | Emuladores para rodar e monitorar comportamento de apps |
| ipa-extract | (parte do libimobiledevice) Para desempacotar arquivos IPA |
| otool / MachOView | Ferramentas para examinar binários Mach-O |
| Radare2 / rizin | Framework para reversing de binários |
| MobSF | Também suporta análise básica de arquivos IPA |
| bagbak | Extrai e decompila apps de dispositivos jailbreakeados |
| ppduck / IPAPatch | Ferramentas para dumpar IPAs protegidas |
| ios-deploy | Para instalar e conectar apps em dispositivos reais |
| QARK (limitado) | Pode fazer análise de segurança em código-fonte iOS |
Análise dinâmica em iOS:
Quanto às técnicas essenciais para análise dinâmica em iOS, destacam-se:
Instrumentação do binário
- Injeção com Frida, uso de Objection, Cycript, Flex.
Execução em dispositivo com jailbreak
- Executar o aplicativo malicioso de forma controlada em iOS modificado.
Hooking de funções chave
- Interceptar chamadas a APIs sensíveis (rede, arquivos, criptografia, sensores).
Captura de tráfego
- Uso de proxy com bypass de SSL pinning (ex: SSL Kill Switch 2).
Análise de processos e comportamento
- Uso de ferramentas do Xcode (Instruments, lldb) ou de terceiros.
Dump de memória
- Extrair informações em tempo real de processos ativos.
Boas práticas ao analisar malware
- Não use sua máquina principal: sempre trabalhe em um ambiente isolado ou máquina virtual.
- Capture tudo: tráfego, logs, imagens do sistema e hashes antes e depois da execução.
- Compare com versões legítimas caso suspeite de um aplicativo trojanizado.
- Mantenha-se atualizado: o ecossistema móvel está em constante mudança. Siga fontes como VirusTotal, Koodous e WeLiveSecurity.
Conclusão
Entre iOS e Android, como vimos, existem diferenças que podemos destacar:
- O iOS possui barreiras técnicas e legais mais rigorosas, exigindo jailbreak ou um ambiente de desenvolvimento certificado.
- O Android oferece maior flexibilidade para análise, inclusive sem root em alguns casos.
- A análise dinâmica é essencial para detectar comportamentos ocultos, comunicação com servidores de comando e controle (C2), cargas tardias, entre outros.
- A instrumentação com Frida é uma ferramenta transversal e poderosa em ambos os sistemas.
Sem dúvida, a análise de malware móvel é um campo desafiador, e dominar as ferramentas e técnicas apresentadas aqui é fundamental para qualquer analista de segurança. A combinação de análise estática e dinâmica, adaptada às particularidades de cada plataforma, é a chave para desvendar ameaças e proteger o universo móvel.




