Você está na página 1de 31

INTRODUÇÃO

PENTEST
MOBILE
COM FOCO EM APLICATIVOS ANDROID
INTRODUÇÃO
Ninguém pode negar que a internet mudou o mundo em que
vivemos, e é cada vez mais natural que com essa evolução a
tecnologia esteja cada vez mais acessível e presente nas nossas
vidas.

Com o imenso crescimento dos smartphones temos o mundo na


palma da nossa mão, com alguns toques é possível pedir aquele
delivery, pedir um taxi, pesquisar qualquer coisa, se localizar,
estudar, realizar compras, pagar contas, nos comunicar, ouvir
músicas, não existe limites.

02
MERCADO
O mercado rapidamente entendeu que só a web não era o suficiente, e para as
empresas continuarem competitivas no mercado era necessário acompanhar a
evolução dos smartphones e desenvolver um app (aplicativo mobile).

Nessa corrida para sair na frente as empresas tem focado em desenvolver


aplicativos fáceis, bonitos e que entregue a melhor experiência a seus usuários
porém acabam deixando a segurança em segundo plano colocando em risco as
informações tanto dos usuários quanto da própria empresa.

Estamos cada vez mais expostos a esse mundo digital onde temos informarções
trafegando e sendo armazenadas por todo lado, essas informaçãos valem dinheiro
e o cibercrime sabe disso.

A segurança da informação é fundamental nessa luta diária do bem contra o mal.

03
O PROBLEMA
O desenvolvimento dos aplicativos mobile quando está mais focado na demanda e tempo de
produção do que em garantir a segurança da utilização é um dos principais motivos.

Dentre os principais riscos desse problema podemos destacar:

VAZAMENTO DE DADOS / DANOS A IMAGEM DA EMPRESA

FRAUDES / PREJUÍZOS FINANCEIROS

ACESSO A PROPRIEDADE INTELECTUAL

ACESSO A APIs E SERVIDORES REMOTO

Só com esses exemplos já conseguimos ter uma idéia do tamanho do problema.

04
VAZAMENTO
DE DADOS

Dependendo da vulnerabilidade explorada é possível ter


acesso a informações sensíveis de um único usuário ou de
toda a base de usuários, possibilitando assim um vazamento
de dados completo.

Como agravante esse tipo de vazamento de dados pode


destruir a imagem, reputação e confiança da empresa no
mercado.

05
FRAUDES

Fraudes podem permitir a um hacker malicioso acessar


recursos pagos gratuitamente, comprar produtos de graça ou

com valores inferiores ou realizar alguma ação para obter


vantagem de acordo com o tipo de aplicativo, causando
assim prejuízos a empresa.

06
ACESSO A PROPRIEDADE
INTELECTUAL

O acesso a propriedade intelectual pode permitir que a


empresa perca sua vantagem competitiva no mercado, uma
vez que seu segredo de negócio ou operação pode parar na
concorrência ou até mesmo se tornar público.

07
ACESSO A API E SERVIDORES
REMOTOS

Muitas vezes através do aplicativo o hacker malicioso


consegue acesso ao backend (servidor remoto) ou
manipular e controlar APIs.

Com isso ele pode tomar controle do ambiente e trazer


grandes prejuízos a empresa..

08
O QUE É PENTEST MOBILE?

Pentest Mobile é um serviço contratado para realizar testes


de segurança em aplicativos mobile com objetivo de
identificar fraquezas e vulnerabilidades a fim de tornar esses
aplicativos mais seguros.

09
OPORTUNIDADES
Trabalhar como Pentester para alguma empresa de Segurança da Informação
Trabalhar em um time de segurança interno de alguma empresa
Pesquisador autônomo (Bug Bounty)
Empreendedor (Criar o próprio negócio nesse segmento)

Exemplo: programa de bug bounty público

10
PROCESSO COMERCIAL DE PENTEST
1) Cliente contrata o teste de segurança mobile
2) A empresa faz o contrato e consegue a autorização para realizar os testes
3) O pentester inicia os testes e documenta tudo que encontrou
4) O pentester entrega o relatório
5) Equipe de dev do cliente corrige os problemas encontrados
6) Pentester faz o re-test para validar se tudo foi corrigido

BUG BOUNTY MOBILE


1) O profissional se cadastra em uma plataforma pública de bounty (ex: hackerone/bugcrowd)
2) Busca por empresas que tem aplicativos mobile e lê as regras do programa de bounty
3) O profissional realiza os testes e ao encontrar uma vulnerabilidade faz o report na plataforma
4) O programa de bounty faz a validação e se tiver tudo ok paga a recompensa

11
HABILIDADES ESSENCIAIS
PARA
TRABALHAR COM PENTEST MOBILE
1) Saber configurar um ambiente de testes (Android Studio, ADB, ferramentas de pentest)

2) Conhecer o sistema operacional e arquitetura (Android)

3) Conhecer o processo de compilação e técnicas de engenharia reversa

4) Saber identificar falhas e vulnerabilidades em aplicativos Android

5) Entender a comunicação entre o aplicativo mobile e o backend (servidor remoto/APIs)

12
OWASP TOP 10
A Owasp é um projeto que possuí metodologias de segurança para diferentes fins como
também para mobile, o projeto mantém um ranking com o top10 das principais
vulnerabilidades e com base nisso fornece guias de boas práticas para desenvolvimento e
testes de segurança.

https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10
https://www.owasp.org/index.php/OWASP_Mobile_Security_Testing_Guide#tab=Main

13
QUAIS AS
PRINCIPAIS
VULNERABILIDADES
ENCONTRADAS?
Em aplicativos Android

14
Engenharia Reversa e dados
sensíveis
Olhando a imagem abaixo podemos ver um código similar ao código fonte do
aplicativo mostrando credenciais de acesso, podemos ver que essas credenciais
realmente são válidas e permitem acesso administrativo ao aplicativo.

Você deve estar pensando, porque raios o desenvolvedor deixou isso no código?
Acredite, isso é comum e já encontramos isso em aplicativos de grandes
empresas.

O que acontece é que o desenvolvedor não acredita que alguém conseguirá


acessar o código do app depois que o mesmo é gerado, no entanto, conforme
demonstrado na imagem abaixo através de técnicas de engenharia reversa é
possível ter acesso a um Código bastante similar ao Código original.

15
Exemplo: Engenharia Reversa

16
Adulteração de Código

Quando realizamos a engenharia reversa em um aplicativo podemos editar


informações de lógica e recompilar o programa. Assim, teremos o mesmo
programa com funcionalidades diferentes das originais.

O exemplo a seguir se dá com um bypass na lógica de acesso do aplicativo, onde


foi adulterado o código e ganhado acesso.

Lógica original: “Se a senha for correta, acessará as informações”

Lógica alterada: “Se for inserido qualquer senha, terá acesso.”

17
Exemplo: Código adulterado

No exemplo acima a lógica é alterada para que qualquer senha digitada seja aceita. Resumindo, estamos falando
algo como "Se não for igual a zero" tome a seguinte ação, uma simples alteração muda a forma como o aplicativo
se comportará.

18
Armazenamento Inseguro

Outro erro bastante comum é o armazenamento inseguro de dados.

Se o desenvolvedor não tomar as precauções para que os dados armazenados localmente


sejam armazenados com segurança e estejam criptografados, um hacker malicioso pode
encontra-los.

Na imagem abaixo podemos notar que o código PIN para bloquear o aplicativo é
armazenado em texto puro permitindo assim descobrir o código e ter acesso a essa
função do aplicativo.

*outro problema que é necessário se atentar é a existência de informações sensíveis nos


logs de acesso, muitas vezes ao realizar ações no aplicativo dados sensíveis como senhas,
ou dados importantes podem ficar armazenados em texto claro nos logs do sistema.

19
Exemplo: Armazenamento Inseguro

20
Componentes Inseguros

Para gerenciar a chamada dos componentes é essencial o aplicativo possuir


controles.

Caso não sejam implementados corretamente (ou sequer implementados), a


chamada dos componentes poderá resultar em chamadas/explorações sem os
devidos direitos esperados.

Na foto abaixo, foi forçado à activity invocar o componente, mesmo sem estar
autenticado no aplicativo.

Em uma linguagem mais simples, é possível chamar novas "telas" e acessos no


aplicativo sem estar autenticado ou até mesmo usando ele.

21
Exemplo: Componentes Inseguros

22
SQL Injection / LFI / Path Traversal
O problema de validação de entrada é comum.

Em campos de inserção de dados, se não houver o devido tratamento de o que é


permitido ser inserido ou não, o usuário poderá enviar comandos que poderão
resultar em acesso à informações sensíveis.

Caso do exemplo a seguir, onde é feito uma consulta na tabela de usuários.

23
Exemplo: SQLi, LFI, Path Traversal

24
Manipulando API

Muitos aplicativos utilizam API em suas comunicações, essa API geralmente serve
como ponte para integrar a comunicação entre aplicativo e backend (servidor
remoto, base de dados etc.)

É necessário aplicar medidas de segurança nesta comunicação, senão no meio do


processo um usuário mal intencionado poderá compreender o funcionamento da
API e modificar as requisições no caminho interceptando os dados conforme
mostrado no exemplo no próximo slide.

O hacker malicioso entendeu o funcionamento da API e fez a manipulação da


requisição afim de fraudar o sistema testado.

25
Exemplo: Manipulando API

26
Outros problemas - Aplicativos
Maliciosos

Outro grande risco quando o assunto é aplicativos mobile são aplicativos falsos ou
maliciosos usados para espionagem ou controlar o dispositivo.

Estes aplicativos podem ser cópias fiéis a aplicativos reais, que através de
engenharia social induzem o usuário a realizar a instalação.

No exemplo abaixo você pode ver dois aplicativos falsos (Netflix, Facebook) que
quando o usuário executa no dispositivo o hacker malicioso consegue acesso para
controlar o dispositivo remotamente.

27
Exemplo: Aplicativos Maliciosos

28
COMO MELHORAR
A SEGURANÇA
Em aplicativos Android

29
COMO PROTEGER?

- NUNCA ARMAZENE INFORMAÇÕES SENSÍVEIS NO DISPOSITIVO

- USE CRIPTOGRAFIA NA COMUNICAÇÃO E NOS DADOS ARMAZENADOS

- OBFUSQUE O CÓDIGO (EXEMPLO: PROGUARD)

- VALIDE OS DADOS DE ENTRADA (SQLINJECTION/LFI) 

- USE PERMISSÕES CORRETAS E PROTEJA OS COMPONENTES

- EVITE DEIXAR INFORMAÇÕES SENSÍVEIS NO CÓDIGO FONTE

*NUNCA CONFIE NO USUÁRIO*

30
KEEP LEARNING
Obrigado!

Quer aprender mais sobre Pentest e segurança da informação?

ACESSE:
www.desecsecurity.com

Fale conosco:
contato@desecsecurity.com

30

Você também pode gostar