Buscar

I_Teorico

Prévia do material em texto

Inserir Título Aqui 
Inserir Título Aqui
Ataques e Defesa para 
Dispositivos Móveis
Ataques em Sistema Operacional Android
Responsável pelo Conteúdo:
Prof. Hélvio Benedito Dias de Carvalho Júnior
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Nesta unidade, trabalharemos os seguintes tópicos:
• Dispositivos Móveis Base – Conceitos Gerais;
• Arquitetura do Sistema;
• Máquina Virtual Android;
• Modelo de Segurança do Android;
• Táticas em Ambiente Mobile;
• Ataques.
Fonte: Getty Im
ages
Objetivos
• Capacitar os alunos a identificarem ataques cibernéticos em dispositivos móveis, com
ferramentas de simulação de ambientes de Sistemas Operacionais Android e iPhone; 
• Identificar ataques aos Sistemas Operacionais citados, erradicação dos malwares e recu-
peração dos dispositivos.
Caro Aluno(a)!
Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o úl-
timo momento o acesso ao estudo, o que implicará o não aprofundamento no material 
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você 
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns 
dias e determinar como o seu “momento do estudo”.
No material de cada Unidade, há videoaulas e leituras indicadas, assim como sugestões 
de materiais complementares, elementos didáticos que ampliarão sua interpretação e 
auxiliarão o pleno entendimento dos temas abordados.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de 
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de 
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de 
troca de ideias e aprendizagem.
Bons Estudos!
Ataques em Sistema Operacional Android
UNIDADE 
Ataques em Sistema Operacional Android
Dispositivos Móveis Base – Conceitos Gerais 
Histórico do Android 
A Android nasceu como uma empresa, a
Android Inc., fundada por Andy Rubin, Chris White, 
Nick Sears e Rich Miner, em Outubro 2003. 
Eles criaram a Empresa com o objetivo de 
desenvolver dispositivos móveis inteligentes, que 
pudessem levar em consideração informações de 
localização e preferências de usuário. 
Mesmo acertando a demanda do Mercado 
com essa ideia, eles ainda tinham dificuldades 
financeiras para lançá-la.
Foi então que a Google adquiriu a Android 
Inc., em agosto de 2005. Durante o período 
seguinte, a Google começou a construir parce-
rias com Empresas de hardware, software e de 
Telecomunicações, com a intenção acelerar sua 
entrada no Mercado móvel.
Figura 1 – Andy Ruby, um dos pais do Android
Fonte: Getty Images
Após diversas parcerias fechadas, em novembro de 2007, foi criada a Open Handset 
Alliance (OHA). 
A ideia desse Consórcio de Empresas, que incluía 34 membros fundadores lidera-
dos pela Google, era fazer o Android finalmente sair do papel.
Além disso, seria possível acelerar a inovação da Plataforma Móvel e oferecer aos 
consumidores um serviço móvel mais rico, barato e uma melhor experiência. 
Os membros dessa associação representam todas as partes do ecossistema móvel, 
incluindo operadoras móveis, fabricantes de aparelhos, Empresas de semicondutores, 
software, Empresas e muito mais.
Com a OHA em funcionamento, a Google anunciou seu primeiro produto móvel, o 
Android, disponibilizado para o público em geral, em outubro de 2008. 
O lançamento do primeiro telefone Android publicamente disponível, o HTC G1, 
marcou o início de uma nova era.
6
7
Figura 2 – Primeiro Android HTC G1
Fonte: Reprodução
Arquitetura do Sistema 
A arquitetura geral Android consiste em componentes que se enquadram em seis 
camadas principais, incluindo: aplicativos Android, o Android ou Java API Framework, 
a Máquina Virtual Dalvik, o Código Nativo do espaço do usuário, a camada de hardware 
e o kernel do Linux. 
A Figura 3 mostra como essas camadas compõem a pilha de software do Android.
Figura 3 – Arquitetura Android
Fonte: developer.android.com
7
UNIDADE 
Ataques em Sistema Operacional Android
A camada System Apps é onde as aplicações instaladas pelo usuário residem e executam.
A camada Java API Framework expõe as APIs do Sistema para funcionalidades 
comuns que são rotineiramente usadas pela maioria das aplicações. 
Isso inclui funcionalidades de elementos visuais, compartilhamento de dados ou aces-
sos como telefone ou funcionalidades GPS.
A camada Native C/C++ Libraries contém as Bibliotecas C e C++, as quais geren-
ciam processos de baixo nível, como desenhos gráficos, encriptação de Rede, multimí-
dia e renderização de imagens.
A camada Android Runtime representa a área do Sistema Operacional onde a Má-
quina Virtual (VM) responsável pelas aplicações em execução reside.
A camada Hardware Abstraction Layer (HAL) define as interfaces padrão para os 
fabricantes de hardware implementarem. Utilizando a HAL, os fabricantes podem im-
plementar as funcionalidades sem afetar ou modificar o Sistema alto nível.
A camada Linux Kernel é a camada subjacente que une todas as camadas superio-
res. Essa camada controla todo o acesso ao hardware do dispositivo por meio de drivers 
de dispositivo. 
Como ocorre em qualquer computador, o kernel é o responsável pelo gerenciamento 
de memória, processos e energia. O kernel do Android é baseado no kernel do Linux 2.6.
Os componentes de Código Nativo do espaço do usuário do Android incluem: servi-
ços do Sistema, como void e DBus, serviços de Rede, como dhcpd e wpa_supplicant e 
Bibliotecas, como bionic libc, WebKit e OpenSSL. 
Alguns desses serviços e Bibliotecas se comunicam com serviços e drivers no 
nível do kernel, enquanto outros facilitam operações nativas de nível inferior para o 
Código gerenciado.
O Android fez inúmeras adições e alterações na árvore de fontes do kernel, algumas 
das quais possuem suas próprias ramificações de segurança.
Os drivers no nível do kernel também fornecem funcionalidades adicionais, como 
acesso à câmera, Wi-Fi e outros dispositivos de Rede. De particular atenção é o driver 
do Binder, que Implementa Comunicação entre Processos (IPC).
Figura 4 – Ilustração sobre Mercado mobile
Fonte: developer.android.com
8
9
Características Técnicas
A base do Android traz consigo uma herança bem compreendida do isolamento do pro-
cesso semelhante ao Unix e o princípio do menor privilégio, especificamente, o conceito 
em que os processos em execução como usuários separados não podem interferir uns com 
os outros, como o envio de sinais ou o acesso ao espaço de memória um do outro. 
Logo, grande parte do sandbox do Android se baseia em alguns conceitos-chave: 
isolamento de processo padrão do Linux, UIDs (IDs de usuário exclusivos) para a maio-
ria dos processos e permissões do Sistema de arquivos altamente restritas.
O Android compartilha o paradigma UID/ID de grupo (GID) do Linux, mas não possui os 
arquivos password e group tradicionais para sua origem de credenciais de usuário e grupo. 
Em vez disso, o Android define um mapa de nomes para identificadores exclusivos 
conhecidos como IDs do Android (AIDs). 
O mapeamento inicial de AID contém entradas estáticas reservadas para privilégios 
e usuários críticos do Sistema, como o usuário/grupo do Sistema. 
O Android também reserva intervalos de AID usados para provisionar UIDs de aplica-
tivos. Versões do Android após o 4.1 adicionaram intervalos adicionais de AID para vá-
rios perfis de usuários e usuários de processos isolados (por exemplo, para o sandboxing 
adicional do Chrome). 
Você pode encontrar definições para AIDs no Sistema/core/include/private/an-
droid_filesystem_config.h, na árvore do Projeto de Código Aberto Android (AOSP). 
Além dos AIDs, o Android usa grupos suplementares para permitir que processos 
acessem recursos compartilhados ou protegidos. Por exemplo, a associação ao grupo 
sdcard_rw permite que um processo leia e grave o diretório/sdcard, já que suas opçõesde montagem restringem quais grupos podem ler e gravar. Isso é semelhante a como 
grupos suplementares são usados em muitas distribuições do Linux. 
Por padrão, os dispositivos Android vem de fábrica com a permissão root (adminis-
trador) desabilitada para o Sistema, pois caso isso ocorresse, alguns usuários sem pre-
paro poderiam realizar ações que os deixassem expostos ou até mesmo que causassem 
dano ou perda de funcionalidade do dispositivo. 
Uma segunda característica técnica está na opção de desenvolvedores, cada disposi-
tivo possui um modo para destravar o modo desenvolvedor que permite a execução de 
aplicações não publicadas na loja oficial.
Existem no Mercado, atualmente, três tipos de aplicativos mobile suportados 
pela Plataforma.
9
UNIDADE 
Ataques em Sistema Operacional Android
Observe na tabela a seguir:
Tabela 1
App Web App Híbrido App Nativo
• São sites responsivos, embarcados em 
webviews, como um janela particular;
• Desenvolvimento e manutenção são 
mais baratos o que faz esse tipo de 
aplicação popular.
• São apps, embarcados em webviews, com 
algumas chamadas de sistema local;
• Desenvolvimento e manutenção são 
mais baratos o que faz esse tipo de 
aplicação popular.
• São aplicados codificadas em linguagem própria 
da plataforma que interagem diretamente com 
o sistema;
• Desenvolvimento e manutenção e manutenção 
deste tipo de app é mais caro porém permite 
maior segurança.
Fonte: //https://www.gsma.com
Máquina Virtual Android
Máquinas virtuais (do inglês, Virtual Machines – VM) são camadas de abstração entre 
a aplicação e as camadas subjacentes do dispositivo Android. 
Ambos os aplicativos Android e o Java API Framework são desenvolvidos na Lin-
guagem de Programação Java e executados na Máquina Virtual da Dalvik (Dalvik VM). 
Essa Máquina Virtual (VM) foi especialmente projetada para fornecer uma camada de 
abstração eficiente ao Sistema operacional subjacente. 
O Dalvik é uma VM baseada em registro que interpreta o formato de código de byte 
do Executável Dalvik (DEX). Por sua vez, o Dalvik depende da funcionalidade fornecida 
por várias Bibliotecas de Código Nativo de suporte. 
Isso ocorre para que o Sistema suporte as diferenças entre os Sistemas Operacionais sem 
que o desenvolvedor tenha a necessidade de escrever aplicativos para dispositivos específicos.
Apesar da maioria das aplicações Android serem desenvolvidas em Java, é possível 
escrevê-las diretamente no Código Nativo. Esse processo é comumente utilizado em 
aplicações de alto desempenho, como jogos.
O uso de qualquer VM, incluindo as do Android, sempre resultará em perda de de-
sempenho, se comparada à mesma funcionalidade implementada em “Código nativo” 
(C, C++ etc.). 
Em termos de segurança, a utilização da VM não sofre com alguns tipos de ataque 
como o Buffer Overflow.
10
11
Modelo de Segurança do Android
De modo geral o Modelo de Segurança do Android detém duas camadas distintas 
de segurança.
A primeira camada é implementada dentro do Sistema Operacional e mantém as 
aplicações instaladas fundamentalmente isoladas uma das outras.
A segunda, é a camada de aplicação dentro da própria aplicação que:
Permite aos desenvolvedores da aplicação expor de forma seletiva as funcionalidades 
para outras aplicações;
Configura os recursos da aplicação alinhado à sua tolerância ao risco.
No Sistema Operacional Android, é definido um ID de Usuário (User ID ou UID), no 
qual é herdado do Sistema Operacional Linux. Esse processo é atribuído automatica-
mente na instalação do aplicativo e define de forma essencial a identificação dele.
Basicamente, assim, como no Linux, a aplicação pode interagir com qualquer arqui-
vo de sua propriedade (mesmo UID), porém não com de outros UIDs, a não ser que seja 
explicitamente compartilhado por outra aplicação ou pelo Sistema Operacional.
Falhas de Segurança Comuns ao Android 
Com a segurança tradicional do aplicativo, há vários problemas que surgem repetida-
mente nos Relatórios de Avaliação de Segurança e vulnerabilidade para dispositivos móveis. 
Os tipos de problema variam de vazamentos de informações confidenciais a vulnera-
bilidades críticas de código ou de execução de comandos. Aplicativos Android não são 
imunes a essas falhas, embora os vetores para alcançar essas falhas possam diferir dos 
aplicativos tradicionais.
Vamos tratar sobre alguns dos problemas de segurança normalmente encontrados 
durante Testes de Segurança de Aplicativos Android e pesquisas públicas. 
Esta certamente não é uma lista detalhada, as Interfaces de Programação de Aplicati-
vos (APIs) do Android evoluem e sofrem alteração sempre considerando a possibilidade 
de personalização da Plataforma entre fabricantes e operadoras. 
11
UNIDADE 
Ataques em Sistema Operacional Android
Questões de Permissão de Aplicativos
Dada à granularidade do modelo de permissão do Android, há uma oportunidade para os 
desenvolvedores solicitarem mais permissões para o aplicativo do que pode ser necessário. 
Esse comportamento pode ser devido a inconsistências na execução e na documenta-
ção de permissão. Embora os documentos de referência do desenvolvedor descrevam a 
maioria dos requisitos de permissão para determinadas classes e métodos, eles não são 
100% completos ou 100% precisos. 
Equipes de Pesquisa tentaram identificar algumas dessas inconsistências de várias 
maneiras. Por exemplo, em 2012, os pesquisadores Andrew Reiter e Zach Lanier tenta-
ram mapear os requisitos de permissão para a API do Android disponível no Android 
Open Source Project (AOSP). 
Entre algumas das descobertas nesse esforço de mapeamento, eles descobriram 
inconsistências entre a documentação e a implementação de alguns métodos na classe 
WiFiManager. Por exemplo, a documentação do desenvolvedor não menciona os 
requisitos de permissão para o método startScan. 
A Figura 5 mostra uma captura de tela da documentação de desenvolvimento do 
Android desse método.
Figura 5 – Defi nição de class, de acordo com o Manual da Linguagem e da Plataforma Android 
Fonte: https://developer.android.com
Transmissão Insegura de Dados Sensíveis
A ideia geral de segurança de transporte (por exemplo, TLS 1.2, 1.3, e assim por 
diante) é, geralmente, bem compreendida. 
12
13
Infelizmente, isso nem sempre se aplica ao mundo dos aplicativos para dispositivos 
móveis. Talvez devido à falta de compreensão sobre como implementar adequadamente 
SSL ou TLS ou apenas a noção incorreta sobre a Rede da Operadora e a segurança 
sobre ela, os desenvolvedores de aplicativos para dispositivos móveis, às vezes, não pro-
tegem os dados confidenciais em trânsito.
Esse problema tende a se manifestar em uma ou mais das seguintes maneiras:
• Criptografia fraca ou falta de criptografia – Em alguns casos não é feita imple-
mentação de conexão HTTPS via TLS devido à confiança colocada no Canal de 
Comunicação e, pelo mesmo motivo, muitas vezes, o Certificado de Validação TLS 
aceita cifras fracas como RC4, SHA1, DES etc.;
• Criptografia forte, mas falta de atenção para avisos de segurança ou certificado de 
erros de validação – Cada Plataforma de desenvolvimento possui em seu guia a ma-
neira correta de implementar validação sobre chaves e certificados; porém poucas 
pessoas costumam ler ou consultar esses manuais buscando temas de segurança. 
Então, o desconhecimento é um dos maiores fatores para que avisos e validações 
de segurança sejam implementadas incorretamente. Não é boa prática, por exem-
plo, que falhas de segurança retornem ao cliente qualquer detalhe sobre o que está 
ocorrendo, e muito menos que esta resposta contenha tags que de alguma forma 
direcionam os próximos passos em caso de erro;
• Uso de texto simples após falhas – Tentativas de conexão com certificados inválidos 
ou chaves fracas devem ser tratados vez após vez, independentemente da quanti-
dade de tentativas. Quando esta validação não é implementada corretamente, após 
algumas tentativas é possível realizar interceptação em texto claro decorrenteda 
desativação do recurso de criptografia após inúmeras falhas;
• Uso inconsistente da segurança de transporte por tipo de Rede (por exemplo, ce-
lular versus Wi-Fi) – Descobrir problemas de transmissão inseguros pode ser tão 
simples quanto capturar o tráfego enviado do dispositivo de destino. Existem nu-
merosas ferramentas man-in-the-middle e tutoriais para facilitar essa tarefa. Num 
piscar de olhos, o emulador do Android suporta tanto o proxy do tráfego quanto o 
tráfego para um rastreamento de pacote no formato PCAP. Você pode conseguir 
isso passando as opções -http-proxy ou -tcpdump, respectivamente.
Armazenamento de Dados Inseguro
O Android oferece vários recursos padrão para o armazenamento de dados, ou seja, 
preferências compartilhadas, Bancos de Dados SQLite e arquivos antigos simples. 
Além disso, cada um desses tipos de armazenamento pode ser criado e acessado 
de várias maneiras, incluindo Códigos gerenciados e nativos, ou por meio de interfaces 
estruturadas, como provedores de conteúdo. Os erros mais comuns incluem armazena-
mento de dados confidenciais de texto sem formatação, provedores de conteúdo despro-
tegidos e permissões de arquivo inseguras.
13
UNIDADE 
Ataques em Sistema Operacional Android
Um exemplo de armazenamento de texto puro e permissões de arquivo inseguras é o 
cliente Skype para Android, que foi encontrado com esses problemas em abril de 2011. 
Reportado por Justin Case (jcase) via http://AndroidPolice.com, o aplicativo Skype 
criou inúmeras arquivos, como Bancos de Dados SQLite e arquivos XML, com permis-
sões que podem ser lidas pelo mundo e graváveis pelo mundo. 
Além disso, o conteúdo não foi criptografado e incluiu Dados de Configuração e 
registros de IM. 
A imagem a seguir mostra o diretório de dados do aplicativo Skype do jcase, bem 
como o conteúdo parcial do arquivo.
# ls -l /data/data/com.skype.merlin_mecha/files/jcaseap 
-rw-rw-rw- app_152 app_152 331776 2011-04-13 00:08 main.db 
-rw-rw-rw- app_152 app_152 119528 2011-04-13 00:08 main.db-journal 
-rw-rw-rw- app_152 app_152 40960 2011-04-11 14:05 keyval.db 
-rw-rw-rw- app_152 app_152 3522 2011-04-12 23:39 config.xml drwxrwxrwx app_152 app_152 2011-04-11 
14:05 voicemail 
-rw-rw-rw- app_152 app_152 0 2011-04-11 14:05 config.lck 
-rw-rw-rw- app_152 app_152 61440 2011-04-13 00:08 bistats.db drwxrwxrwx app_152 app_152 2011-04-12 
21:49 chatsync 
-rw-rw-rw- app_152 app_152 12824 2011-04-11 14:05 keyval.db-journal 
-rw-rw-rw- app_152 app_152 33344 2011-04-13 00:08 bistats.db-journal 
# grep Default /data/data/com.skype.merlin_mecha/files/shared.xml 
 <Default>jcaseap</Default> 
Figura 6 – Diretório de dados do aplicativo Skype do jcase
Fonte: Drake et al., 2017 
As permissões de arquivo inseguras foram o resultado de um problema anterior, me-
nos divulgado, com a criação de arquivos nativos no Android. 
O Banco de Dados SQLite, arquivos de Preferências Compartilhadas e arquivos sim-
ples criados por meio de interfaces Java usaram um modo de arquivo de 0660. 
Isso tornou as permissões de arquivo de leitura/gravação para o ID do usuário e o ID 
do grupo proprietários. No entanto, quando qualquer arquivo foi criado por meio de Có-
digo Nativo ou por comandos externos, o processo do aplicativo herdou permissões de 
seu processo pai, Zygote – uma máscara de 000, que significa leitura/gravação global. 
O cliente Skype usou Código Nativo para grande parte de sua funcionalidade, in-
cluindo a criação e a interação com esses arquivos.
Vazamento de Informações Através de Logs
O recurso de registro do Android é uma ótima fonte de vazamentos de informações. 
Por meio do uso gratuito de métodos de registro pelos desenvolvedores, geralmente 
para fins de depuração, os aplicativos podem registrar qualquer coisa, desde mensagens 
gerais de diagnóstico até credenciais de login ou outros dados confidenciais. 
Mesmo os processos do Sistema, como o ActivityManager, registram mensagens 
bastante detalhadas sobre a chamada de atividade. Aplicativos com a permissão READ_
LOGS podem obter acesso a essas mensagens de log (por meio do comando logcat).
14
15
Como um exemplo de exposição de registro do ActivityManager, considere o seguin-
te trecho:
I/ActivityManager(13738): START {act=android.intent.action.VIEW 
dat=http://www.wiley.com/ 
cmp=com.google.android.browser/com.android.browser.BrowserActivity 
(has extras) u=0} from pid 11352 
I/ActivityManager(13738): Start proc com.google.android.browser for 
activity com.google.android.browser/com.android.browser.BrowserActivity: pid=11433 uid=10017 gids={3003, 1015, 1028} 
Figura 7 – Diretório de Dados do Aplicativo Skype do jcase
Fonte: Drake et al., 2017 
Quando você vê o navegador de ações sendo chamado, talvez por meio do usuário 
tocando em um link em uma mensagem de e-mail ou SMS, os detalhes da chamada 
sendo passada são claramente visíveis e incluem a URL (http://www.wiley.com/) que o 
usuário está visitando. 
Embora esse exemplo trivial possa não parecer uma questão importante, nessas 
circunstâncias, ele apresenta uma oportunidade de coletar algumas informações sobre a 
atividade de navegação na Web de um usuário.
Um exemplo mais convincente de logging excessivo foi encontrado no navegador 
Firefox para Android. 
Neil Bergman relatou esse problema no rastreador de bugs do Mozilla, em dezembro 
de 2012. 
O Firefox no Android registrou atividade de navegação, incluindo URLs que foram 
visitadas. Em alguns casos, isso incluía identificadores de sessão, como Neil apontou em 
sua entrada de bug e saída associada do comando logcat:
I/GeckoBrowserApp(17773): Favicon successfully loaded for URL = 
https://mobile.walmart.com/m/pharmacy;jsessionid=83CB330691854B071CD172D41DC2C3 AB 
I/GeckoBrowserApp(17773): Favicon is for current URL = 
https://mobile.walmart.com/m/pharmacy;jsessionid=83CB330691854B071CD172D41DC2C3 
AB 
E/GeckoConsole(17773): [JavaScript Warning: "Error in parsing value for 
 'background'. Declaration dropped." {file: 
"https://mobile.walmart.com/m/pharmacy;jsessionid=83CB330691854B071CD172D41DC2C 
3AB?wicket:bookmarkablePage=:com.wm.mobile.web.rx.privacy.PrivacyPractices" line: 0}] 
Figura 8 – Diretório de dados do aplicativo Firefox do Neil Bergman
Fonte: Drake et al., 2017 
Tática s em Ambiente Mobile
Ataques para dispositivos móveis ocorrem em diversos cenários possíveis. 
O primeiro ponto a ser compreendido é o objetivo do ataque. Em muitas situações, o 
objetivo pode ser ganhar acesso a um dispositivo específico, ao hardware em si ou a um 
público de aplicativo específico. Essa definição nos ajuda a traçar a estratégia de ataque. 
15
UNIDADE 
Ataques em Sistema Operacional Android
Como vimos, a Plataforma possui algumas camadas e cada uma delas pode oferecer 
portas de entrada para ataques, desde falhas no chip de processamento até personaliza-
ções de distribuidoras que podem oferecer risco.
Vamos ver alguns exemplos de tópicos principais do guia MITRE ATT&CK para 
mobile, considerando a Plataforma Android com alvo.
Acesso Inicial
A tática de acesso inicial representa os vetores que os atacantes usam para ganhar 
uma posição inicial em um dispositivo móvel.
Tabela 2
Nome Descrição
Upload de Aplicativo Malicioso 
via App Store autorizada
Os dispositivos móveis, geralmente, são configurados para permitir a instalação 
de aplicativos somente em uma loja de aplicativos autorizada (por exemplo, 
Google Play Store ou Apple App Store).  Um atacante pode tentar colocar um 
aplicativo malicioso em uma Loja de Aplicativos autorizada, permitindo que o 
aplicativo seja instalado em dispositivos de destino.
Upload aplicativos maliciosos 
por outros meios
Aplicativos maliciosos são um vetor de ataque comum usado pelos atacantes 
para ganhar presença em dispositivos móveis. Essa técnica descreve a instalação 
de um aplicativo mal-intencionado em dispositivos móveis segmentados sem 
envolver uma loja de aplicativos autorizada (por exemplo, Google Play Storeou 
Apple App Store). 
Compromisso de passagem
Com essa técnica, o navegador da Web do usuário é direcionado para exploração. Por 
exemplo, um site pode conter conteúdo de mídia mal-intencionado, destinado a 
explorar vulnerabilidades em analisadores de mídia, conforme demonstrado pela 
vulnerabilidade do Android Stagefright.
Explorar via estação de 
carregamento ou PC
Se o dispositivo móvel estiver conectado (normalmente via USB) a uma 
estação de carregamento ou a um PC, por exemplo, para carregar a bateria do 
dispositivo, uma estação de carregamento comprometida ou mal-intencionada 
ou um PC poderá tentar explorar o dispositivo móvel por meio da conexão.
Explorar através de interfaces 
de rádio
O dispositivo móvel pode ser alvo de exploração através da sua interface para 
Redes celulares ou outras interfaces de rádio.
Instalar configuração insegura 
ou maliciosa
Um atacante pode tentar instalar configurações inseguras ou mal-intencionadas 
no dispositivo móvel, por meio de e-mails de phishing ou mensagens de 
texto, contendo diretamente as definições de configuração como um anexo 
ou contendo um link da Web para as definições de configuração.  O usuário do 
dispositivo pode ser induzido a instalar as configurações por meio de Técnicas 
de Engenharia Social.
Bypass Lockscreen Um atacante com acesso físico a um dispositivo móvel pode tentar ignorar a tela de bloqueio do dispositivo, utilizando recursos físicos ou lógicos. 
Aplicativo clonado 
Um atacante pode baixar um aplicativo legítimo, desmontá-lo, adicionar código 
malicioso e, em seguida, remontá-lo. O aplicativo parece ser o aplicativo original, 
mas contém funcionalidades maliciosas adicionais. O atacante poderia publicar 
esse aplicativo em lojas de aplicativos ou usar outra técnica de entrega.
16
17
Nome Descrição
Compromisso da cadeia
de suprimentos
O comprometimento da cadeia de fornecimento é a manipulação de produtos ou 
mecanismos de entrega de produtos antes do recebimento por um consumidor 
final para fins de comprometimento de dados ou Sistema.  Algo relacionado, os 
atacantes também podem identificar e explorar vulnerabilidades inadvertidamente 
presentes.  Em muitos casos, pode ser difícil ter certeza se a funcionalidade 
explorável é devida à intenção maliciosa ou simplesmente erro inadvertido.
Persistência 
Persistência é qualquer alteração de acesso, ação ou configuração em um dispositivo 
móvel que fornece ao atacante uma presença persistente no dispositivo. 
Os invasores, geralmente, precisarão manter o acesso a dispositivos móveis por meio de 
interrupções, como reinicializações de dispositivos e até redefinições de dados de fábrica.
Tabela 3
Nome Descrição
Autorize o acesso do 
administrador do dispositivo
para impedir a remoção
Um aplicativo mal-intencionado pode solicitar privilégios de administrador do 
dispositivo.  Se o usuário conceder os privilégios, o aplicativo poderá executar 
etapas para tornar sua remoção mais difícil.
App Auto-Start na inicialização
 do dispositivo
Um aplicativo Android pode ouvir a transmissão BOOT_COMPLETED, garantindo que 
a funcionalidade do aplicativo seja ativada toda vez que o dispositivo for iniciado, 
sem precisar esperar que o usuário do dispositivo inicie manualmente o aplicativo.
Modifique o códig
 executável em cache
O ART (o Android Runtime) compila código otimizado no próprio dispositivo para 
melhorar o desempenho. Se um atacante puder escalar privilégios, ele poderá usar 
esses privilégios para modificar o código em cache a fim de ocultar o comportamento 
mal-intencionado. Como o código é compilado no dispositivo, ele pode não receber 
o mesmo nível de verificações de integridade fornecidas ao código em execução na 
partição do Sistema.
Modifique o Kernel do SO ou
 a Partição de Inicialização
Se um atacante puder escalar privilégios, ele poderá usar esses privilégios 
para colocar código mal-intencionado no kernel do dispositivo ou em outros 
componentes de partição de inicialização, em que o código pode escapar da 
detecção, persistir após a Redefinição do dispositivo e não ser removível pelo 
usuário do dispositivo. Em alguns casos, o ataque pode ser detectado, mas pode 
resultar no posicionamento do dispositivo em um estado que não permite mais 
determinadas funcionalidades.
Modifique a partição do Sistema
Se um atacante puder escalar privilégios, ele poderá usar esses privilégios para 
inserir um código mal-intencionado na partição do Sistema do dispositivo, em 
que ele poderá persistir após as redefinições do dispositivo e não ser facilmente 
removido pelo usuário do dispositivo.
Modifique o ambiente
 de execução confiável
Se um atacante puder escalar privilégios, ele poderá usar esses privilégios para 
inserir um código mal-intencionado no Trusted Execution Environment 
(TEE) do dispositivo ou em outro ambiente de execução isolado, no qual o 
código pode escapar da detecção, persistir após redefinições do dispositivo e não 
ser removível pelo usuário do dispositivo.  Executar código dentro do TEE pode 
fornecer a um atacante a capacidade de monitorar ou adulterar o comportamento 
geral do dispositivo.
17
UNIDADE 
Ataques em Sistema Operacional Android
Escalação de Privilégios
A escalação de privilégios inclui técnicas que permitem que um invasor obtenha um 
nível mais alto de permissões no dispositivo móvel. 
Os invasores podem entrar no dispositivo móvel com privilégios muito limitados e 
podem ser obrigados a aproveitar a fraqueza de um dispositivo para obter os privilégios 
mais altos necessários para realizar com êxito seus objetivos de missão.
Tabela 4
Nome Descrição
Vulnerabilidade de
exploração do SO
Um aplicativo mal-intencionado pode explorar vulnerabilidades não corrigidas no 
Sistema Operacional para obter privilégios escalonados.
Exploit Vulnerabilidade TEE
Um aplicativo mal-intencionado ou outro vetor de ataque pode ser usado para explorar 
vulnerabilidades no código em execução no Trusted Execution Environment (TEE).  O 
atacante poderia, então, obter privilégios mantidos pelo TEE, potencialmente incluindo 
a capacidade de acessar chaves criptográficas ou outros dados sensíveis.  Privilégios 
escalados do Sistema Operacional podem ser primeiro requeridos para ter a capacidade de 
atacar o TEE. Se não, os privilégios dentro do TEE podem potencialmente ser usados para 
explorar o Sistema operacional.
Movimentação Lateral 
Movimentação lateral consiste em técnicas que permitem a um atacante acessar e 
controlar Sistemas Remotos em uma Rede e podem, mas não necessariamente, incluir 
a execução de ferramentas em Sistemas Remotos. 
Tabela 5
Nome Descrição
Ataque PC via conexão USB
Com privilégios escalados, um atacante pode programar o dispositivo móvel 
para representar dispositivos USB, como dispositivos de entrada (teclado e 
mouse), dispositivos de armazenamento e/ou dispositivos de Rede, a fim de 
atacar um PC fisicamente conectado. Wang e Stavrou e Kamkar descrevem essa 
técnica. Essa técnica foi demonstrada no Android e não temos conhecimento de 
nenhuma demonstração no iOS.
Explorar Recursos Da Empresa
Atacantes podem tentar explorar servidores corporativos, estações de 
trabalho ou outros recursos na Rede. Essa técnica pode aproveitar o acesso do 
dispositivo móvel a uma Rede Corporativa Interna por meio de conectividade 
local ou por meio de uma Rede Privada Virtual (VPN).
Efeitos
Os efeitos consistem em Técnicas usadas pelo atacante para executar seus objetivos 
de missão, mas que não se encaixam perfeitamente em outra categoria, como Coleção.
Os objetivos da missão variam de acordo com os objetivos de cada atacante, mas os 
exemplos incluem fraude de tarifação, destruição de dados do dispositivo ou bloqueio do 
usuário fora de seu dispositivo, até que um resgate seja pago.
18
19
Tabela 6
Nome Descrição
Criptografar arquivos para resgate
Um atacante pode criptografar arquivos armazenados no dispositivo móvel para impedir 
que o usuário os acesse, apenas desbloqueando o acessoaos arquivos após o pagamento 
de um resgate. Sem privilégios escalados, o atacante é geralmente limitado a somente 
criptografar arquivos em locais de armazenamento externos/compartilhados.  Essa 
técnica foi demonstrada no Android e não temos conhecimento de nenhum uso 
demonstrado no iOS.
Gerar receita de publicidade 
fraudulenta
Um atacante poderia tentar gerar receita de publicidade fraudulenta a partir 
de dispositivos móveis, por exemplo, acionando cliques automáticos de links de 
publicidade sem o envolvimento do usuário.
Bloquear usuário fora do dispositivo Um atacante pode tentar bloquear o usuário legítimo fora do dispositivo, por exemplo, até que um resgate seja pago.
Manipular classificações ou 
classificações da App Store
Um atacante pode usar o acesso às credenciais de um dispositivo comprometido para 
tentar manipular classificações ou classificações de lojas de aplicativos acionando 
downloads de aplicativos ou postando avaliações falsas de aplicativos. Essa técnica, 
provavelmente, requer acesso privilegiado (um dispositivo com root).
Fraude de tarifação Premium SMS
Um aplicativo malicioso pode usar APIs padrão do Android para enviar mensagens 
SMS.  Mensagens SMS podem potencialmente ser enviadas para números premium 
que cobram o proprietário do dispositivo e geram receita para um atacante.
Limpar dados do dispositivo
Um aplicativo malicioso pode abusar do acesso de administrador do dispositivo 
Android para limpar o conteúdo do dispositivo, por exemplo, se um resgate não 
for pago.
Efeitos – Rede 
No ambiente móvel, os dispositivos móveis são frequentemente conectados à Redes 
fora do controle corporativo, como Redes celulares ou Redes Wi-Fi públicas. 
Os atacantes podem tentar evitar a detecção comunicando-se nessas Redes e, po-
tencialmente, até usando mecanismos que não sejam do Protocolo da Internet, como o 
Serviço de Mensagens Curtas (SMS). 
No entanto, as Redes Celulares, geralmente, têm limites de dados e/ou taxas de dados 
extras que podem aumentar o potencial de detecção de comunicação adversária.
Tabela 7
Nome Descrição
Downgrade para Protocolos
não seguros
Um atacante pode fazer com que o dispositivo móvel use Protocolos menos 
seguros, por exemplo, ao interferir nas frequências usadas por Protocolos 
mais novos, como o LTE, e permitir que Protocolos mais antigos, como o GSM, 
comuniquem-se conforme descrito no NIST SP 800-187.  O uso de Protocolos 
menos seguros pode tornar a comunicação mais fácil de escutar ou manipular.
Escutas na Comunicação
de Rede Insegura
Se o tráfego de Rede entre o dispositivo móvel e os servidores remotos não 
estiver criptografado ou estiver criptografado de maneira insegura, um atacante 
posicionado na Rede poderá escutar a comunicação.
19
UNIDADE 
Ataques em Sistema Operacional Android
Nome Descrição
Explorar SS7 para redirecionar 
chamadas telefônicas/SMS
Um atacante pode explorar as vulnerabilidades do Sistema de sinalização para 
redirecionar chamadas ou mensagens de texto para um número de telefone sob 
o controle do invasor. O atacante poderia, então, agir como um homem no meio 
para interceptar ou manipular a comunicação.
Explorar o SS7 para rastrear o local 
do dispositivo
Um atacante pode explorar as vulnerabilidades do Sistema de sinalização para 
rastrear a localização de dispositivos móveis.
Bloqueio ou negação de serviço Um invasor pode interceptar sinais de rádio (por exemplo, Wi-Fi, celular, GPS) para impedir que o dispositivo móvel se comunique.
Manipular a comunicação
do dispositivo
Se o tráfego de Rede entre o dispositivo móvel e um servidor remoto não estiver 
protegido com segurança, um invasor posicionado na Rede poderá manipular 
a comunicação da Rede sem ser detectado.  Por exemplo, os pesquisadores 
da FireEye descobriram, em 2014, que 68% dos 1.000 principais aplicativos 
gratuitos da Google Play Store tinham pelo menos uma vulnerabilidade de 
implementação de TLS (Transport Layer Security), potencialmente abrindo o 
tráfego de Rede dos aplicativos para ataques man-in-the-middle.
Estação base celular desonesta
Um atacante poderia montar uma estação base de celulares e usá-la para 
espionar ou manipular a comunicação de dispositivos celulares.  Por exemplo, 
Ritter e DePerry, da iSEC Partners, demonstraram essa técnica usando uma 
femtocell comprometida na Black Hat USA 2013.
Pontos de acesso Wi-Fi desonestos
Um atacante pode configurar pontos de acesso Wi-Fi não autorizados ou comprometer 
pontos de acesso existentes e, se o dispositivo se conectar a eles, realizar ataques 
baseados em Rede, como interceptar ou modificar a comunicação da Rede, conforme 
descrito no NIST SP 800-153.
Troca de cartão SIM
Um atacante pode convencer a operadora de Rede Móvel (por exemplo, por 
meio de Redes Sociais, identificação forjada ou ataques internos realizados 
por funcionários confiáveis) a emitir um novo cartão SIM e associá-lo a um 
número de telefone e conta existentes.  O atacante poderia, então, obter 
mensagens SMS ou sequestrar telefonemas destinados a outra pessoa.
Ataques
Ferramentas Importantes 
Algumas ferramentas utilizadas para inter-
ceptação podem ser instaladas no Computador 
usado para o ataque e outras são instaladas nos 
dispositivos móveis. 
A seguir, estão listadas as principais:
• Burp Suite;
• Terminal SSH (Putty);
• Drozer;
• Android Studio.
Figura 9 - Drozer App
Fonte: mobiletools.mwrinfosecurity.com
20
21
Bypass Reconhecimento de Digital 
Ataques desse tipo podem ser realizados considerando como alvo potencial as OEMs, 
as fabricantes e as distribuidoras dos dispositivos.
O kit de ferramentas de remoção de tela de bloqueio do Android oferece suporte ao 
dispositivo Samsung e LG, para evitar o bloqueio de impressões digitais sem perder dados. 
Também pode remover os outros tipos de bloqueio, PIN, senha e padrão com 
poucos cliques. 
Operações fáceis e eficazes são mostradas nas etapas a seguir. 
Figura 10 – Aplicativo que auxilia no processo de by-pass de login
Fonte: Reprodução
Figura 11 – Aplicativo que auxilia no processo de by-pass de login
Fonte: Reprodução
21
UNIDADE 
Ataques em Sistema Operacional Android
O kit de ferramentas baixará e instalará o pacote de recuperação para o seu dispositivo 
automaticamente. Basta seguir as instruções do programa, conforme podemos ver a seguir. 
Figura 12 – Aplicativo que auxilia no processo de by-pass de login
Fonte: Reprodução
Após esse procedimento, é importante cadastrar uma nova digital e remover a an-
terior para que não ocorram problemas; caso contrário o processo pode ser revertido.
Interceptação 
O processo de interceptação se baseia no uso de proxy e, basicamente, por meio des-
se recurso, podemos realizar testes internos ou ataques. A disparidade está realmente 
no local de configuração. Podemos configurar o proxy no roteador caso o objetivo seja 
ganhar acesso ou, diretamente, no dispositivo de teste, como podemos ver na Figura 11:
Figura 13
Fonte: Acervo do Conteudista
22
23
Figura 14 – Local de alteração de proxy em dispositivos Android
Fonte: Reprodução
Figura 15 – Burp interceptando aplicação web responsiva
23
UNIDADE 
Ataques em Sistema Operacional Android
Por meio da interceptação, é possível mapear as chamadas realizadas pelo App para o 
servidor, entender o funcionamento de tokens e verificar os dados que estão sendo trafegados. 
Ataque Surface 
Para esse ataque, iremos utilizar o Drozer como ferramenta auxiliar, simulando ação 
de um aplicativo terceiro malicioso. 
O Drozer deve ser instalado no dispositivo móvel alvo utilizando a técnica de acesso 
inicial, para aplicativos não autorizados. Para realizar o controle das operações, deve-se 
instalar a versão console também no Computador origem. 
Após feita a instalação: 
O primeiro passo a ser feito é identificar o pacote alvo: 
dz> run app.package.list -f nome_principal_do_pacote 
>com.mwr.example.sieve
Depois de identificar o pacote, podemos verificar algumas informações sobre ele:
dz> run app.package.attacksurfacecom.mwr.example.sieve 
 
> Attack Surface: 
 3 activities exported 
 0 broadcast receivers exported 
 2 content providers exported 
 2 services exported 
 is debuggable 
Figura 16
Fonte: Acervo do Conteudista
Isso nos mostra que temos vários vetores em potencial. O aplicativo exporta várias 
atividades de telas usadas pelo aplicativo, objetos de banco de dados e serviços trabalha-
dos em segundo plano. 
Também observamos que o serviço é debuggable, o que significa que podemos ane-
xar um depurador ao processo, usando adb e percorrer o Código.
Podemos aprofundar essa superfície de ataque usando alguns comandos mais específicos. 
Por exemplo, podemos perguntar quais atividades são exportadas pelo Sieve:
dz> run app.activity.info -a com.mwr.example.sieve 
Package: com.mwr.example.sieve 
 com.mwr.example.sieve.FileSelectActivity 
 com.mwr.example.sieve.MainLoginActivity 
 com.mwr.example.sieve.PWList 
Figura 17
Fonte: Acervo do Conteudista
Nesse caso, o retorno esperado seriam apenas as telas de inicialização como login 
ou splash de carregamento. 
24
25
Atividades como PWlist não são esperadas e não requerem permissão. Podemos 
pedir ao Drozer para lançá-la:
dz> run app.activity.start --component com.mwr.example.sieve 
com.mwr.example.sieve.PWList 
Figura 18
Fonte: Acervo do Conteudista
Esse comando irá iniciar uma intent apropriada em segundo plano e a entrega ao 
Sistema por meio da chamada startActivity. Teremos sucesso no ataque, caso a autori-
zação seja ignorada, e recebemos uma lista das credenciais do usuário.
Roubo de Informações Sensíveis 
Ainda utilizando o Drozer, podemos mapear os provedores de conteúdo exportados 
como vimos anteriormente.:
dz> run app.package.attacksurface com.mwr.example.sieve 
 
> Attack Surface: 
 3 activities exported 
 0 broadcast receivers exported 
 2 content providers exported 
 2 services exported 
 is debuggable 
dz> run scanner.provider.finduris -a com.mwr.example.sieve 
Scanning com.mwr.example.sieve... 
Unable to Query content://com.mwr. 
example.sieve.DBContentProvider/ 
... 
Unable to Query content://com.mwr.example.sieve.DBContentProvider/Keys 
Accessible content URIs: 
content://com.mwr.example.sieve.DBContentProvider/Keys/ 
content://com.mwr.example.sieve.DBContentProvider/Passwords 
content://com.mwr.example.sieve.DBContentProvider/Passwords/ 
Figura 19
Fonte: Acervo do Conteudista
Após identificar os provedores, podemos utilizar o seguinte comando para ler as 
informações armazenadas nestes provedores, podendo conseguir as credenciais do usu-
ário logado ou histórico. 
dz> run app.provider.query 
content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical 
_id: 1 
service: Email 
username: incognitoguy50 
password: PSFjqXIMVa5NJFudgDuuLVgJYFD+8w== (Base64 
- 
encoded) 
email: incognitoguy50@gmail.com 
Figura 20
Fonte: Acervo do Conteudista
25
UNIDADE 
Ataques em Sistema Operacional Android
Clonagem de APP
O Processo de Clonagem de App envolve conseguir acesso ao APK e acessar o 
Código da Aplicação. 
Caso o código esteja legível, é possível alterá-lo e obter privilégios ou informações 
privilegiadas, devido à possibilidade de falsificação do App original. 
Para nos auxiliar na obtenção do arquivo APK, temos alguns sites, como o https://apps.
evozi.com, ou também podemos capturar o arquivo via SSH no diretório da aplicação. 
Figura 21 – Site que permite download direto do APK
Fonte: Reprodução
Após a obtenção do arquivo .apk, podemos abri-lo usando aplicativos de descompac-
tação e capturar o arquivo dex, enviando para o dex2jar realizar a abertura do código 
para arquivo jar.
Figura 22 – Aplicativo dex2jar, efetuando conversão de arquivo .dex para .jar
Fonte: https://apps.evozi.com
26
27
Após a alteração da extensão de dex > jar, basta abrir o arquivo em um compilador 
java, como o eclipse ou JDGUI, e realizar as alterações ou avaliações necessárias. 
Para realizar a recompilação e gerar um APK falsificado, deve-se obter apktool e 
seguir os comandos:
apktool b -f -d nome-do-aplicativo
Para que seja possível instalar o App, deve-se assiná-lo n ovamente:
java -jar SignApk.jar testkey.x509.pem testkey.pk8 nome-do-aplicativo.apk nome-do-
aplicativo_signed.apk 
Após esse processo, será gerado arquivo .apk no diretório em que estão sendo trata-
dos arquivos; basta instalar ou distribuir na Loja.
Clonagem de Dispositivo
O processo de Clonagem de Dispositivos, basicamente, envolve a restauração de backups 
de dispositivos específicos. 
No caso de um alvo, muitas aplicações permitem que sejam restauradas ou arma-
zenadas em backup, sem necessidade de vincular à conta Google. Essa configuração 
pode permitir ganhar acesso à aplicação e aos dados armazenados no dispositivo, como 
usuários e senha. 
O processo de clonagem envolve capturar o arquivo de backup, que pode estar em 
outro vetor, como computador da vítima, e restauração ou cópia direta para o dispositivo 
mobile utilizado como base.
Figura 23 – Ilustração sobre local de alteração de proxy no dispositivo
27
UNIDADE 
Ataques em Sistema Operacional Android
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Livros
Web Aplication hackers handbook – Finding and Exploiting Security Flaws
STUTTARD, D; PINTO, M. Web Aplication Hackers Handbook – Finding and 
Exploiting Security Flaws. 2.ed. Hoboken: Wiley Publishing, 2011; 
 Leitura
Curso GIAC SEC575
https://bit.ly/2ZI5BPH
Top 10 2013/ProjectMethodology
https://bit.ly/2vuQI5s
OWASP Mobile Security Project
https://bit.ly/1FAIJiv
MITRE ATT&CK
https://bit.ly/2vtTMyw
Fingerprints On Mobile Devices: Abusing and Leaking
https://ubm.io/2ielAyR
28
29
Referências
CHELL, D. et al. The Mobile Application Hacker‘s Handbook. Nova York: John 
Wiley & Sons Inc, 2015.
CVE-2018-0591. [S. l.], 2018. Disponível em: https://www.talosintelligence.com/vul-
nerability_reports/TALOS-2018-0591. Acesso em: 20 fev. 2019.
DEVELOPER Guide Android. [S. l.], 2019. Disponível em: https://developer.android.
com/docs. Acesso em: 20 fev. 2019.
DRAKE, J. et al. Android Hacker‘s Handbook. Canada: John Wiley & Sons Inc, 
2014. (E-book).
ELENKOV, N. Android Security Internals: An In-Depth Guide to Android‘s Security 
Architecture. EUA: No Starch Press, 2014. (E-book).
GRÁFICOS sobre pesquisas. [S. l.], 2019. Disponível em: https://web.archive.org/
web/20140816052125/http://www.statista.com/. Acesso em: 20 fev. 2019.
MILLER, C. et al. IOS Hacker’s Handbook. Nova York: John Wiley & Sons Inc, 2012.
MITRE ATT&CK. [S. l.], 2019. Disponível em: https://attack.mitre.org/tactics/mobile/. 
Acesso em: 20 fev. 2019.
29

Continue navegando