Pular para o conteúdo principal

Checklist - Pentest Android

· 7 min para ler

Este é um checklist para pentest em android. Eu basicamente traduzi e adicionei algumas coisas de um repositório do github original. Planejo atualizar esse checklist com frequência.

C01 | SSL Pinning

Descrição: Uma vulnerabilidade de SSL Pinning em um aplicativo Android ocorre quando o app não valida corretamente o certificado SSL ou a chave pública do servidor durante o handshake SSL/TLS, permitindo que um atacante do tipo man-in-the-middle intercepte e descriptografe a comunicação do aplicativo.

  • Ausência de SSL Pinning
  • Verificar se é possível realizar bypass utilizando Frida/Objection
  • Verificar se é possível realizar manipulação de código

CO2 | Detecção de Root

Descrição: Uma vulnerabilidade de detecção de root em um aplicativo Android ocorre quando o app não detecta corretamente ou não restringe a execução em dispositivos com root, permitindo que usuários obtenham acesso não autorizado a dados ou funcionalidades do aplicativo.

  • Ausência de detecção de root
  • Verificar se é possível realizar bypass utilizando Frida/Objection
  • Verificar se é possível realizar manipulação de código

CO3 | Detecção de Emulador

Descrição: Uma vulnerabilidade de detecção de emulador em um aplicativo Android ocorre quando o app não detecta corretamente ou não bloqueia a execução em emuladores, permitindo contornar controles de segurança ou acessar funcionalidades não autorizadas.

  • Ausência de detecção de emulador
  • Verificar se é possível realizar bypass utilizando Frida

CO4 | Dados Sensíveis em Logs do ADB Logcat

Descrição: Uma vulnerabilidade de exposição de dados sensíveis no ADB Logcat ocorre quando o aplicativo registra informações sensíveis, como senhas ou dados pessoais, nos logs do sistema via Android Debug Bridge (ADB), expondo esses dados a atacantes ou usuários não autorizados.

  • Verificar logs do Logcat em busca de informações ou dados sensíveis
  • Verificar se é possível realizar bypass utilizando Frida/Objection
  • Verificar a existência de requisições ou dados não criptografados nos logs do Logcat

CO5 | Dados Sensíveis Armazenados no Armazenamento Local

Descrição: Uma vulnerabilidade de armazenamento local ocorre quando o aplicativo salva informações sensíveis, como senhas ou dados pessoais, de forma não criptografada ou insegura no dispositivo.

  • Verificar se informações ou dados sensíveis estão armazenados em Shared Preferences
  • Verificar se há informações ou dados armazenados em arquivos temporários
  • Verificar se informações ou dados sensíveis estão armazenados em bancos de dados locais utilizando criptografia forte
  • Verificar se há informações ou dados armazenados em outros arquivos

CO6 | Dados Sensíveis na Memória da Aplicação

Descrição: Uma vulnerabilidade de dados sensíveis na memória da aplicação ocorre quando o app mantém informações sensíveis, como senhas ou dados pessoais, na memória de forma não criptografada ou insegura, possibilitando sua extração por atacantes com acesso à memória do dispositivo.

  • Verificar se há informações ou dados sensíveis armazenados temporariamente na memória da aplicação (utilizar fridump.py)

CO7 | Certificado de Assinatura Fraco

Descrição: Uma vulnerabilidade de certificado de assinatura fraco ocorre quando o aplicativo é assinado com um certificado fraco ou comprometido, possibilitando modificação do app ou acesso não autorizado às suas funcionalidades.

  • Verificar se o aplicativo está assinado com algoritmos fracos, como SHA1withRSA
  • Verificar a presença da vulnerabilidade Janus
  • Verificar se o aplicativo está assinado com certificado de debug

CO8 | Activities Android Vulneráveis

Descrição: Activities são componentes do Android que representam telas ou partes da interface do aplicativo. Uma activity vulnerável pode conter práticas inseguras ou configurações incorretas que permitam exploração.

  • Verificar activities protegidas acessíveis via ADB, permitindo bypass de autenticação
  • Verificar se activities exportadas estão corretamente configuradas com exported=false
  • Verificar se alguma activity pode ser iniciada por outras aplicações
  • Verificar se activities podem ser exploradas ou sequestradas via ADB ou outras ferramentas
  • Verificar se alguma activity causa Denial of Service ou crash da aplicação

CO9 | WebView

Descrição: Android WebView é um componente que permite a exibição de conteúdo web dentro do aplicativo. Implementações inseguras podem introduzir vulnerabilidades.

  • Verificar vulnerabilidade de Cross-Site Scripting (XSS) em WebViews
  • Verificar vulnerabilidade de Local File Inclusion (LFI) em WebViews
  • Verificar se JavaScript está habilitado de forma insegura na WebView

CO10 | Intent Filters

Descrição: Intent redirection ocorre quando intents implícitas ou explícitas são utilizadas sem validação adequada, permitindo redirecionamento indevido entre componentes, de forma similar ao Open Redirect em aplicações web.

  • Verificar vulnerabilidades de intent spoofing ou intent sniffing

CO11 | Broadcast Receivers

Descrição: Broadcast Receivers permitem que o aplicativo receba eventos do sistema ou de outros apps. Configurações incorretas podem permitir exploração.

  • Verificar no manifest receivers com exported=true sem proteção por permissões

CO12 | Content Provider

Descrição: Content Providers permitem o compartilhamento de dados entre aplicações por meio de URIs iniciadas com content://. Controles de segurança inadequados podem causar vazamento de informações.

  • Verificar SQL Injection em Content Providers
  • Verificar Path Traversal em Content Providers
  • Verificar acesso indevido a dados internos via Content Providers

CO13 | Ofuscação de Código-Fonte

Descrição: A ofuscação de código dificulta a engenharia reversa e protege a propriedade intelectual do aplicativo.

  • Verificar se a ofuscação de código (ProGuard/R8) está implementada
  • Caso parcialmente implementada, verificar se fluxos sensíveis estão devidamente ofuscados

CO14 | Informações Sensíveis ou Chaves de Autenticação Hardcoded

Descrição: Essa vulnerabilidade ocorre quando dados sensíveis, como senhas ou chaves de API, estão codificados diretamente no código-fonte do aplicativo.

  • Verificar no código-fonte a presença de API keys, tokens, auth-keys, senhas ou credenciais hardcoded (pode ser automatizado com MobSF)

CO15 | Práticas de Codificação Inseguras

Descrição: Práticas de codificação inseguras aumentam a superfície de ataque e a probabilidade de falhas de segurança.

  • Verificar geração insegura de números aleatórios (ex.: OTPs previsíveis)
  • Verificar uso de funções ou objetos inseguros
  • Verificar uso de criptografia fraca ou reversível (MD5, Base64)
  • Verificar outras fragilidades decorrentes de práticas inseguras

Descrição: Deeplinks inseguros podem permitir acesso a funcionalidades internas ou dados sensíveis sem validação adequada.

  • Verificar deeplinks explícitos utilizando PendingIntent para destinos internos
  • Verificar deeplinks implícitos que resolvem para destinos internos

CO17 | Ausência de Verificações de Integridade

Descrição: Verificações de integridade garantem que o aplicativo não foi modificado ou adulterado, protegendo contra repackaging e injeção de código.

  • Decompilar, modificar, recompilar e reassinar o aplicativo para verificar se ele continua funcionando normalmente

CO18 | Permissões Android Inseguras

Descrição: Aplicações Android definem permissões no arquivo AndroidManifest.xml. Configurações incorretas podem introduzir vulnerabilidades.

  • Verificar se tráfego em texto claro está habilitado no AndroidManifest.xml
  • Verificar se o modo debug está habilitado no AndroidManifest.xml
  • Verificar se dataExtractionRules estão corretamente definidas
  • Verificar se o modo de backup está habilitado
  • Verificar permissões desnecessárias

CO19 | Cache de Tela em Segundo Plano

Descrição: O cache de tela pode expor dados sensíveis quando o aplicativo é colocado em segundo plano devido a funcionalidades do sistema operacional.

  • Verificar se capturas de tela são permitidas quando o aplicativo vai para segundo plano

CO20 | Banco de Dados Firebase Inseguro

Descrição: O Firebase Database é um serviço de banco de dados em tempo real. Regras de segurança mal configuradas podem expor dados publicamente.

  • Adicionar .json à URL da instância Firebase para testar acesso de leitura
  • Substituir firebaseio.com por appspot.com e adicionar /.json para testar acesso e comportamento de CORS

CO21 | Bypass de Autenticação por Bloqueio de Tela ou Biometria

Descrição: Alguns aplicativos utilizam o bloqueio de tela do Android ou autenticação biométrica para proteger funcionalidades sensíveis, o que pode ser contornado se mal implementado.

  • Verificar se o estado biométrico é armazenado em Shared Preferences ou arquivos locais
  • Verificar se a autenticação biométrica ou por bloqueio de tela pode ser bypassada via hooking em runtime ou modificação de código

CO22 | Verificações-Chave em Análise Dinâmica

Descrição: A análise dinâmica foca no comportamento em tempo de execução, interações com APIs e controles de segurança do lado servidor.

  • Executar um checklist completo de segurança de APIs
  • Verificar Broken Access Control e falhas de autenticação no lado servidor
  • Verificar injeções server-side e más configurações de segurança
  • Verificar exposição de dados sensíveis
  • Realizar fuzzing

COX | Outros

Descrição: Verificações adicionais que podem revelar fragilidades de segurança sutis ou contextuais.

  • Verificar se chaves criptográficas não são reutilizadas para múltiplos propósitos
  • Verificar exposição de dados sensíveis via interface ou screenshots
  • Verificar se o cache do teclado está desabilitado para o aplicativo
  • Verificar se copiar/colar está desabilitado em campos sensíveis
  • Verificar se dados sensíveis são mascarados durante a troca de aplicativos
  • Verificar se teclados de terceiros estão desabilitados para campos de entrada sensíveis