Vulnerabilidades em dispositivos móveis

Vulnerabilidades comuns em Aplicações Mobile

Armazenamento de dados inseguro

Tokens ou credenciais de usuários sem criptografia.

Controles do lado do servidor fracos

Falta de validação dos inputs ou falha de lógicas da API permitem a exploração.

Proteção insuficiente da camada de transporte

Utilização de HTTP ou HTTPS com falhas, permitindo um atacante de interceptar ou modificar o tráfego da rede.

Autenticação e Autorização inseguras

Sistemas de login mal implementados, gerenciamento de sessão ou verificações de permissão.

Vulnerabilidades do lado do cliente

Pode ser utilizado engenharia reversa no código para revelar segredos ou manipular a lógica.

OWASP Mobile Top 10

  • M1 - Uso impróprio de credenciais

  • M2 - Segurança inadequada da cadeia de suprimentos

  • M3 - Autenticação/autorização insegura

  • M4 - Validação de entrada/saída insuficiente

  • M5 - Comunicação insegura

  • M6 - Controles de privacidade inadequados

  • M7 - Proteções binárias insuficientes

  • M8 - Configuração incorreta de segurança

  • M9 - Armazenamento de dados inseguro

  • M10 - Criptografia insuficiente

Figura: OWASP Mobile Top 10

Análise Estática (SAST)

Segredos hardcoded

Credenciais, chaves API, tokens e chaves de encriptação em alguns casos se encontram presentes no código fonte, basta realizar engenharia reversa para encontrar estes segredos.

Configurações inseguras

Permissões excessivamente permissivas, sinalizadores de depuração deixados habilitados ou assinaturas inadequadas podem abrir buracos na blindagem do seu aplicativo.

Exposição de dados sensíveis

Armazenamento de tokens de sessão ou informações pessoais em texto plano, se enquadram como esta vulnerabilidade. Pode ser encontrado geralmente em logs, shared preferences, arquivos locais.

Falhas lógicas

Algumas funções principalmente de autenticação podem ser mal implementadas, permitindo que com uma análise seja possível realizar bypass. Funções com criptografias fracas ou componentes não protegidos podem facilitar para o atacante.

Checklist SAST

  • Armazenamento - Dados sensíveis não estão criptografados

  • Armazenamento - Nenhum dado sensível é armazenado no armazenamento compartilhado

  • Criptografia - Uso correto de algoritmos de criptografia e bibliotecas

  • Rede - Canais de comunicação seguros (HTTPS/TLS)

  • Código - Ausência de segredos hardcoded no código fonte

  • Código - Ofuscação de código aplicada corretamente

  • Resiliência - Proteção contra engenharia reversa

  • Resiliência - Capacidade de debugar está desabilitado em produção

  • Privacidade - Manuseio adequado de permissões do usuário e dados privados

Ferramentas SAST

Há diversas ferramentas que podem ajudar a dissecar o código, configurações e binários sem rodar o aplicativo.

MobSF (Mobile Security Framework)

Este framework lista todos as potenciais configurações incorretas, permissões suspeitas ou segredos hardcoded.

Figura: MobSF

APKTool (Android)

Utilizado para decompilar e compilar APKs para poder realizar uma verificação do que há dentro. Para utilizar basta:

apktool d (aplicativo).apk -o (diretório_de_saída) //Decompilar
apktool b (nome_do_diretório) //Re-compilar

JADX (Android)

Usado para converter Dalvik (.dex) para um Java, tornando mais fácil a leitura e análise.

jadx (aplicativo).apk -d (diretório_de_saída)

Class-Dump, Hopper, Ghidra (iOS)

Seu uso é para extrair cabeçalhos de classe Objective-C (Class-Dump) ou desmonte binários iOS (Hopper/Ghidra). Se o aplicativo foi Swiftificado, você também verá metadados Swift.

Análise Dinâmica (DAST)

Comunicação de Rede

Certifique-se de que o aplicativo não está vazando dados durante o trânsito de comunicação.

Autenticação e Autorização

É utilizado testes como reutilização de tokens de sessão ou até mesmo adivinhá-los e encerramento de sessão.

Integridade do tempo execução e Verificações de segurança

Muitos apps tentam detectar se o dispositivo é rooted (Android) ou jailbroken (iOS) e se recusam a rodar certas funcionalidades. Durante a análise dinâmica, deve ser constatado se é possível passar por estas verificações conectando-se ao código do aplicativo.

Vazamento de dados durante execução

Deve ser verificado se o log do aplicativo possui informações sensíveis em texto plano como senhas ou tokens.

API e Verificação do lado do servidor

Caso a API esteja vulnerável, pode ocorrer de não validar as permissões, usuários válidos, permitindo acesso não autorizado.

Checklist DAST

  • Resiliência - Aplicativo detecta e previne tentativas de tampering e engenharia reversa

  • Resiliência - Aplicativo detecta dispositivos rooted ou jailbroken

  • Resiliência - Aplicativo valida a integridade do código e recursos em tempo de execução

  • Rede - Aplicativo encripta todos o tráfico usando uma criptografia forte

  • Rede - Aplicativo aplica pinning de certificado quando aplicável

  • Plataforma - O aplicativo não depende apenas dos mecanismos de segurança da plataforma e aplica medidas de segurança de forma independente

  • Plataforma - Aplicativo aplica timeouts de sessão e re-autenticação de usuários

  • Armazenamento - Log do aplicativo não armazena informações sensíveis

  • Armazenamento - Aplicativo não armazena informações sensíveis em um localização insegura

  • Criptografia - Aplicativo usa algoritmos de criptografia atualizados

Ferramentas DAST

Burp Suite / OWASP ZAP

Ambos servem para interceptar e anáslisar o tráfego, permitindo a análise de endpoints inseguros, vazamento de dados, etc

Frida

Um kit de ferramentas de instrumentação dinâmica que se conecta a processos em execução, ajudando você a ignorar a fixação de SSL, detecção de root/jailbreak ou outras restrições do lado do cliente.

frida-ps -U //Lista todos os processos em funcionamento
frida -U -n (nome_do_processo) -c script.js //Injeta um script customizado
frida-trace -U -n (nome_do_processo) //Rastrea um processo específico

Figura: Frida

Drozer (Android)

Focado em escaneamento de componentes como Atividades, Serviços, Receptores de transmissão e Content Providers a fim de identificar fraquezas de segurança.

drozer console connect //Conecta a um dispositivo
run app.activity.info -a (nome_do_pacote) //Enumera as atividades 
run app.activity.start --component (nome_do_pacote) (nome_da_atividade) 
//Interage com atividades exportadas

Figura: Drozer

Desafios comuns em um Pentest Mobile

  • Fragmentação da plataforma: os dispositivos Android variam muito em versões do sistema operacional, ROMs personalizadas e modificações do fabricante, tornando os testes complexos.

  • Medidas de segurança do aplicativo: recursos como fixação de SSL, detecção de root/jailbreak e ofuscação podem dificultar o pentesting.

  • Acesso limitado ao código-fonte: os testes black-box geralmente exigem engenharia reversa com ferramentas como APKTool ou JADX, o que pode ser demorado.

  • Restrições de análise dinâmica: sandbox, proteção de memória e a necessidade de dispositivos com root/jailbreak complicam os testes de fluxo de trabalho do mundo real.

  • Segurança de rede e inspeção de tráfego: fixação de SSL, validação de certificado ou VPNs podem impedir proxies MITM padrão. Ferramentas como Frida, Burp Suite e mitmproxy se tornam essenciais para bypass.

Conclusão

Este guia cobre os passos iniciais para configurar dispositivos móveis para testes de segurança, incluindo o jailbreak/root, configuração de ambientes de teste e uso de ferramentas essenciais. Lembre-se de sempre realizar essas ações de maneira ética e com a devida autorização para evitar consequências legais.

Atualizado

Isto foi útil?