Gabriel Miranda Carvalho

Propaganda
Pró-Reitoria de Pós-Graduação e Pesquisa
Lato Sensu em Perícia Digital
Trabalho de Conclusão de Curso
ENGENHARIA REVERSA DE MALWARES PARA A
PLATAFORMA ANDRIOD
Autor: Gabriel Miranda Carvalho
Orientador: Prof. Esp. Américo Munhoz Jr.
Brasília - DF
2014
GABRIEL MIRANDA CARVALHO
ENGENHARIA REVERSA DE MALWARES PARA A PLATAFORMA ANDROID
Artigo apresentado ao curso de pósgraduação em Perícia Digital da
Universidade Católica de Brasília, como
requisito para obtenção do Título de Pós
Graduado em Perícia Digital.
Orientador: Prof. Esp. Américo Munhoz Jr.
Brasília
2014
Artigo de autoria de Gabriel Miranda Carvalho, intitulado “ENGENHARIA
REVERSA DE MALWARES PARA A PLATAFORMA ANDROID”, apresentado como
requisito parcial para obtenção do grau de Pós Graduado em Perícia Digital da
Universidade Católica de Brasília, em 30 de Maio de 2014, defendido e aprovado,
pela banca examinadora abaixo assinada:
__________________________________________
Professor. Esp. Américo Munhoz Jr.
Orientador
Curso Lato Sensu em Perícia Digital - UCB
_________________________________________
Professor. Msc. Paulo Roberto Corrêa Leão
Examinador
Curso Lato Sensu em Perícia Digital - UCB
Brasília
2014
À minha noiva pela compreensão e paciência, à
minha familia que sempre me apoiou e a meus
amigos
que
contribuíram
para
meu
desenvolvimento profissional.
5
ENGENHARIA REVERSA DE MALWARES PARA A PLATAFORMA ANDROID
GABRIEL MIRANDA CARVALHO
Resumo:
Esta pesquisa empírica abordou por meio de uma resenha explicativa a análise
estática de Malwares para a plataforma Android através da engenharia reversa feita
por softwares livres. Devido ao seu crescente número de usuários, a plataforma
móvel se tornou um grande alvo de aplicações maliciosas, pois, nesses dispositivos
são armazenados uma quantidade significativa informações sensíveis sobre o
usuário. Daí surge a importância da análise desses tipos Malwares e de se ter
ferramentas eficazes que possibilitem tal análise. Nesse trabalho foram usados os
softwares Apktool, DEX2JAR e JD-GUI para realizar a engenharia reversa das
aplicações. A pesquisa desenvolvida demostrou a eficácia de tais ferramentas livres
para a análise de Malwares Android.
Palavras-chave: Engenharia Reversa. Malware. Android. Kernel Linux.
1. INTRODUÇÃO
Por muito tempo as ameaças a telefones móveis se restringiram a ataques de
SMS e ligações telefônicas, mas nos dias de hoje, um smartphone é capaz de fazer
muito mais do que isso. É cada vez mais comum as pessoas acessarem seus emails, navegarem na internet, acessarem suas contas em redes sociais e até mesmo
acessarem suas contas bancárias pelo simples toque na tela de seus smartphones.
Com esse aumento nas funcionalidades dos telefones, também aumentou a
quantidade de ameaças que tentam tirar proveito ilícito dessas funcionalidades.
Hoje um grande foco dos Malwares são os dispositivos móveis, pois são
nesses equipamentos em que as pessoas mais gastam tempo acessando a Internet.
Segundo um estudo da Kaspersky Lab sobre o cenário de ameaças a dispositivos
móveis, foi detectado 100.000 novos programas maliciosos em 2013 onde 98,1%
desses Malwares são destinados ao sistema Android (PINTO, 2014).
O Android, ao contrário do que a maioria das pessoas pensa, é muito mais do
que um sistema operacional para dispositivos móveis. Ele é uma plataforma de
desenvolvimento, constituído de vários softwares. O Android é baseado no Kernel
Linux, fazendo com que ele englobe um vasto conjunto de funcionalidades oferecido
pelo Kernel.
É surpreendente o crescimento dessa plataforma. A cada ano o Android vem
crescendo em números, chegando a dominar 90% do mercado brasileiro
(VENTURA, 2014). Estima-se que em 2014, o Android chegará a 1,1 bilhão de
usuários, um crescimento de 26% referente ao ano de 2013 (EXAME, 2014).
No primeiro quadrimestre do ano de 2013, as vendas de smartphones com
Android cresceram 79,5%. Só nesse período, foram vendidos 162 milhões de
aparelhos com o sistema da Google (TANJI, 2014). Consequentemente acarretou
um aumento de softwares maliciosos para estes dispositivos.
1.1
JUSTIFICATIVA
6
Tendo em vista o aumento de softwares maliciosos para dispositivos móveis,
o presente artigo discorreu sobre a análise estática de Malwares para Android
utilizando ferramentas livres disponíveis para todos usuários, as quais foram o
Apktool, DEX2JAR e JD-GUI. Ao se utilizar tais ferramentas, fica evidente que
qualquer usuário poderá efetuar os procedimentos de engenharia reversa e tirar
suas próprias conclusões sobre a licitude de uma aplicação.
A necessidade da análise desses tipos de Malwares, se deve ao fato de que
os usuários não conhecem a fundo os riscos de se instalar aplicativos de
procedências duvidosas em seus dispositivos.
1.2
DELIMITAÇÃO DO TEMA
O tema se delimita em avaliar a eficácia de ferramentas livres que se
propõem em efetuar engenharia reversa em aplicações Android, onde o código
resultante possa auxiliar na análise desses softwares.
1.3
CONTEXTUALIZAÇÃO DO PROBLEMA E O PROBLEMA
Devido a facilidade de acesso à informação, à comunicação e a comodidade,
grande parte da população possui dispositivos móveis (celulares, smartphones,
tablets, palmtops) contendo inúmeras informações sobre seus usuários, como
agenda de contatos, mensagens, e-mails e até mesmo dados bancários. O que
tornam esses dispositivos grandes alvos de aplicações maliciosas. Porém, os
usuários não se dão conta dos riscos que correm caso alguém mal intencionado
tome posse de suas informações pessoais. Dessa forma, não fazem um julgamento
prévio da licitude dos aplicativos que instalam em seus dispositivos.
Sendo assim, é possível garantir a eficácia de ferramentas livres no processo
de engenharia reversa para análise de Malwares em aplicações para Android?
1.4
PRESSUPOSTOS DA PESQUISA
Este trabalho valeu-se do pressuposto de que é possível identificar uma
atitude ilícita de um software para Android através da análise de seu código fonte
utilizando ferramentas livres no processo de engenharia reversa.
1.5
PROPÓSITO
7
Mostrar a eficácia de ferramentas livres no processo de análise de Malwares,
através de engenharia reversa, em aplicações para Android, demonstrando como
uma aplicação ilícita pode tirar proveito de informações dos usuários sem que os
mesmos percebam.
1.5.1 Objetivo Geral
Comprovar a eficácia da engenharia reversa feita com ferramentas livres para
a análise estática de Malwares Android.
1.5.2 Objetivos específicos
Para alcanças o objetivo geral foi necessário:
a) obter aplicativos para Android infectados com códigos maliciosos;
b) utilizar as ferramentas Apktool, DEX2JAR e JD-GUI para a realização da
engenharia reversa nas aplicações; e
c) analisar os códigos fontes fornecidos pelas ferramentas a fim de detectar
os trechos contendo códigos maliciosos.
1.6
ORGANIZAÇÃO DO TRABALHO
Este trabalho foi dividido basicamente em três tópicos: Introdução,
Desenvolvimento e Conclusão. Na Introdução está descrito o cenário atual do uso
de smartphones e tablets com Android, o crescimento de Malwares para essa
plataforma e algumas características gerais. No desenvolvimento foi abordado as
características do Android, o esquema de segurança oferecido pelo Kernel Linux e
pela plataforma Android, análise estática de Malwares através de engenharia
reversa bem como matérias, metodologia, resultado da pesquisa, discussões e
análise dos resultados. Finalizou-se este trabalho com as considerações finais e
trabalhos futuros.
2 REFERENCIAL TEÓRICO
Para entender como os Malwares agem na plataforma Android, deve-se ter
em mente como funciona a arquitetura do sistema e seu modelo de segurança
contra possíveis ameaças.
2.1 ARQUITETURA ANDROID
8
A arquitetura Android é organizada em camadas, onde cada camada possui
suas funções muito bem definidas e provê serviços específicos para a camada
acima, ver Figura 1.
Na camada mais baixa o Android usa o Kernel Linux, na camada acima estão
as Bibliotecas Nativas e o Android Runtime (que é constituído pela máquina virtual
Dalvik e as Core Libraries), na próxima camada está o Framework de Aplicação do
Android e na última camada as aplicações. (DUBEY, 2013).
Figura 1: Arquitetura Android
Fonte: ELINUX (2014)
2.1.1 Kernel Linux
O Kernel Linux encontrado no Android não é o Kernel tradicional usado nas
várias distribuições GNU/Linux, mas sim um Kernel modificado para as
necessidades dos sistemas embarcados. Logo, não possui todas as funcionalidades
do Kernel tradicional.
Através de sua base sólida, o Linux oferece muitos benefícios ao Android. Ele
provê abstração de hardware, segurança, gerência de memória e de processos. Isso
faz com que o Android possa ser utilizado em vários dispositivos diferentes de
diversos fornecedores. (DUBEY, 2013).
9
2.1.2 Bibliotecas Nativas e Android Runtime
O Android possui um conjunto de bibliotecas escritas em C e C++ que são
utilizadas por diversos de seus componentes, essas bibliotecas são chamadas de
Bibliotecas Nativas. Os desenvolvedores de aplicações têm acesso a essas
bibliotecas através do Framework de Aplicação (DUBEY, 2013).
Algumas dessas bibliotecas são: SQLite (provê um banco de dados
relacional), SSL (provê suporte a funções de criptografia) e WebKit (Motor de
renderização para os Browsers do Android).
O Android Runtime é dividido em duas partes: A máquina virtual Dalvik e as
Core Libraries. A máquina virtual Dalvik é a implementação de uma máquina virtual
Java para sistemas embarcados, e ela executa aplicações no formato “dex”. As
aplicações Android são escritas em Java e compiladas em arquivos Java class. Mas
o Android não executa esses arquivos, então eles são recompilados para o formato
“dex” (DUBEY, 2013). As Core Libraries provêm funcionalidades disponíveis em
Java, exemplo: SQLite e OpenGL.
2.1.3 Framework de Aplicação
O framework de aplicação provê um conjunto vasto de classes para que os
desenvolvedores possam construir suas aplicações Android. Essa camada também
disponibiliza os serviços chamados Android Managers, sendo os mais importantes o
Activity Manager (gerencia o ciclo de vida de uma aplicação), Resource Manager
(gerencia o acesso a recursos), Location Manager (provê suporte a atualizações de
localidade) e Notification Manager (gerencia a notificação de eventos para uma
aplicação como o recebimento de e-mail ou SMS, por exemplo) (DUBEY, 2013).
2.1.4 Aplicação
A camada de aplicação se refere ao desenvolvimento e projetos das
aplicações Android. As quais podem ser disponibilizadas para download na loja
oficial da Google, a Google Play. Existem várias outras lojas virtuais que
disponibilizam aplicações Android.
2.2 INICIALIZAÇÃO DO ANDROID E DE SUAS APLICAÇÕES
Assim como nos sistemas GNU/Linux, a inicialização do sistema operacional
começa com o boot loader carregando o Kernel Linux, que por sua vez inicia o
processo init. Todos os outros processos são filhos desse processo init. Então o
processo init começa a inicializar algumas deamons. Finalizado a inicialização
desses deamons, o processo init inicializa um processo chamado "zigoto". Esse
processo zigoto inicializa a primeira máquina virtual Dalvik, pré-carrega as Core
Libraries usadas pelas aplicações e fica na escuta para futuras requisições de
10
inicialização de novas máquinas virtuais. Todas as aplicações que executam no
Android são processos Linux e cada aplicação executa em um processo diferente.
Logo, cada aplicação é executada em sua própria instancia da máquina virtual
Dalvik. Após o processo zigoto inicializar, ele faz um fork de si mesmo e inicializa
todos os principais serviços Android como o Activity Manager. Cada aplicação
inicializada é resultante de um fork do processo zigoto e a criação de uma nova
máquina virtual Dalvik (DUBEY, 2013).
2.3 MODELO DE SEGURANÇA
A implementação de segurança no Android pode ser percebida em dois níveis
diferentes: Na camada do Kernel Linux e na camada de Aplicação.
2.3.1 Segurança através do Kernel Linux
Cada nova aplicação que é instalada no Android recebe um identificador
único de usuário (UID), um identificador único de grupo (GID) e possui seu próprio
conjunto de dados e arquivos que estão associados aos seus UID e GID. O acesso
a esses dados e arquivos é permitido apenas para a aplicação que possui o UID e
GID correspondentes ou pelo super usuário (root). Caso uma aplicação queira
compartilhar informações com outras aplicações, ela deve implementar um
mecanismo de Inter Process Comunication (IPC). Dessa forma, o Linux cria
sandboxes diferentes para cada aplicação, evitando que outras aplicações acessem
os dados de outras (DUBEY, 2013).
2.3.2 Segurança através do Manifesto de Permissão de Aplicações
Uma aplicação Android não possui permissão para executar operações como
acesso a Internet, envio e recebimento de SMS, ligações telefônicas. Para que ela
possa fazer esse tipo de operação, ela precisa solicitar especificamente essas
permissões ao usuário. Essas permissões são declaradas em um arquivo de
configuração (AndroidManifest.xml) de cada aplicação. Quando uma aplicação é
instalada, o Android informa ao usuário quais permissões a aplicação está
requerendo, e o usuário escolhe se aprova ou se reprova o pedido. O Usuário pode
apenas aprovar ou rejeitar todas as permissões, não existe a possibilidade de
rejeitar algumas e aprovar outras. Caso o pedido seja rejeitado, a aplicação não é
instalada. Mas caso seja aprovado, a única forma de retirar tais permissões é
desinstalando a aplicação (DUBEY, 2013).
11
2.4 MALWARES
Segundo Tectherms (2014), Malware é uma abreviação de "malicious
software" (software malicioso) que se refere a programas de computador projetados
para danificar ou fazer outras ações indesejadas em um sistema de computador.
Os Malwares podem ser classificados em diversos tipos como: Trojans, Exploits,
Downloaders, Lauchers, Rootkits, Worms e Virus (SIKORSKY, 2012).
2.4.2 Análise de Malwares
O propósito da análise de Malwares é determinar exatamente o que um
software suspeito faz. Na maioria das vezes, apenas o executável do software
(ilegível para humanos) estará disponível para análise, sendo necessário a utilização
de ferramentas e técnicas para a análise (SIKORSKY, 2012).
Existem duas práticas fundamentais para análise de Malware: a análise
estática (envolve examinar o Malware sem executá-lo) e a análise dinâmica
(examina o Malwares em execução) (SIKORSKY, 2012).
Em uma análise estática avançada, é necessário fazer a engenharia reversa
do Malware, ou seja, obter o código fonte do software a partir do executável através
de uma ferramenta de disassembler. Já em uma análise dinâmica avançada, utilizase um depurador para examinar o estado interno do programa malicioso. Essas
duas técnicas são utilizadas em conjunto para uma análise aprofundada
(SIKORSKY, 2012).
2.6 APKTOOL, DEX2JAR e JD-GUI
O Apktools é uma ferramenta para engenharia reversa de aplicativos Android.
Ele decompila o executável do aplicativo para código “smali” (código assembler
usado pela máquina virtual Dalvik) e decriptografa outros arquivos do aplicativo. O
Apktool é uma ferramenta de código aberto e está disponível na licença Apache
License 2.0 (APKTOOL, 2014).
A ferramenta DEX2JAR também é uma ferramenta de código aberto
disponível na licença Apache License 2.0. Ela decodifica o arquivo “dex” (tipo de
arquivo executado pela máquina virtual Dalvik) contido dentro do arquivo “apk” para
um arquivo “jar” (código Java compilado) (DEX2JAR, 2014).
O JD-GUI é uma ferramenta gráfica que decompila um arquivo “class” e
mostra o código fonte Java. O JD-GUI possui código aberto e é gratuito para fins
não comerciais, está disponível na licença GNU GPL v2 (JDGUI, 2014).
12
3 MATERIAIS E METODOLOGIA
Esse trabalho foi desenvolvido através de uma pesquisa aplicada com o
intuito de realizar a engenharia reversa de aplicações maliciosas para Android a fim
de identificar as formas que os Malwares agem no sistema.
Utilizou-se para tal fim uma pesquisa bibliográfica a respeito do assunto
abordado, bem como o uso prático de análise de Malwares comprovando o fato que
foi estudado.
3.1 DESCRIÇÃO DOS PROCEDIMENTOS
Foram analisados os Malwares DroidKungFu, iCalendar e Zitmo. Todos foram
encontrados no site http://contagiodump.blogspot.com.br/2011/03/take-sampleleave-sample-mobile-malware.html. A máquina utilizada para a análise foi um
MacBook Pro com Processador Intel Core i5 2.5GHz, 8GB de Memória RAM e
sistema operacional MAC OS X Versão 10.9.3.
Foi utilizada a ferramenta Apktools através do comando “apktool d
nome_do_malware.apk” para obter o código fonte smali do aplicativo e o arquivo
AndroidManifest.xml decriptografado.
Para obter o arquivo “dex” da aplicação, foi necessário descompactar o
aplicativo. Para isso, foi utilizado o programa Unzip através do comando “unzip
nome_do_malware.apk”.
O arquivo “dex” é o arquivo que a máquina virtual Dalvik interpreta. Para
transformar os arquivos “dex” em arquivos “jar”, foi utilizado a ferramenta DEX2JAR.
Através do comando “./d2j-dex2jar.sh classes.dex” obtemos um arquivo “jar” a partir
de um arquivo “dex”, note que “classes.dex” é o arquivo “dex” obtido através da
ferramenta Unzip. Um arquivo “jar” contém todos os arquivos “class” de uma
aplicação.
A última etapa da engenharia reversa é abrir o arquivo “jar” com o programa
JD-GUI. O JD-GUI é uma ferramenta gráfica que mostra o código fonte Java dos
arquivos “class” a partir de um arquivo “jar”.
3.2 RESULTADOS DA PESQUISA
Os resultados obtidos através dos passos descritos anteriormente foram os
arquivos em código assembler smali, os arquivos AndroidManifest.xml
decriptografados mostrando a quais recursos as aplicações maliciosas pedem
acesso e os códigos fontes Java.
13
3.3 DISCUSSÕES E ANÁLISE DOS RESULTADOS
A análise dos resultados foi feita através do uso das ferramentas livres em
três aplicações Android infectadas por diferentes Malwares, o DroidKungFu,
iCalendar e Zitmo.
3.3.1 DroidKungFu
Para dar uma direção na análise do Malware, foi verificado no arquivo
AndroidManifest.xml obtido pelo Apktool, que essa aplicação solicita permissão de
acesso aos seguintes recursos: Internet; Read_phone_state; Access_network_state;
write_external_storage;
access_fine_location;
read_logs;
access_wifi_state,
change_wifi_state.
Essas permissões possibilitam a aplicação ter acesso a Internet, permissão
de leitura do estado do telefone, escrever no cartão de armazenamento externo,
acesso a localização do dispositivo, leitura de logs, alteração do estado do wi-fi,
entre outras.
Analisando o código fonte Java obtido, foi encontrado trechos de códigos
suspeitos. O trecho de código encontrado na Figura 2, mostra o Malware tendo
acesso ao número de IMEI do telefone, bem como o modelo e a versão do Android
utilizada. As Figuras 3 e 4 mostram em outra parte do código, duas frases escritas
em chinês utilizadas para mostrar ao usuário caso o Malware não consiga adquirir
acesso de superusuário ao sistema ou não consiga habilitar o modo desenvolvedor
do dispositivo. As frases traduzidas para o português através do site
translate.google.com significam “O software requer privilégios de root para utilizar
todas as funcionalidades, por favor, ser autorizado por um programa de
gerenciamento de licença!” e “A necessidade de abrir o software de depuração USB,
a fim de utilizar todas as funcionalidades, certifique-se de recursos de depuração
USB foram selecionados!”.
14
Figura 2: Trecho de Código DriodKungFu Roubo de Informações
Figura 3: Trecho de Código DroidKungFu Frase Root em Chinês
Figura 4: Trecho de Código DroidKungFu Frase USB em Chinês
3.3.2 iCalendar
Analisando o arquivo AndroidManifest.xml do Malware iCalendar, foi
verificado que a aplicação solicita acesso aos seguintes recursos: INTERNET,
ACCESS_COARSE_LOCATION,
RESTART_PACKAGES,
RECEIVE_SMS,
SEND_SMS, SET_WALLPAPER. Essa permissões possibilitam o aplicativo a
acessar a Internet, mudar o papel de parede do dispositivo, enviar e receber
mensagens de texto.
Ao verificar o código fonte Java, foi encontrado um trecho de código onde a
aplicação envia uma mensagem de texto para o número 1066185829 sem o
consentimento do usuário com a mensagem “921X1”, conforme Figura 5.
Em outro trecho de código, conforme Figura 6. Verifica-se que se o aparelho
receber alguma mensagem vinda dos números 10086, 10000, 10010, 1066185829,
1066133 ou 106601412004, o aplicativo não permite que o usuário seja informado
da nova mensagem.
15
Figura 5: Trecho de Código iCalendar Envio de SMS
Figura 6: Trecho de Código iCalendar Abortar Recebimento SMS
3.3.3 Zitmo
No arquivo AndroidManifest.xml desse Malware, foi encontrado a solicitação
de
acesso
aos
seguintes
recursos:
RECEIVE_SMS,
INTERNET,
READ_PHONE_STATE. Essas permissões possibilitam a aplicação a acessar a
Internet, ler o estado do telefone e receber mensagens de texto.
Ao verificar o código fonte Java, foi encontrado trechos de códigos malicioso
mostrando que trata-se de um Malware que rouba as mensagens de texto do
usuário e envia para um servidor remoto.
O trecho de código na Figura 7, mostra o Malware filtrando por mensagens de
texto. Caso seja encontrada alguma mensagem, ele não permite que usuário seja
notificado da nova mensagem e inicia um serviço chamado MainService.
O serviço MainService executa algumas operações com as mensagens,
incluindo a captura do número de origem da mensagem e o texto, conforme Figura
8. Analisando o arquivo “ServerSession.class” foi possível identificar que as
informações das mensagens de texto são enviadas ao servidor remoto
"http://softthrifty.com/security.jsp".
16
Figura 7: Trecho de Código Zitmo Filtro de Mensagens
Figura 8: Trecho de Código Zitmo Captura de Informações SMS
17
Figura 9: Trecho de Código Smali Gerado pelo JD-GUI
4 CONCLUSÃO
Através das informações obtidas na análise dos códigos fontes e arquivos de
configuração dos Malwares, pode-se afirmar que o resultado das ferramentas
utilizadas para a engenharia reversa foi satisfatório. Mostrando que devido ao
esquema de segurança oferecido pelo Android, os Malwares agem através da
concessão de permissões dos usuários a recursos importantes dos dispositivos. O
Usuário não percebendo que está instalando um aplicativo infectado, concede as
permissões solicitadas pelo Malware.
A decriptografia do arquivo AndroidManifest.xml pela ferramenta Apktools se
mostrou eficaz e muito útil. Pois, com base na análise dos resultados do trabalho, ao
verificar primeiramente a quais recursos do sistema a aplicação requer acesso, o
analista consegue ter uma orientação inicial do funcionamento da aplicação e de seu
propósito. Na análise feita do Malware Zitmo, o arquivo AndroidManifest.xml possuía
entradas de poucos recursos onde se destacavam os recursos de acesso a internet
e recebimento de mensagens de texto. Com essas informações o analista foca em
encontrar trechos de código onde a aplicação utiliza esses recursos de forma ilícita.
A conversão dos arquivos “dex” para “jar” pela ferramenta DEX2JAR também
mostrou ser eficaz, pois, o arquivo resultante pôde ser aberto pelo software JD-GUI.
A decompilação dos arquivos “jar” em código Java pela ferramenta JD-GUI foi
de suma importância para a análise dos Malwares. A leitura do código fonte Java é
muito mais intuitiva para um programador moderno do que a leitura do código fonte
em smali gerado pela aplicação Apktools. Porém, alguns trechos (mínimos) dos
18
códigos não puderam ser decompilados pelo JD-GUI para a linguagem Java, mas o
software decompilou para smali e deixou em forma de comentário Java, conforme
Figura 9.
4.1 TRABALHOS FUTUROS
Como trabalhos futuros, sugere-se realizar um estudo sobre ferramentas
livres para análise dinâmica de Malwares Android.
5. RESUMO EM LÍNGUA ESTRANGEIRA
REVERSE ENGINEERING OF MALWARES FOR ANDROID PLATFORM
GABRIEL MIRANDA CARVALHO
Abstract:
This study covers static analysis of malware for the Android platform through reverse
engineering done by free software. Due to its increasing number of users, the mobile
platform has become a major target of malicious applications, because these devices
a significant amount sensitive user information are stored. Hence arises the
importance of analyzing these types of Malware and have effective tools that enable
such analysis. In this work the Apktool, DEX2JAR and JD-GUI software to perform
reverse engineering applications were used. Research carried shows the
effectiveness of such free to Android malware analysis tools.
Keywords: Reverse Engineering. Malware. Android. Kernel Linux.
6. REFERÊNCIAS
APKTOOL. android-apktool. Disponível em: <https://code.google.com/p/androidapktool/>. Acesso em: 18 Junho. 2014.
DEX2JAR. dex2jar. Disponível em: <https://code.google.com/p/dex2jar/>. Acesso
em: 18 Junho. 2014.
DUBEY, Abhishek., MISRA, Anmol. Android Security. New York: CRC Press, 2013.
ELINUX. Android Architeture. Disponível em:
<http://elinux.org/Android_Architecture>. Acesso em: 14 Maio. 2014.
19
EXAME. Mais de 1 bi de dispositivos Android serão vendidos em 2014.
Disponível em:< http://exame.abril.com.br/tecnologia/noticias/mais-de-1-bi-dedispositivos-android-serao-vendidos-em-2014>. Acesso em: 14 Maio. 2014.
JDGUI. JD-GUI. Disponível em: <http://jd.benow.ca>. Acesso em: 18 Junho. 2014.
PINTO, Pedro. Qual a evolução do malware para dispositivos móveis?.
Disponível em: <http://pplware.sapo.pt/informacao/qual-a-evolucao-do-malwarepara-dispositivos-moveis/>. Acesso em: 14 Maio. 2014.
SIKORSKI, Michael., HONIG, Andrew. Pratical Malware Analysis. San Francisco:
No Starch Press, 2012.
TANJI, Thiago. Android tem crescimento de 80% nas vendas. Disponível em:
<http://exame.abril.com.br/tecnologia/noticias/android-tem-crescimento-de-79-5-nasvendas/>. Acesso em: 14 Maio. 2014.
TECHTERMS. Malware. Disponível em:
<http://www.techterms.com/definition/malware>. Acesso em: 14 Maio. 2014.
VENTURA, Felipe. No Brasil, smartphones Android dominam 90% do mercado e
Windows Phone tenta ultrapassar iOS. Disponível em:
<http://gizmodo.uol.com.br/smartphones-brasil-2q2013/>. Acesso em: 14 Maio.
2014.
Download