À medida que as empresas dependem cada vez mais de aplicativos móveis, é crucial proteger esses aplicativos contra riscos e vulnerabilidades. O crescimento do uso de dispositivos móveis e aplicativos impulsiona a necessidade de reforçar a cibersegurança, garantindo a proteção de dados sensíveis e a confiança do usuário.
Portanto, realizar pentest em aplicativos mobile é vital para qualquer entidade que desenvolva apps para Android e iOS. Falhas na proteção podem resultar em data breaches, comprometendo a privacidade dos usuários e a reputação da empresa.
Na Blaze Information Security, realizamos mobile pentests todos os anos. Muitos de nossos novos clientes têm dúvidas sobre o processo, incluindo como se preparar, quais informações os pentesters precisam, as ferramentas utilizadas, as estratégias de teste, os problemas típicos identificados, a duração prevista e muito mais.
Em resposta a essas questões, criamos um guia informativo destinado a ajudar as organizações a se envolverem e se prepararem de maneira mais eficaz para um processo de mobile pentest.
O que é um pentest mobile?
O teste de intrusão em apps móveis avalia a segurança de uma app por meio da realização de ataques simulados. O objetivo é aumentar a resistência do aplicativo a ataques, garantindo sua cibersegurança.
Este tipo de security assessment examina vários componentes, tais como questões de segurança nas APIs de backend da aplicação móvel, mecanismos de autenticação e autorização, permissões no sistema de arquivos, comunicação entre processos e armazenamento inseguro de dados na nuvem e no dispositivo. O pentest em aplicativos mobile aplica-se independentemente da plataforma, seja Android ou iOS, ou até BlackBerry ou Windows Phone – com a ressalva de que a maioria das ferramentas de pentest já não comporta essas plataformas.
Os principais benefícios tangíveis dos pentests em aplicações móveis incluem:
- Identificar fragilidades de segurança: Descobrir falhas no design e na implementação do aplicativo, desde simples erros de configuração até falhas lógicas complexas.
- Avaliar os controles de segurança: Avaliar a eficácia das medidas de cibersegurança implementadas no aplicativo móvel, incluindo sua resistência a ataques e proteção de dados confidenciais.
- Fornecer recomendações de melhorias: Oferecer conclusões detalhadas e recomendações práticas, permitindo que as empresas mitiguem e corrijam as vulnerabilidades identificadas de maneira eficaz.
- Integrar a segurança no ciclo de desenvolvimento de software: Desempenhar um papel vital na incorporação de práticas de cibersegurança no ciclo de desenvolvimento de software (SDLC) de aplicativos móveis.
- Manter a confiança do cliente e a integridade da marca: Demonstrar um compromisso com a cibersegurança ajuda a manter a confiança do cliente e proteger a reputação da marca.
- Garantir a conformidade: Assegurar que o aplicativo móvel esteja em conformidade com as diretrizes do setor, como GDPR, HIPAA, SOC 2 e ISO 27001, que são cruciais para manter a confiança e a conformidade.
- Gerir proativamente os riscos: Identificar e resolver as vulnerabilidades é uma estratégia de gestão de risco econômica na segurança de apps móveis.
- Aprimorar a postura de segurança: Fortalecer a posição geral de segurança por meio de avaliações regulares e melhorias contínuas, tornando as apps resilientes contra ameaças cibernéticas.
Preparação para um pentest em mobile apps
A preparação é fundamental para garantir que a análise seja completa, alinhada com o perfil do modelo de ameaças do aplicativo e aborde de forma abrangente a superfície de ataque do aplicativo. Estas são as etapas essenciais para se preparar:
- Assinar NDAs: Estabeleça um Acordo de Confidencialidade (NDA) para proteger informações confidenciais compartilhadas durante os testes, incluindo detalhes sobre os mecanismos de segurança e o funcionamento interno do aplicativo móvel.
- Definir o escopo do pentest: Especifique quais componentes serão testados, incluindo suas funcionalidades, fluxos de dados e objetivos do pentest. Defina também claramente o que não está incluído no escopo.
- Fornecer documentação e detalhes de acesso: Se possível, forneça aos testers documentação detalhada e credenciais de acesso para as versões Android e iOS. Isso inclui permissões necessárias para acessar APIs e dados sensíveis, bem como informações sobre interfaces de usuário, funções do lado do servidor, mecanismos de autenticação e quaisquer tecnologias específicas ou padrões de interação exclusivos. Partilhe pelo menos dois conjuntos de credenciais de usuários para cada função do aplicativo, a fim de permitir um teste abrangente a partir de várias perspectivas do usuário. Além disso, às vezes os aplicativos ainda não estão disponíveis na app store, portanto, pode ser necessário compartilhar os arquivos IPA ou APK ou disponibilizá-los ao pentester por meio de plataformas como o TestFlight.
- Garantir a prontidão do ambiente de testes: Se os testes forem realizados em um ambiente pré-produção, confirme se este se assemelha intimamente à configuração de produção, no que diz respeito a estruturas de dados, mecanismos de autenticação e funcionamento.
- Compartilhar informação específica da tecnologia: Forneça orientações ou ferramentas especiais necessárias para tecnologias ou frameworks exclusivos do aplicativo móvel.
- Destacar limitações e áreas sensíveis conhecidas: Informe os pentesters sobre partes sensíveis do aplicativo ou limitações conhecidas que exijam atenção especial, como áreas que lidam com user data ou armazenamento de dados pouco seguro. É fundamental garantir a proteção dessas informações para evitar vazamentos e acessos não autorizados.
- Estabelecer canais de comunicação: Defina canais claros para comunicar. Na Blaze, sempre configuramos um canal no Slack com o cliente durante a avaliação para agilizar a maneira de comunicar e aumentar a colaboração.
Realizar testes grey-box, no mínimo: Nos testes grey-box, forneça aos testers conhecimento parcial do sistema, como contas de usuários e painéis de administração, para permitir simulações de ataque mais realistas e descobrir falhas que os testes black-box podem deixar passar. Se possível, opte por testes white-box com um pentest assistido por source-code.
Para uma avaliação mais aprofundada, as organizações podem optar por um teste white-box completo. Nesse cenário, a equipe de testes tem acesso ao código-fonte do aplicativo móvel (não apenas a uma versão descompilada).Isso é particularmente eficaz para pentests em mobile apps, pois fornece insights sobre as vulnerabilidades e os mecanismos de segurança exclusivos das apps Android e iOS.
Utilizar as metodologias OWASP em testes de intrusão de aplicativos mobile
O Open Worldwide Application Security Project (OWASP) também desempenha um papel crucial na definição de metodologias de mobile app security. Embora inicialmente centrados na web, os recursos do OWASP fornecem frameworks e diretrizes valiosas para mobile app pen testing, que são uma referência essencial em mobile application security testing.
No centro desta metodologia está o OWASP Mobile Top 10, análogo ao OWASP Top 10 para aplicações web, que descreve os dez riscos mais críticos para mopile apps. Esta lista é atualizada regularmente para refletir as ameaças emergentes em dispositivos móveis e serve como um roteiro para identificar e priorizar vulnerabilidades comuns.
O Guia de Testes de Segurança para Aplicações Móveis (MASTG) da OWASP é a versão móvel do Guia de Testes da OWASP para aplicativos web, fornecendo metodologias detalhadas e checklists para testes de segurança. Este artigo inclui uma variedade de casos de teste, técnicas e boas práticas destinadas a avaliar exaustivamente todos os aspectos de um aplicativo móvel, desde a descoberta inicial e coleta de dados até a exploração de vulnerabilidades e sua análise pós-exploração.
Além disso, o Padrão de Verificação de Segurança de Aplicações Móveis (MASVS) da OWASP oferece uma estrutura de controles e critérios de segurança para apps móveis, o que é crucial para realizar testes de acordo com os padrões do setor e garantir que os recursos de segurança de um aplicativo sejam abrangentes.
A Cheat Sheet de Segurança de Aplicações Móveis da OWASP é outra ferramenta valiosa, oferecendo conselhos rápidos e práticos sobre vários tópicos de mobile security, atualizada por investigadores e profissionais do setor, mantendo as orientações alinhadas com as técnicas atuais dos cibercriminosos.
Aproveitar esses recursos da OWASP aumenta a eficácia das nossas avaliações em apps móveis e traz conformidade com as melhores práticas internacionais de segurança.
Outras frameworks que envolvem pentest em apps mobile
Existem ainda outras frameworks conhecidas que estabelecem seus exigências em torno de mobile application penetration testing e security assessments, como a NIAP, a ioXt Alliance e a MASA da App Defense Alliance.
NIAP
A NIAP (National Information Assurance Partnership) detalha as exigências funcionais e de garantia de segurança para a verificação da app móvel, categorizando-as em Requisitos Funcionais de Segurança, Requisitos Funcionais de Segurança Baseados em Seleção, Requisitos Funcionais de Segurança Objetivos, Requisitos Funcionais de Segurança Opcionais e Requisitos de Garantia de Segurança. Seu objetivo é orientar a verificação de aplicativos móveis no governo e na indústria, abordando questões como geração aleatória de bits, geração de chaves criptográficas, armazenamento de credenciais, acesso a recursos da plataforma, criptografia de dados confidenciais de apps e muito mais.
ioXt alliance
A ioXt Alliance foi criada como uma aliança do setor para definir exigências básicas de segurança de produtos para IoT e, em 2020 e 2021, expandiu seu programa de certificação para incluir aplicativos móveis e VPNs, com um perfil móvel para critérios de segurança do Android.
MASA
A Mobile Application Security Assessment (MASA) é uma iniciativa da App Defense Alliance para reforçar a app security no Google Play, garantindo a segurança de milhões de utilizadores. A MASA utiliza a Norma de Verificação de Segurança de Aplicações Móveis da OWASP (MASVS), fornecendo critérios de segurança básicos e um guia de testes (MASTG) para programadores. Os programadores podem iniciar análises com parceiros do Google Authorized Lab, para obter uma certificação que demonstre o seu compromisso com a segurança de dados do Google Play.
Vulnerabilidades comuns em apps móveis
Assim como os aplicativos web, os aplicativos mobile têm potenciais vulnerabilidades específicas que podem ser exploradas por invasores. O OWASP Mobile Top 10 2024 constitui um recurso essencial para compreender essas ameaças:
O OWASP Top 10 Mobile Risks for 2024 inclui as seguintes principais áreas:
- M2: Segurança inadequada da cadeia de suprimentos – Falhas de segurança na cadeia de suprimentos que podem afetar o aplicativo móvel.
- M3: Autenticação/autorização insegura – Falhas nos mecanismos de autenticação ou autorização que podem permitir que invasores contornem as medidas de segurança.
- M4: Validação insuficiente de Input/Output – A falta de validação adequada de input e output pode levar a vários ataques, como injeção ou vazamento de dados.
- M5: Comunicação insegura – Falta de canais seguros para comunicar, levando à possível interceptação ou alteração de dados em trânsito.
- M6: Controles de privacidade inadequados – Medidas insuficientes para proteger a privacidade do usuário, levando à potencial exposição de informações pessoais.
- M7: Proteções binárias insuficientes – Falta de proteções contra exploração binária, como adulteração de código ou engenharia reversa.
- M8: Má configuração de segurança – Configurações padrão inseguras ou configurações incorretas que expõem o aplicativo móvel a ataques.
- M9: Armazenamento de dados inseguro – Armazenamento inadequado de dados confidenciais no aplicativo móvel, levando a possíveis vazamentos de dados sensíveis.
- M10: Criptografia insuficiente – Práticas criptográficas fracas que não protegem os dados de maneira eficaz.
Abaixo vemos uma comparação entre o OWASP Mobile Top 10 2016 e a versão mais recente lançada em 2024.
Uma análise um pouco mais detalhada das vulnerabilidades comuns em aplicativos de smartphone
Explorando as principais vulnerabilidades em aplicações móveis, com foco nas áreas críticas de armazenamento de dados, uso de plataformas, APIs, links diretos, provedores de conteúdo e intenções:
- Armazenamento de dados inseguro: Um problema comum em que informações confidenciais são protegidas de forma inadequada, permitindo o potencial acesso não autorizado a dados pessoais ou financeiros se um invasor obtiver acesso ao dispositivo.
- Uso inseguro da plataforma: O risco surge quando não se seguem as práticas recomendadas para as funcionalidades da plataforma, o que pode comprometer os dados do usuário ou a integridade do aplicativo.
- APIs inseguras: APIs externas, se integradas ou utilizadas de maneira pouco segura, podem expor um aplicativo a ataques, incluindo interceptação de dados ou manipulação de funcionalidades devido a autenticação fraca ou falta de criptografia.
- Vulnerabilidades de links diretos: Sem uma implementação segura, os links diretos podem ser explorados para contornar a navegação do aplicativo, levando a acessos ou ações não autorizados.
- Problemas com provedores de conteúdo: Provedores de conteúdo implementados de forma inadequada podem expor dados confidenciais a outros aplicativos no dispositivo, havendo risco de vazamento de dados.
- Intents inseguras: Intents mal gerenciadas podem levar ao vazamento de informações ou à manipulação não autorizada do comportamento do aplicativo, enfatizando a necessidade de verificações e validações adequadas das permissões.
Pentests abrangentes, static and dynamic analysis e revisão completa do código são cruciais para identificar e mitigar esses riscos. Essa abordagem é vital no desenvolvimento de software e para que as equipes de desenvolvimento garantam a segurança e a integridade de uma app.
Principais ferramentas de pentest em mobile app
Nos pentests mobile, diversas penetration testing tools especializadas são empregadas para garantir uma avaliação completa. Aqui está uma visão geral atualizada das ferramentas essenciais nessa área:
Emuladores e dispositivos virtuais
- Android Studio’s Emulator e Genymotion: Esses emuladores são essenciais para replicar ambientes de mobile app Android para fins de teste. Eles permitem que os testers simulem diferentes dispositivos e versões do Android.
- Corellium: Esta ferramenta oferece um ambiente virtualizado para iOS, fornecendo uma plataforma para testar aplicativos iOS em vários dispositivos Apple e várias versões do sistema operacional.
Ferramentas de análise dinâmica e estática
- Burp Suite Professional: Uma referência em pentest mobile para analisar o tráfego de rede, automatizar ataques e muito mais. É geralmente usado em conjunto com o tráfego de aplicações móveis para análises aprofundadas.
- Postman e Swagger UI: Continuam sendo essenciais para enviar solicitações a endpoints de aplicativos móveis, auxiliando na análise de várias funcionalidades em aplicativos Android e iOS.
- MobSF (Mobile Security Framework): Uma ferramenta open-source útil para realizar static and dynamic analysis em aplicativos móveis, identificando vulnerabilidades básicas e práticas inadequadas de armazenamento de dados.
- Oversecured: Uma alternativa paga muito superior ao MobSF para scans estáticos automatizados de mobile applications.
Engenharia reversa, descompiladores e ferramentas de instrumentação binária
- M1: Uso indevido de credenciais – Má gestão ou mau uso de credenciais, levando a acesso não autorizado.
- Hopper e Ghidra: Embora o Hopper tenha sido uma escolha popular para engenharia reversa, o Ghidra é provavelmente o mais usado entre os profissionais devido à sua natureza de código aberto. Ambas são vitais na reversão de uma aplicação móvel e bibliotecas para compreender sua estrutura e identificar cada vulnerabilidade.
- Frida e Objection: O Frida é um kit de ferramentas de instrumentação dinâmico para modificar o comportamento de aplicativos em tempo real. O Objection, que opera sobre o Frida, fornece um kit de ferramentas de exploração móvel em tempo de execução que simplifica o uso do Frida.
- jadx: Um descompilador de código aberto que traduz aplicações Android de volta para código Java, simplificando a engenharia reversa para análise. A ferramenta processa com eficácia arquivos dex Android contidos em arquivos APK, tornando-a valiosa para analisar a estrutura e a lógica de um aplicativo Android binário, e também é amplamente utilizada na análise de malware para detectar e compreender comportamentos maliciosos ocultos numa app móvel.
- JD-GUI: Um utilitário gráfico autônomo (ferramenta GUI) que exibe o source code Java de arquivos “.class”, permitindo fácil descompilação e análise de um aplicativo Java.
-
Estas ferramentas permitem realizar várias tarefas, desde emular diferentes ambientes, desativar proteções comuns, como detecção de root/jailbreak e TLS/SSL pinning (certificate pinning), analisar o tráfego de rede, realizar análises estáticas e dinâmicas aprofundadas e reverse engineering.
As certificações certas para pentest mobile
Certas formações e certificações podem aprimorar significativamente as habilidades de um pentester ou de toda uma equipe. Embora existam inúmeras certificações disponíveis no mercado, aquelas com foco em mobile penetration testing são particularmente valiosas. Ao considerar um provedor de testes de intrusão ou procurar aprimorar as habilidades de sua equipe interna em mobile penetration testing, vale a pena considerar as seguintes certificações:
- GIAC Mobile Device Security Analyst (GMOB): Semelhante ao GWAPT para aplicações web, a certificação GMOB foca em mobile penetration testing, incluindo Android e iOS. A SANS também oferece um treinamento relacionado, conhecido como SEC575, para Android e iOS app security.
- eLearnSecurity Mobile Application Penetration Tester (eMAPT): Esta é a versão focada em dispositivos móveis do eWPTX, com ênfase em habilidades práticas em pentest mobile.
- Pentester Lab Pro: Embora não seja uma certificação propriamente dita, o Pentester Lab Pro oferece vários laboratórios especializados em mobile app pentest, proporcionando experiência prática em variados cenários de mobile security.
- NowSecure Academy: A NowSecure oferece vários cursos gratuitos e pagos por meio de seu programa acadêmico, que se foca no ensino de segurança de apps móveis e várias técnicas para pentest em aplicativos iOS e Android.
Mobile Hacking Lab: Esta plataforma de treinamento foca principalmente em hacking de baixo nível em sistemas operacionais móveis (fuzzing de aplicativos userland), mas oferece ensinamentos que podem ser aplicados diretamente em mobile pentest.
Estas certificações e programas de treinamento garantem que os testers tenham as habilidades e os conhecimentos necessários para identificar e explorar cada vulnerabilidade em mobile apps. Eles abrangem uma ampla gama de tópicos, desde a compreensão da estrutura do aplicativo até a exploração da vulnerabilidade específica exclusivas dos sistemas Android e iOS.
Qual é a duração média de uma intervenção de pentest móvel?
A duração de um pentest é influenciada por vários fatores, incluindo a complexidade e as funcionalidades específicas do aplicativo. Os prazos gerais podem ser estimados da seguinte forma:
Aplicativos básicos (1 semana)
Aplicativos mais simples com recursos limitados, como uma aplicação utilitária básica, aplicação de jogos simples ou de e-commerce de pequena escala, geralmente requerem uma a duas semanas para análises completas.
Aplicativos moderadamente complexos (2 a 3 semanas)
Um Aplicativo com recursos mais complexos, como várias funções de usuário, elementos avançados de UI/UX ou integrações com APIs externas e sistemas de back-end, geralmente leva duas a três semanas. Essa categoria inclui plataformas sofisticadas de e-commerce ou aplicativos bancários com exigências padrão.
Aplicativos complexos ou extensos (3+ semanas)
Uma aplicação nesta categoria possui recursos e funcionalidades altamente complexos. Isso inclui aplicativos de nível empresarial com inúmeros recursos, funcionalidades personalizadas, tratamento de dados complexo e interações extensas com o backend. A duração destes pentests pode exceder quatro semanas, especialmente se incorporarem recursos avançados como:
- Integração de pagamentos: Uma aplicação que permite pagamentos, principalmente aquelas que usam métodos avançados como NFC (Near Field Communication) ou outras tecnologias de pagamento.
- Medidas de segurança avançadas: Aplicativos que são operados exclusivamente em dispositivos corporativos com MDM ou sem jailbreak ou acesso root geralmente exigem esforços adicionais de teste.
- Contorno biométrico: Uma aplicação que incorpora autenticação biométrica (leitura de impressão digital, reconhecimento facial, etc.) exige técnicas especializadas para testar a robustez desses recursos.
Fatores que influenciam a duração do mobile pentest
- Tamanho do aplicativo: O número de telas, funcionalidades, API endpoints e funções do usuário em um aplicativo móvel afeta diretamente a duração do pentest. Um número maior de elementos requer uma cobertura mais ampla durante a avaliação.
- Complexidade: Funcionalidades avançadas, interfaces de usuário complexas e lógica ou integrações back-end complexas (como sistemas de processamento de pagamentos, recursos NFC, etc.) aumentam o tempo de teste para aplicativos móveis.
- Maturidade de segurança: Aplicativos móveis que passaram por avaliações de segurança anteriores e tiveram falhas corrigidas podem exigir mais tempo para testes. Os pentesters devem analisar as correções anteriores e garantir que nenhuma nova vulnerabilidade tenha sido introduzida.
- Integração com serviços de terceiros: Aplicações móveis com várias integrações, como APIs externas, gateways de pagamento ou serviços na nuvem exigem tempo adicional para avaliar a segurança dessas interações de forma abrangente.
- Requisitos de conformidade: Se o aplicativo precisar seguir normas e estruturas de segurança específicas (por exemplo, PCI DSS para processamento de pagamentos e HIPAA para aplicativos de saúde), pode ser necessário mais tempo.
- Colaboração do cliente: A eficiência das respostas do cliente e o envio das informações necessárias podem influenciar o prazo da avaliação.
O que posso esperar de um pentest em mobile?
- Consultoria inicial e definição do escopo: O processo começa com uma discussão para definir o escopo, estabelecer expectativas e determinar a melhor abordagem para a avaliação de segurança do aplicativo
- Fase de reconhecimento: Os testers reúnem informações sobre a tecnologia, a estrutura e as funcionalidades do aplicativo, auxiliando na definição da estratégia de teste.
- Scan automático de vulnerabilidades: Ferramentas especializadas realizam scans automáticos do aplicativo móvel em busca de vulnerabilidades conhecidas, ajudando a identificar possíveis falhas de segurança. O resultado automatizado é triado para eliminar falsos positivos e destacar descobertas que exigem validação manual.
- Testes e exploração manuais: Além das ferramentas automatizadas, espere testes manuais em que especialistas tentam explorar cada vulnerabilidade identificada, simulando cenários de ataque do mundo real.
- Atualizações e comunicação regulares: A equipe de penetration testers comunica de forma constante, fornecendo atualizações e explicações claras com termos acessíveis.
- Relatório abrangente do pentest: Após a análise, é fornecido um relatório detalhado, listando cada vulnerabilidade identificada, sua gravidade e os impactos potenciais no aplicativo móvel.
- Diretrizes de correção: O relatório inclui recomendações práticas e priorizadas para corrigir cada vulnerabilidade.
- Debriefing pós-teste: Geralmente é realizada uma sessão de debriefing para revisar as descobertas, responder a perguntas e discutir as próximas etapas para a segurança do aplicativo.
- Validação das correções: Opcionalmente, um novo teste pode ser realizado após as correções para garantir a eficácia das soluções implementadas.
- Bônus: uma abordagem moderna de entrega que vai além dos relatórios em PDF, por meio de uma plataforma de PTaaS (Pentest as a Service), que se integra aos seus sistemas de emissão de tickets existentes para permitir uma triagem e correção mais rápidas.
-
Considerações finais
O pentest mobile é um processo indispensável para garantir a robustez dos controles de segurança do seu aplicativo. Ele é crucial não apenas para identificar vulnerabilidades existentes, mas também para se preparar contra ameaças futuras e minimizar qualquer risco.
Se sua organização deseja melhorar a postura de segurança mobile, opte por provedores que se focam principalmente em avaliações técnicas de cibersegurança para garantir uma análise completa e especializada de seus aplicativos.
FAQ
Quanto tempo leva um teste de pentest em mobile ?
Um pentest típico pode levar 5 a 10 dias, dependendo da complexidade, do tamanho e das exigências específicas do aplicativo. Aplicativos complexos podem exigir um esforço maior.
Os mobile pentests podem ser automatizados?
Até certo ponto, sim. Ferramentas automatizadas são úteis para identificar falhas comuns numa app, mas não podem substituir totalmente as percepções sutis e a análise detalhada fornecidas pelos testes de penetração manuais.
As apps móveis internas devem ser testadas?
Os aplicativos criados para uso interno devem ser submetidos a testes de intrusão. Essa etapa é fundamental para descobrir vulnerabilidades que poderiam ser exploradas por um funcionário com intenções maliciosas. Isso é especialmente importante para aplicações que lidam com dados corporativos confidenciais ou acessam sistemas internos importantes.







