You are on page 1of 85

UNIVERSIDADE PRESBITERIANA MACKENZIE

FACULDADE DE COMPUTAO E INFORMTICA


CINCIA DA COMPUTAO

VALDEMIR VIEIRA JUNIOR

FORENSE DIGITAL EM DISPOSITIVOS MVEIS COM SISTEMA


OPERACIONAL ANDROID

So Paulo
2013

VALDEMIR VIEIRA JUNIOR

FORENSE DIGITAL EM DISPOSITIVOS MVEIS COM SISTEMA


OPERACIONAL ANDROID

Trabalho de Graduao Interdisciplinar


apresentado ao curso de Cincia da
Computao, da
Faculdade
de
Computao
e
Informtica da Universidade
Presbiteriana
Mackenzie,
como
requisito parcial
obteno do grau de Bacharel em
Cincia da Computao.

ORIENTADORA: Professora Dr Maria Ines Lopes Brosso Pioltine

So Paulo
2013

AGRADECIMENTOS

Aos meus pais que mesmo no podendo me ajudar diretamente contriburam


com o que puderam durante a minha jornada.

A minha orientadora, Professora Dra. Maria Ins Lopes Brosso Pioltine, que me
guiou durante todo o desenvolvimento deste trabalho, me ajudando a manter o
foco na pesquisa proposta desde o seu incio.

Aos meus colegas de trabalho pelo tempo dedicado a me ouvir falar da


pesquisa e pelas sugestes acrescentadas a este trabalho.

No devemos parar de explorar. E o fim de toda a nossa explorao ser


chegar ao ponto de partida e ver o lugar pela primeira vez
T. S. Eliot

RESUMO
Existem diversas tcnicas para percia forense em desktops e estas j esto
bastante difundidas. No entanto, no que se refere a computao pessoal o
cenrio mundial est em plena mudana. Cada vez mais pessoas deixam de
utilizar os tradicionais computadores pessoais e concentram suas atividades
em smartphones e tablets. Dentre os sistemas operacionais para dispositivos
mveis, o que vem mostrando o maior crescimento o Android, e por isso ele
o foco desta pesquisa. As tcnicas de forense digital conhecidas para telefones
celulares e desktops no so suficientemente especficas e detalhadas para
realizao de exames em dispositivos controlados pelo Android. O objetivo do
trabalho apresentar tcnicas de percia forense com mtodos especficos
para o sistema operacional Android. Para a apresentao destes mtodos de
percia forense, foram mapeadas situaes reais em que os peritos se
encontram durante os processos de extrao de dados. Ao final do trabalho foi
proposto um estudo de caso, no qual um smartphone com Android
propositalmente infectado com um trojan e este identificado atravs do uso de
algumas das tcnicas forenses apresentadas.
Palavras-chave: Android, Anlise Forense, Segurana, Mobile, Aquisio de
Dados, Smartphones.

ABSTRACT
There are several techniques for forensics on desktops and these are already
quite widespread. However, in regard to personal computers in the world
scenario is full change. More and more people stop using traditional personal
computers and focus their activities on smartphones and tablets. Among the
operating systems for mobile devices, which has shown the greatest growth is
Android, so it is the focus of this research. The digital forensic techniques
known for mobile phones and desktops are not sufficiently specific and detailed
examinations on devices controlled by Android. The objective is to present
forensic techniques with methods specific to the operating system Android. For
the presentation of these methods forensics were mapped actual situations in
which the experts are in the process of data extraction. At the end of the work
we propose a case study in which a smartphone with Android is purposely
infected with a trojan and this identified through the use of some of forensic
techniques presented.
Keywords:

Android,

Smartphones.

Forensics,

Security,

Mobile,

Data

Acquisition,

SUMRIO
CAPTULO 1.

INTRODUO ....................................................................... 14

1.1 INTRODUO ........................................................................................ 14


1.2

OBJETIVO .......................................................................................... 15

1.3

MOTIVAO ....................................................................................... 15

1.4

JUSTIFICATIVA .................................................................................. 16

1.5

TRABALHOS RELEVANTES .............................................................. 16

1.6

METODOLOGIA DE PESQUISA ........................................................ 16

1.7

ORGANIZAO DO TRABALHO ....................................................... 16

CAPTULO 2.

O SISTEMA OPERACIONAL ANDROID ............................... 18

2.1

INTRODUO .................................................................................... 18

2.2

A PLATAFORMA................................................................................. 19

2.3

A MQUINA VIRTUAL DALVIK .......................................................... 21


2.3.1 Comparao entre a Sun JVM e a Dalvik VM ............................... 22
2.3.2 O formato dex ............................................................................... 23

2.4

2.5

2.6

2.7

ANDROID SOFTWARE DEVELOPMENT KIT .................................... 24


2.4.1

Android NDK ............................................................................. 25

2.4.2

Android Virtual Devices (AVD) .................................................. 25

2.4.3

Android Debug Bridge - ADB Tools ........................................... 28

SISTEMAS DE ARQUIVOS ................................................................ 30


2.5.1

FAT32........................................................................................ 30

2.5.2

YAFFS2 ..................................................................................... 31

2.5.3

Parties do Sistema de Arquivos ............................................. 32

2.5.4

Formas de Persistncia de Dados ............................................ 33

LOGS DO SISTEMA E DAS APLICAES ........................................ 35


2.6.1

Log do Kernel do Linux.............................................................. 35

2.6.2

Logs dos Apps........................................................................... 40

GOOGLE PLAY .................................................................................. 41

CAPTULO 3.

SEGURANA NO SISTEMA OPERACIONAL ANDROID ..... 42

3.1

INTRODUO .................................................................................... 42

3.2

PERMISSO POR APLICAO ......................................................... 42

3.3

VULNERABILIDADES NO ARMAZENAMENTO DE INFORMAES 47

3.4

PROTEO DOS DADOS NO ANDROID .......................................... 48

3.5

3.4.1

Bloqueio de Tela ....................................................................... 48

3.4.2

Criptografia de Dados................................................................ 50

SEGURANA NA TRANSMISSO DE INFORMAES ................... 51


3.5.1

Autenticao no protocolo SSL/TLS .......................................... 52

3.5.2

Transmisso dos Dados ............................................................ 52

3.6

AMEAAS NA TRANSMISSO DE DADOS ...................................... 53

3.7

MALWARE .......................................................................................... 53

CAPTULO 4.

FORENSE DIGITAL NO ANDROID ....................................... 55

4.1

INTRODUO .................................................................................... 55

4.2

TIPOS DE INVESTIGAO ................................................................ 56

4.3

AMBIENTE DE TESTES ..................................................................... 57

4.4

PRESERVANDO O ESTADO DO DISPOSITIVEL MVEL ................ 59

4.5

4.6

4.4.1

Passando pelo Bloqueio de Tela ............................................... 59

4.4.2

Isolando o Dispositivo Mvel da Rede ...................................... 62

4.4.3

Conhecendo o Dispositivo ......................................................... 64

EXTRAINDO INFORMAES DO DISPOSITIVO.............................. 64


4.5.1

Extrao Via Software ............................................................... 64

4.5.2

Extrao Via Hardware.............................................................. 66

ANLISE DAS INFORMAES OBTIDAS ........................................ 66


4.6.1

Ferramentas e Tcnicas de Anlise de Dados .......................... 66

4.6.2

Anlise Forense das Parties SDCard e eMMC ...................... 69

4.6.3

Anlise Forense no Sistema de Arquivos YAFFS2 ................... 72

CAPTULO 5.

ESTUDO DE CASO ............................................................... 73

5.1

INTRODUO .................................................................................... 73

5.2

METODOLOGIA DE ANLISE PROPOSTA ....................................... 73

5.3

5.2.1

O Malware Zitmo ....................................................................... 75

5.2.2

Identificao do Malware ........................................................... 75

5.2.3

Engenharia Reversa e Anlise do Arquivo APK ........................ 77

CONCLUSO ..................................................................................... 80

CAPTULO 6.
6.1

CONCLUSO ........................................................................ 81

TRABALHOS FUTUROS .................................................................... 81

REFERENCIAS ................................................................................................ 83

LISTA DE TABELAS
Tabela 1 Vendas de Smartphones por SO no mundo (em milhares de
unidades).......................................................................................................... 19
Tabela 2 Distribuio das verses do Android .............................................. 21
Tabela 3 Comparao entre os tamanhos dos arquivos JAR e DEX ............ 24
Tabela 4 Data de disponibilizao do Android SDK ...................................... 24
Tabela 5 Localizao dos arquivos criados pelo AVD ................................... 27
Tabela 6 Estrutura do diretrio /data/data/<ApplicationPackageName> ....... 33
Tabela 7 Nveis de log ................................................................................... 37
Tabela 8 Opes de comando de linha do logcat ......................................... 38
Tabela 9 Tcnicas para isolar um dispositivo mvel da rede ........................ 63
Tabela 10 Parties e sistemas de arquivos ................................................. 67

LISTA DE FIGURAS
Figura 1 Assinantes da telefonia celular por ano no mundo. ......................... 14
Figura 2 Viso da arquitetura do SO Android ................................................ 19
Figura 3 Relao entre verso do Android em aparelhos em uso................. 21
Figura 4 - Java vs Dalvik .................................................................................. 23
Figura 5 AVD em execuo........................................................................... 26
Figura 6 Estrutura de diretrios criados pelo AVD ........................................ 27
Figura 7 Instalao do Android ADB Tools.................................................... 28
Figura 8 Ativao do modo de depurao no Android .................................. 29
Figura 9 Comando adb devices ..................................................................... 29
Figura 10 Comando adb shell ....................................................................... 30
Figura 11 Listagem do diretrio shared_prefs do aplicativo Phone ............... 33
Figura 12 Arquivo XML do tipo chave-valor................................................... 34
Figura 13 Listagem do diretrio data/data ..................................................... 34
Figura 14 Sada do comando dmesg ............................................................ 36
Figura 15 Sada do comando logcat .............................................................. 37
Figura 16 Sada do comando dumpsys ......................................................... 39
Figura 17 Sada do comando dumpstate ...................................................... 40
Figura 18 Listagem do diretrio do app Dropbox .......................................... 41
Figura 19 Visualizao do arquivo de logs do app Dropbox ......................... 41
Figura 20 Instalao dos Apps Google Maps e Gmail respectivamente ....... 44
Figura 21 Visualizao da permisso de acesso no Manifest.xml ................ 44
Figura 22 Restrio de acesso no Manifest.xml ............................................ 46
Figura 23 Aviso do Android sobre fontes desconhecidas .............................. 47
Figura 24 Tela de configurao de bloqueio do Android ............................... 49
Figura 25 Bloqueio de tela por cdigo pin, desenho de padro e senha
alfanumrica respectivamente.......................................................................... 49
Figura 26 Tela de opo para criptografar os dados do dispositivo .............. 50
Figura 27 Criptografia dos dados: telas de aviso e confirmao
respectivamente ............................................................................................... 51
Figura 28 Exemplo de configurao de conexo SSL/TLS ........................... 53
Figura 29 Foto mostrando a marca do pattern desenhado. .......................... 60

Figura 30 Sada do comando lsub................................................................. 64


Figura 31 Extrao de dados via adb pull sem acesso de root ..................... 65
Figura 32 Extrao de dados via adb pull como root .................................... 65
Figura 33 Sada do comando mount ............................................................. 67
Figura 34 Sada do comando strings sobre uma base SQLite ...................... 68
Figura 35 Visualizao de uma base SQLite no hexeditor ............................ 69
Figura 36 Visualizao das tabelas de uma base SQLite ............................. 69
Figura 37 Opo Mover para o carto de memria ....................................... 70
Figura 38 Listagem do diretrio /mnt ............................................................. 71
Figura 39 Diagrama de identificao e anlise de malware .......................... 74
Figura 40 Instalao do APP Trusteer Rapport ............................................. 76
Figura 41 Visualizao dos processos em execuo .................................... 76
Figura 42 Extrao do arquivo apk do app suspeito ..................................... 77
Figura 43 Analise do trfego de rede do AVD pelo software Wireshark ........ 77
Figura 44 Visualizao do contedo do apk do app Zitmo ............................ 77
Figura 45 Execuo da ferramenta APKTools .............................................. 78
Figura 46 Execuo da ferramenta dex2jar................................................... 79
Figura 47 Visualizao do cdigo do Zitmo no JD-GUI ................................. 79

LISTA DE SIGLAS E ABREVIAES


ADB

Android Debug Bridge

API

Application Programing Interface

APP

Application Software

AVD

Android Virtual Device

DVM

Dalvik Virtual Machine

DiD

Defense in Depth

GC

Garbage Collection

GPL

GNU Public License

GPS

Global Positioning System

GSM

Global System for Mobile

HTML

HyperText Markup Language

IDE

Integrated Development Environment

JVM

Java Virtual Machine

MMC

MultiMedia Card

MMS

Multimedia Messaging Service

NDK

Native Code Development

PC

Personal Computer

RAM

Random Access Memory

SDK

Software Development Kit

SIM

Subscriber Identity Module

SMS

Short Message Service

SO

Sistema Operacional

SQL

Structured Query Language

SSL

Security Sockets Layer

TLS

Transport Layer Security

VM

Virtual Machine

UI

User Interface

USB

Universal Serial BUS

XML

Extensible Markup Language

YAFFS2

Yet Another Flash File System

14

CAPTULO 1.

INTRODUO

1.1 INTRODUO
No mundo da telefonia pode-se dizer que os dez ltimos anos foram da
telefonia celular. O nmero de assinantes de telefones mveis no mundo inteiro
aumentou de 738 milhes em 2000 para quase seis bilhes em 2011, como
mostra o grfico da figura 1, e agora o nmero de assinantes da telefonia
celular ultrapassa o nmero de linhas telefnicas convencionais (ITU Statistics,
2011).

Assinantes de telefonia celular


7.000.000.000

Nmero de Assinantes

6.000.000.000
5.000.000.000
4.000.000.000
3.000.000.000

Assinantes

2.000.000.000
1.000.000.000
0

Ano
Figura 1 Assinantes da telefonia celular por ano no mundo.
Fonte: (ITC Statistics, 2013).

Somente no Brasil, em agosto 2013, o nmero de assinantes de telefonia


mvel totalizava 268.4 milhes (Anatel, 2013), uma mdia de 135.45 celulares
para cada 100 habitantes. Com o advento de laptops, palmtops, PDAs e mais
recentemente dos smartphones, a promessa de acesso desimpedido Internet
global, a qualquer hora, a qualquer lugar (internet ubqua) j uma realidade
por meio de equipamentos leves e totalmente portteis. (Redes de
Computadores e a Internet, 2010).

15

Dentre esses dispositivos mveis, hoje, a maior parte deles vem com o sistema
operacional Android, do Google, instalado. E a cada nova verso, o sistema
adiciona novas funcionalidades para tirar proveito do hardware dos
dispositivos, que aumenta o poder de processamento a cada poucos meses. O
ultimo smartphone oficial do Google, Nexus 4, por exemplo, tem 2GB de
memria RAM integrada, processador quad-core de 1,5GHz e 16GB de
armazenamento interno. Isso somado a itens como: cmera, acelermetro,
GPS e suporte a conexes de rede sem fio, fazem do dispositivo muito mais do
que um celular, mas sim uma enorme fonte de informaes onde seus usurios
podem armazenar no apenas contatos telefnicos, mas tambm documentos
importantes atravs de servio de cloud computing, traar rotas com o servio
de GPS e publicar fotos de viagens famlia e outros.
Neste cenrio, a comunidade forense se depara com um grande desafio j que
as tcnicas de extrao de dados, j consolidadas para os desktops, no
funcionam para dispositivos com hardware especfico para o Android. Numa
anlise forense, medida que o nvel de compreenso sobre o sistema
operacional e seu hardware aumentam, novas tcnicas de manuseio e
extrao de informaes relevantes so desenvolvidas. Assim, um profundo
conhecimento do sistema operacional Android, onde as informaes nele so
salvas e quais informaes buscar, pode trazer dados muito teis e at
decisivos sobre o seu usurio.
1.2 OBJETIVO
O objetivo da pesquisa apresentar mtodos de percia forense para
dispositivos mveis com sistema operacional Android.
1.3 MOTIVAO
Descrever tcnicas de anlise forense em dispositivos mveis com Android. As
tcnicas de percia forense para desktops j so bastante difundidas e sua
aplicao a smartphones e tablets requer tcnicas diferentes. A extrao dos
dados ser feita de forma a obter todas as informaes possveis do
equipamento.

16

1.4 JUSTIFICATIVA
Nos ltimos 4 anos houve um aumento substancial no nmero de dispositivos
mveis com Android, a tal ponto que este se tornou a plataforma mvel mais
utilizada do mercado.
1.5 TRABALHOS RELEVANTES
A tese de mestrado Proposta de Mtodo para Anlise Pericial em Smatphone
com Sistema Operacional Android, de Andr Morum de Lima Simo publicada
em 2011 serviu como guia para este trabalho, nela so abordadas as
dificuldades tcnicas para a extrao de dados de smartphones Android alm
da proposta de uma metodologia para realizar essa recuperao de
informaes, onde so abordadas situaes reais encontradas pelos analistas
forenses.
O artigo publicado pela Digital Investigation, Android anti-forensics through a
local paradigma, publicado em 2010 por Alessandro Distefano, Gianluigi Mea e
Francesco Pace, onde algumas tcnicas para dificultar o acesso s
informaes dos dispositivos Android so apresentadas.
Android Forensics: Simplifying Cell Phone Examinations, artigo publicado pela
Edith Cowan University, de autoria de Jeff Lessard e Gary Kessler, publicado
em 2010, onde mais tcnicas para obteno de dados so apresentadas e
utilizadas de forma complementar neste trabalho.
1.6 METODOLOGIA DE PESQUISA
Para o desenvolvimento desta pesquisa optou-se, para uma primeira parte, por
uma pesquisa bibliogrfica sobre a plataforma Android.
1.7 ORGANIZAO DO TRABALHO
A pesquisa foi dividida em 6 (seis) captulos.
O captulo 1 apresenta o problema e a justificativa para o trabalho.
O captulo 2 mostra uma viso sobre o sistema operacional Android. Sua
histria, arquitetura, verses e funcionalidades.

17

O captulo 3 se dedica a mecanismos de segurana no sistema operacional


Android.
O captulo 4 apresenta as tcnicas de percia forense no Android para extrao
e anlise de informaes.
O captulo 5 desenvolve o estudo de caso. Um smartphone propositalmente
infectado com um spyware submetido para anlise utilizando as ferramentas
e tcnicas apresentadas no captulo anterior.
O captulo 6 conclui a pesquisa descrevendo sua relevncia a partir dos
resultados obtidos no estudo de caso e apresentando novos temas para
continuidade do trabalho.

18

CAPTULO 2.

O SISTEMA OPERACIONAL ANDROID

2.1 INTRODUO
O Google planejando entrar no mercado de celulares com seus servios de
internet encontrou-se no impasse de no possuir uma plataforma para isso.
Ento em agosto de 2005 adquiriu a Android Inc. Aps um tempo sem notcias
anunciada, em 2007, a Open Handset Alliance, que coloca o Android
oficialmente no mundo Open Source. Em 2008 a verso 1.0 do SDK lanada,
assim como o primeiro celular com o sistema, o G1 da HTC. Em 2009, com o
lanamento das verses 1.5, 1.6 e 2.x, viu-se uma proliferao de dispositivos
que rodam o sistema. Em 2010, o Android j era o segundo sistema mais
utilizado em smartphones, atrs apenas do ento bem sucedido Blackberry
(Learning Android, 2011).
Quando o Google comprou a Android Inc, em 2005, o CEO na poca, Eric
Schmidt, deixou claro que a ambio do Google era muito maior do que ver o
sistema rodando em um simples telefone. A inteno da empresa e ver o
sistema rodando em todos os lugares e fazendo tudo, como o Google uma
empresa de media, quanto mais pessoas utilizarem os seus produtos, mais
fcil adicionar novos servios e propagandas junto com eles(Learning Android,
2011).
Atualmente o Google licencia alguns aplicativos proprietrios como Gmail e
Maps, e ganha algum dinheiro com o Google Play (Learning Android, 2011).
Desde o primeiro telefone com o sistema, lanado em 2008, at torna-se o SO
para dispositivos mveis mais utilizado, o nmero de usurios do sistema
Android continua a aumentar a cada ano.
A tabela 1 mostra os nmeros de vendas de smatphones a usurios finais por
sistema operacional em 2013. Por ela possvel ver a dominncia do sistema
da Google alm de um crescimento em relao ao ano anterior.

19
Tabela 1 Vendas de Smartphones por SO no mundo (em milhares de unidades)

Sistema
Operacional
Android
iOS
Microsoft
BlackBerry
Bada
Symbian
Outros
Total

Unidades
vendidas em
2013
177,898.2
31,899.7
7,407.6
6,180.0
838.2
630.8
471.7
225,326.2

Participao no
mercado
em
2013 (%)
79.0
14.2
3.3
2.7
0.4
0.3
0.2
100.0

Unidades
vendidas em
2012
98,664.0
28,935.0
4,039.1
7,991.2
4,208.8
9,071.5
153,772.9

Participao
no mercado
em 2012 (%)
64.2
18.8
2.6
5.2
2.7
5.9
0.6
100.0

Fonte: (Gartner, Agosto de 2013).

2.2 A PLATAFORMA
O Android um SO (sistema operacional) construdo especificamente para
dispositivos mveis, ele tem como base o kernel do Linux. Ele inclui interface
grfica rica, aplicaes para o usurio final, bibliotecas, frameworks, suporte
multimdia entre outros. A figura 2 apresenta uma viso da arquitetura do SO.

Figura 2 Viso da arquitetura do SO Android


Fonte: (Android Developers, 2013).

20

Abaixo uma breve descrio de cada camada da arquitetura do sistema:

Kernel: o Android, a partir da verso 4.0.4, utiliza a verso 3.0 do Kernel


do Linux. O Kernel responsvel pelo gerenciamento dos processos, da
memria e do hardware do dispositivo, agindo como uma camada de
abstrao entre hardware e software (Linux Command Line and Shell
Scripting Bible, 2008).

Bibliotecas: escritas em C/C++, fazem parte de todo sistema Linux. No


Android, so invocadas atravs de uma interface Java. Dentre essas
bibliotecas

esto

disponveis

gerenciadores

de

janela

(window

manager), base de dados SQLite, suporte a grficos 2D e 3D entre


outros (Learning Android, 2011).

Ambiente de execuo do Android: a camada de execuo da Dalvik


VM que fornece as aplicaes funcionalidades disponveis na biblioteca
Java (Learning Android).

Framework de aplicaes: aberto e de desenvolvimento colaborativo,


promove a reutilizao de funes entre as aplicaes. A mesma API
(Application Program Interface) disponvel para as aplicaes nativas do
Android est, tambm, disponvel aos desenvolvedores.

Camada de aplicao: conjunto bsico de aplicativos que so


distribudos com a plataforma Android.

Uma caracterstica do Android que fica evidenciada pela figura acima que,
no existe diferena entre aplicaes nativas e as criadas por outros
desenvolvedores, j que os dois tipos utilizam as bibliotecas providas pela
Dalvik VM. Esse fato evidencia que qualquer desenvolvedor pode criar
aplicaes poderosas para o Android.
A tabela 2 e o grfico de pizza da figura 3 so baseados no nmero de
dispositivos com Android que acessaram o Google Play, em um perodo de 14
dias terminando em 4 de Maro de 2013.

21
Tabela 2 Distribuio das verses do Android

Verso

Codenome

Data de Lanamento

Cupcake
Donut
Eclair
Froyo
Gingerbread

9 de fevereiro de
2009
30 de abril de 2009
15 setembro 2009
30 de outubro 2009
20 de maio 2010
6 de dezembro 2010

1.0
1.1
1.5
1.6
2.1
2.2
2.3 2.3.2
2.3.3
2.3.7
3.1
3.2
4.0.3
4.0.4
4.1
4.2
4.3
4.4

API
Level
23 de setembro de 1
2008

Distribuio

2
3
4
7
8
9
10

22 de fevereiro de 12
2011
13
Ice
Cream 19 de outubro de 15
Sandwich
2011
Jelly Beans
9 de julho de 2012
16
Jelly Beans
13 de Novembro de 17
2012
Jelly Beans
24 de Julho de 2013
18
Kit Kat
31 de Outubro de 19
2013

1.7%
26.3%

Honeycomb

0.1%
19.8%
37.3%
12.5%
2.3%

Fonte: (Android Developers, 2013).

Figura 3 Relao entre verso do Android em aparelhos em uso


Fonte: (Android Developers, 2013).

2.3 A MQUINA VIRTUAL DALVIK


A Dalvik uma mquina virtual especialmente projetada para a plataforma
Android. Ela foi desenvolvida por Dan Borntein em parceria com a equipe do
Google. Embora seja possvel desenvolver aplicativos para o Android em

22

qualquer linguagem que compile para o Java bytecode, a linguagem


predominante Java. Vale lembrar que a Dalvik Virtual Machine (DVM) utiliza
uma implementao limitada das bibliotecas padres do Java.
Ao contrrio da Java Virtual Machine (JVM), a Dalvik foi projetada para
dispositivos mveis, assim, restries como memria e durao da bateria,
fizeram parte de sua arquitetura desde o incio.
Um outro motivo para o desenvolvimento da Dalvik foi o fato de que, ao
contrrio da linguagem Java e de suas bibliotecas, a prpria JVM no livre. A
ttulo de curiosidade: existem algumas iniciativas opensource como o openJDK
e o Apache Harmony. Assim, com uma VM livre, os fabricantes de hardware se
sentiriam mais seguros em adotar a plataforma, pois no teriam que se
preocupar com licenas. (Learning Android, 2011)
2.3.1 Comparao entre a Sun JVM e a Dalvik VM
Em Java o processo segue a seguinte ordem: o arquivo contendo o cdigo
fonte escrito, depois ele compilado gerando o arquivo .class contendo os
bytecodes (linguagem compreendida pela JVM) e ento o cdigo interpretado
pela JVM. No caso da Dalvik existe uma etapa a mais aps a compilao do
arquivo contendo o cdigo fonte em .class. Esse .class sofre uma nova
compilao pelo Dalvik Compiler para gerar o arquivo .dex que contm os
bytecodes interpretados pela Dalvik VM. A figura 4 diagrama as fases
envolvidas no processo de compilao pela JVM e pela Dalvik VM (Learning
Android, 2011).

23

Figura 4 - Java vs Dalvik


Fonte: (Learning Android, 2011).

O porqu de no compilar diretamente o cdigo fonte para o Dalvik bytecode


est no fato de que, quando o desenvolvimento da Dalvik comeou, a
linguagem Java ainda sofria muitas mudanas, mas os bytecodes da JVM no,
por isso a equipe da Dalvik achou melhor basear-se nos bytecodes ao invs de
a prpria linguagem Java. Assim, possvel escrever apps para o Android em
qualquer linguagem que compilada para os bytecodes da JVM.
Outra particularidade da DVM o sistema de coleta de lixo (Garbage Collection
- GC). Para cada aplicativo criada uma nova instancia da Dalvik VM, ela
otimizada para esse comportamento, e o sistema de GC tambm. E para evitar
que um processo de GC limpe um objeto compartilhado em memria so
utilizados bits de marcao, que indicam que um objeto alcanvel por outro
processo e no deve ser excludo da memria (Bornstein, 2008).
2.3.2 O formato dex
O formato .dex ocupa cerca de metade do espao em disco que um arquivo
.class, logo, esse formato otimizado para lidar com a pouca memria dos
dispositivos mveis.
O arquivo .class, produto da compilao do cdigo fonte, compilado em um
.dex pela ferramenta dx (Ehringer, 2008).

24
Tabela 3 Comparao entre os tamanhos dos arquivos JAR e DEX

Cdigo
Bibliotecas do
Sistema
App de navegador
web
App de alarme
relgio

Arquivo Jar sem


Compresso(bytes)
21,445,320 (100%)

Arquivo Jar com


Compresso
10,662,048 (50%)

Arquivo DEX sem


compresso
10,311,972 (48%)

470,312 (100%)

232,065 (49%)

209,248 (44%)

119,200 (100%)

61,658 (52%)

53,020 (44%)

Fonte: (Ehringer, 2008).


A formato .dex usa um pool de constantes de tipo especfico como
mecanismo primrio para conservar memria. Ao invs de salvar essas
constantes no arquivo class, elas so buscadas no pool de constantes
referenciada pelo seu ndice no mesmo. Assim as duplicaes existentes no
.class so eliminadas no .dex (Ehringer, 2008, traduo nossa).

2.4 ANDROID SOFTWARE DEVELOPMENT KIT


O Android Software Development Kit (SDK) um conjunto de ferramentas
utilizadas no desenvolvimento de aplicativos para a plataforma. A cada nova
verso do sistema Android lanada, um no conjunto de ferramentas (API Level)
disponibilizado aos desenvolvedores para que eles possam utilizar os novos
recursos que so implementados. A tabela 4 mostra a verso do Android alvo
da API Level e o seu ano de lanamento:
Tabela 4 Data de disponibilizao do Android SDK

Plataforma Android

API Level

Data de Lanamento

4.4

19

31 de Outubro de 2013

4.3.1

18

24 de Julho de 2013

4.2.2

17

11 de Fevereiro de 2013

4.1.2

16

9 de Outubro de 2012

4.0.4

15

29 de Maro de 2012

Fonte: (Learning Android, 2011).

No caso do Android, os apps so disponibilizados atravs do Google Play (visto


em sesso posterior), onde so validados. possvel habilitar o Android para
que seja possvel instalar apps de outras fontes mas um aviso de segurana
ser exibido para alertar o usurio sobre os riscos.

25

2.4.1 Android NDK


A maioria do apps para Android escrita na linguagem Java e posteriormente
executada na mquina virtual Dalvik. Porm, h casos em que, por questes
de performance, a aplicao teria um desempenho melhor se partes dela fosse
escrita em uma linguagem compilada diretamente para cdigo nativo. Para
esses casos existe o NDK (Native Code Development). O NDK permite aos
desenvolvedores escrever cdigo em C/C++ que, dependendo da tarefa
executada, pode resultar em ganho de performance como nos casos do uso
intensivo da CPU para clculos, processamento de sinal e simulao de fsica
(Android Developers, 2013).
O NDK surgiu em Junho de 2009 e teve cinco revises at seu lanamento em
Novembro de 2010. Hoje, o NDK suporta as arquiteturas ARMv5TE e ARMv7-A
e futuramente, atravs de uma parceria entre Google e Intel, suportar a
arquitetura x86 da Intel. Um ponto importante que no possvel criar
aplicaes completas com o NDK, apenas mdulos que sero chamados pela
aplicao principal que executada na Dalvik VM. Seu uso restrito a otimizar
algumas partes da aplicao, inclusive, os mdulos escrito em C/C++ usando o
NDK, so empacotados com o resto da aplicao no arquivo apk (Learning
Android, 2011).
Do ponto de vista da forense e da segurana, a ferramenta de cross-compiling
(compilar um cdigo em uma plataforma tendo como alvo outra) um
importante ponto de estudo, uma vez que seus componentes podem ser
reutilizados. Por exemplo, na verso 1.5 do Android, o root exploit utilizava um
bug no kernel do Linux para ganhar privilgios de super usurio. Este era
distribudo como cdigo fonte e requeria cross-compiling (Android Forensics,
2011).
2.4.2 Android Virtual Devices (AVD)
Junto com o SDK do Android existe um emulador da plataforma, com ele
possvel criar VM de verses diferentes do Android e observar o
comportamento de uma aplicao em cada uma delas.

26

Antes de criar as VM Android para cada verso do SO preciso fazer o


download de cada verso da API. Isso feito no SDK Manager que faz parte
do SDK. Nele so assinaladas as verses do Android com as quais se deseja
trabalhar.
Este emulador tem grande importncia para os desenvolvedores que precisam
validar suas aplicaes com verses especficas do sistema, mas tambm tem
grande valor para a investigao forense no que tange personalizar como a
aplicao executar no sistema.

Figura 5 AVD em execuo


Fonte: O Autor (utilizando o AVD verso para Windows).

Quando um AVD executado, os arquivos criados por ela so de grande valor


para a percia forense e para a rea de pesquisa de segurana. Os arquivos
referentes ao armazenamento interno e SD Card so criados no diretrio do
usurio.

27
Tabela 5 Localizao dos arquivos criados pelo AVD

Sistema
Operacional

Diretrio da AVD

Ubuntu Linux

/Users/<username>/.android

Windows 7

C:\Users\<username>\.android\avd\android422.avd

A estrutura criada pelo AVD como a seguir:


C:.
|
adbkey
|
adbkey.pub
|
adb_usb.ini
|
androidtool.cfg
|
androidwin.cfg
|
ddms.cfg
|
default.keyset
|
modem-nv-ram-5554
|
repositories.cfg
|
sites-settings.cfg
|
+---avd
|
|
Android-422.ini
|
|
|
\---Android-422.avd
|
cache.img
|
config.ini
|
emulator-user.ini
|
hardware-qemu.ini
|
sdcard.img
|
userdata-qemu.img
|
userdata.img
|
\---cache
sdkbin-1_0873bf78-repository-8_xml
sdkbin-1_172100de-addons_list-2_xml
sdkbin-1_2bfc99d2-sys-img_xml
sdkbin-1_9c35fc9e-addon_xml
sdkbin-1_e9f1c86d-sys-img_xml
sdkbin-1_f30bfa4f-addon_xml
sdkbin-1_f9d1c322-sys-img_xml
sdkinf-1_0873bf78-repository-8_xml
sdkinf-1_172100de-addons_list-2_xml
sdkinf-1_2bfc99d2-sys-img_xml
sdkinf-1_9c35fc9e-addon_xml
sdkinf-1_e9f1c86d-sys-img_xml
sdkinf-1_f30bfa4f-addon_xml
sdkinf-1_f9d1c322-sys-img_xml

Figura 6 Estrutura de diretrios criados pelo AVD


Fonte: O Autor (utilizando o prompt de comando do Windows 7).

Os arquivos que interessam a forense so:

sdcard: imagem do carto SD (se criado durante a configurao do


AVD)

userdata.img: imagem da partio /data

cache.img: imagem da partio /cache

As parties representadas pelo cache.img e userdata.img so do formato


YAFFS2 que ainda no suportado pelas ferramentas de analise forense. O

28

sdcard utiliza o formato FAT32 no qual as ferramentas de forense trabalham


muito bem.
possvel aprender muito sobre o SO com a ajuda de um AVD. Como
examinar as conexes de rede, sistema de arquivos e outros artefatos (Android
Forensics, 2011).
2.4.3 Android Debug Bridge - ADB Tools
Uma ferramenta extremamente til para uma percia em dispositivos com
Android o ADB (Android Debug Bridge) Tools. Atravs dela possvel se
comunicar, controlar e acessar a memria interna de um dispositivo Android e,
se o modo root estiver disponvel alm de ver as informaes salvas pelos
aplicativos no diretrio /data/data, que por padro no esto acessveis(Android
Developers, 2013).
No Ubuntu 13.04, a ferramenta pode ser instalada com o comando:
sudo apt-get install android-tools-adb
Figura 7 Instalao do Android ADB Tools
Fonte: O Autor.

O ADB composto de trs componentes:

Cliente: servio ADB cliente em execuo na estao que tentar a


comunicao com o Android.

Servidor: servio ADBD (Android Debug Bridge Daemon) em execuo


tambm na estao que tentar a comunicao com o Android.

Servio (daemon): servio ADBD em execuo no dispositivo Android.

Como descrito acima, o servio ADBD precisa estar em execuo no


dispositivo Android, a figura 8 mostra como feita a inicializao (Android
Developers, 2013):

29

Figura 8 Ativao do modo de depurao no Android


Fonte: O Autor (utilizando o AVD verso para Windows).

O primeiro comando aps conectar o dispositivo Android ao computador via


cabo USB o ADB devices. Esse comando lista todos os dispositivos
conectados ao PC.
luffy@ubuntu:~$ adb devices
List of devices attached
7DF600229FFC0000016395910A01600F device

Figura 9 Comando adb devices


Fonte: O Autor.

A sada do comando acima mostra os identificadores dos dispositivos


conectados no momento.
Para navegar pela estrutura de diretrios da memria interna utilizado o
comando adb shell. Que permite abrir uma shell no dispositivo Android e
interagir com ele, segue exemplo de sua utilizao (Android Forensics, 2011):

30

luffy@ubuntu:~$ adb shell


shell@android:/ $ ll
drwxr-xr-x
root
drwxr-xr-x
root
drwxrwx--system
drwxr-xr-x
root
dr-x-----root
lrwxrwxrwx
root
drwxrwx--x
system
-rw-r--r-root
drwxr-xr-x
root
drwxrwx--drm
drwxrwx--x
system
lrwxrwxrwx
root
-rwxr-x--root
-rwxr-x--root
-rwxr-x--root

root
root
cache
root
root
root
system
root
root
system
system
root
root
root
root

121

125024
39349
10031

2013-10-13 13:50 acct


1969-12-31 21:00 bootimages
2013-10-13 14:53 cache
1969-12-31 21:00 chargerimages
2013-10-13 13:50 config
2013-10-13 13:50 d -> /sys/kernel/debug
2013-10-13 20:28 data
1969-12-31 21:00 default.prop
2013-10-13 13:50 dev
2013-10-13 13:50 drm
2013-10-13 13:50 dvp
2013-10-13 13:50 etc -> /system/etc
1969-12-31 21:00 init
1969-12-31 21:00 init.blackg.rc
1969-12-31 21:00 init.blackg.usb.rc

Figura 10 Comando adb shell


Fonte: O Autor.

As funcionalidades do ADB evoluem a cada verso do Android, algumas delas


so apresentadas neste captulo.
2.5 SISTEMAS DE ARQUIVOS
As informaes que podem ser recuperadas do Android so uma combinao
dos j conhecidos artefatos encontrados no Linux mais outros novos como os
apps que executam sobre a Dalvik VM e o sistema de arquivos YAFFS2 (Yet
Another Flash File System). Nisso, a variedade de informaes que so
armazenadas diretamente pelo usurio do dispositivo mvel, ou pelos apps que
executam no sistema enorme. Exemplos desses dados so: Mensagens de
texto (SMS/MMS), Contatos telefnicos, Logs de chamadas telefnicas,
mensagens de e-mail (Gmail, Yahoo, Exchange), Mensagens instantneas
(Whats app, Facebook Messenger), fotos, vdeos, histrico de navegao,
coordenadas GPS, histrico de buscas, rotas de direo, arquivos diversos,
msicas, eventos de calendrio, informaes financeiras, informaes pessoais
salvas por clientes de redes sociais(Facebook, Twitter) e etc (Android
Forensics, 2011).
2.5.1 FAT32
O formato FAT32, muito conhecido pelas parties dos sistemas da Microsoft,
utilizado como sistemas de arquivos no Android para os seus cartes de
memria e eMMC (MultiMediaCard). Existem algumas razes para o sistema
de arquivos da partio do usurio ser diferente da utilizada pelo Android, uma
delas a compatibilidade com outros sistemas operacionais. Sistemas

31

Windows da Microsoft, distribuies Linux e o MAC OS X trabalham bem com


esse sistema de arquivos (Android Forensics, 2011).
No Linux parties FAT32 so chamadas de VFAT e se tratando do Android
existem trs lugares que usam esse sistema de arquivos (Android Forensics,
2011):

/mnt/sdcard

/mnt/secure/asec

/mnt/emmc

A partio /mnt/secure/asec criptografada pois nela podem ser gravados os


apps do sistema. Quando a funcionalidade de armazenar um app no SDCard
foi introduzida ao Android adotaram esta soluo de encriptao porque as
permisses dos arquivos no so mantidas no FAT32, e isso implica na
possibilidade de acessar os dados da aplicao (Android Forensics, 2011).
A partio SDCard a partio do usurio. Contm geralmente fotos, vdeos,
arquivos baixados, arquivos temporrios e dados de navegao do Google
Maps.
A partio /mnt/emmc uma parte da memria interna formatada com o
sistema de arquivos FAT32. Alguns dispositivos no tem suporte a cartes de
memria, como o Google Nexus 4 por exemplo. Ento contam com uma
memria interna de maior capacidade e a dividem entre sistema operacional,
aplicativos e dados do usurio.
2.5.2 YAFFS2
O YAFFS2 (Yet Another Flash File System) um sistema de arquivos
opensource desenvolvido especialmente para memrias flash NAND licenciado
sob a GPL (GNU Plublic License). Sendo um sistema desenvolvido para
memrias flash, algumas das importantes caractersticas que o YAFFS2 possui
so (Android Forensics, 2011):

Sistema de arquivos de log estruturado (preveno contra interrupo de


energia)

32

Correo de erros

Capacidade para lidar com setores defeituosos

Rpido e utiliza pouco da memria RAM

Como o seu uso limitado ao SO Android, no existem ferramentas


(comerciais ou opensource) que suportem esse sistema de arquivos.
Uma particularidade das memrias do tipo NAND flash que, quando um
arquivo atualizado sua verso anterior no imediatamente apagada porque
a memria no permite reescrita (primeiro preciso apagar todos os blocos de
memria como num processo de preparao), assim, enquanto no for
executado o garbage collector, o arquivo permanecer num diretrio oculto e
ser possvel recuper-lo, apenas no ser apresentado pelo sistema (Android
Forensics, 2011).
2.5.3 Parties do Sistema de Arquivos
O sistema de arquivos do Android dividido em trs partes principais:

A partio do sistema /system/: onde ficam as aplicaes prinstaladas, bibliotecas, Linux kernel, Android framework e etc.

A partio SDCard /sdcard/: que uma partio livre, onde todos os


aplicativos podem gravar dados e ler dela, bastando ter a permisso
WRITE_TO_EXTERNAL_STORANGE.

A partio de dados do usurio /data/: onde podem estar aplicaes,


arquivos do usurio como msicas, vdeos e documentos. Para um
perito, um dos diretrios mais importantes desta partio o
(/data/data/), onde ficam as bases de dados das aplicaes. Neste
diretrio as aplicaes so separadas pelo nome do pacote e passam
ter a estrutura descrita na tabela abaixo (Learning Android, 2011):

33
Tabela 6 Estrutura do diretrio /data/data/<ApplicationPackageName>

Nome do diretrio

Descrio do contedo

shared_prefs

Dados compartilhados da aplicao

lib

Bibliotecas requeridas pela aplicao

files

Arquivos salvos pelo desenvolvedor

cache

Arquivos de cache da aplicao. Como os utilizados


pelos navegadores web

databases

Banco de dados SQLite

Fonte: (Android Forensics, 2011).

Na tabela 6 esto listados os diretrios principais que todo App passa a ter
aps a sua instalao.
2.5.4 Formas de Persistncia de Dados
O Android prov aos desenvolvedores cinco formas de armazenar informao:

Preferencias compartilhadas

Armazenamento interno

Armazenamento externo

SQLite

Network

Preferencia Compartilhadas permitem o desenvolvedor armazenar um par


chave-valor de tipos primitivos (boolean, float, int, long e cadeias de caracteres
- strings) em um formato simplificado do XML (Android Forensics, 2011).
shell@android:/ # ll /data/data/com.android.phone/shared_prefs/
-rw-rw---- radio
radio
139 2013-10-12 09:26 PrefCallDuration.xml
-rw-rw---- radio
radio
126 2013-10-11 20:36 _has_set_default_values.xml
-rw-rw---- radio
radio
135 2013-10-11 20:36 com.android.phone_preferences.xml
-rw-rw---- radio
radio
827 2013-10-11 20:36 featureset.xml
-rw-rw---- radio
radio
230 2013-10-11 20:37 siminfo.xml
-rw-rw---- radio
radio
482 2013-10-11 20:37 telephony.xml

Figura 11 Listagem do diretrio shared_prefs do aplicativo Phone


Fonte: O Autor (utilizando o Android ABD Tools para Linux Ubuntu).

A figura 11 mostra a listagem do diretrio shared_prefs do app Phone, nativo


do prprio Android. Nos arquivos XML possvel ver o sistema de chave-valor
adotado:

34
shell@android:/ #
android.phone_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="sim_iccid_value_key">89550311000182749434</string>
</map>
android.phone_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
Figura
12 name="sim_iccid_value_key">89550311000182749434</string>
Arquivo XML do tipo chave-valor
<string
</map>
Fonte:
O Autor.

<

<

O Armazenamento Interno feito no subdiretrio de cada app na partio


/data/data e nele pode ser salvo arquivo de qualquer tipo. Por questes de
segurana, abordada em um captulo posterior, o Android, por padro, apenas
permite que a prpria aplicao acesse seus dados, a seguir uma amostra dos
primeiros resultados da listagem deste diretrio em um LG Optimus Black
(P970) (Android Forensics, 2011):
shell@android:/ # ll /data/data/
drwxr-x--x app_87
app_87
2013-10-12
drwxr-x--x app_88
app_88
2013-10-12
drwxr-x--x app_76
app_76
2013-10-12
drwxr-x--x app_36
app_36
2013-10-11
drwxr-x--x app_4
app_4
2013-10-11
drwxr-x--x app_5
app_5
2013-10-13
drwxr-x--x app_27
app_27
2013-10-11
drwxr-x--x app_7
app_7
2013-10-11
drwxr-x--x app_9
app_9
2013-10-11
drwxr-x--x app_28
app_28
2013-10-11
drwxr-x--x app_11
app_11
2013-10-11
drwxr-x--x app_12
app_12
2013-10-11
drwxr-x--x app_2
app_2
2013-10-11
drwxr-x--x app_13
app_13
2013-10-11

02:09
02:09
01:54
20:36
20:35
00:34
20:37
20:35
20:37
20:37
20:35
20:37
20:37
20:37

br.com.jr3
ch.smalltech.ledflashlight.free
com.adobe.reader
com.android.LGSetupWizard
com.android.backupconfirm
com.android.bluetooth
com.android.browser
com.android.calculator2
com.android.calendar
com.android.cellbroadcastreceiver
com.android.certinstaller
com.android.chrome
com.android.contacts
com.android.defcontainer

Figura 13 Listagem do diretrio data/data


Fonte: O Autor (utilizando o Android ABD Tools para Linux Ubuntu).

O Armazenamento Externo trata dos dados que so salvos no SD Card do


dispositivo mvel. Por se tratar de um carto removvel, as restries de
segurana so menos severas, por padro, no preciso permisso para
acessar os arquivos do carto de memria. O formato do sistema de arquivos
o FAT32 por ser um sistema j bastante difundido e facilitar a transferncia de
dados do carto para outro meio ou dispositivo (Android Forensics, 2011).
Alm das informaes salvas pelo prprio desenvolvedor do app, o Kernel do
Linux e o Android armazenam um registro de logs das atividades das
aplicaes e do prprio sistema operacional (Android Forensics, 2011).
O SQLite uma forma de fazer consultas a dados utilizando a linguagem SQL
mas em um arquivo local. Toda a base SQLite tratada como um nico
arquivo. Ele de grande utilidade para os desenvolvedores de aplicativos
armazenarem informaes de maneira estruturada localmente sem precisar

35

recorrer aos tradicionais RDBMS. Em geral, os bancos SQLite so


armazenados no diretrio do aplicativo que o utiliza /data/data/<app name>,
mas no existe ,de fato, uma restrio que obrigue o desenvolvedor a cria-lo
neste local (Android Forensics, 2011).
Poucos apps utilizam este recurso, mas Armazenamento na Rede (Network)
est disponvel via API do SDK do Android. Se uma conexo com a internet
est disponvel, o app pode armazenar seus dados em um servio web (SQLite
Documentation, 2013).
Em termos de desenvolvimento, para adicionar a capacidade de comunicao
a uma rede ao aplicativo Android, o desenvolvedor de fazer uso das classes
dos pacotes seguir:

java.net.*

android.net.*

Como referenciado na documentao, esses pacotes oferecem API de baixo


nvel para interagir com redes, web services e outros (Android Forensics,
2011).
2.6 LOGS DO SISTEMA E DAS APLICAES
Arquivos de logs e depurao so dois mtodos muito utilizados por
desenvolvedores para manter o controle de suas aplicaes e tornar sua
manuteno mais efetiva. Os arquivos de logs guardam informaes sobre as
atividades das aplicaes enquanto executam e, embora nem sempre,
possvel extrair informaes muito uteis destes arquivos. Para analista forenses
e especialistas em segurana possvel obter informaes importantes de um
dispositivo Android, analisando os arquivos de logs e depurao dos aplicativos
e do prprio sistema (Android Forensics, 2011).
2.6.1 Log do Kernel do Linux
O Kernel do Linux controla todo o hardware e software de um computador,
alocando memria quando necessrio e executando aplicativos quando
solicitado. Tambm funo do Kernel prover uma API de baixo nvel para o

36

acesso ao hardware de um computador pelas aplicaes do sistema. As quatro


responsabilidades primrias do Kernel Linux so (Linux Command Line and
Shell Script Bible, 2008):

Gerenciar a memoria do sistema

Gerenciar as aplicaes do sistema

Gerenciar o hardware do dispositivo

Gerenciar o sistema de arquivos

Sendo o Kernel o centro de todas as atividades de um dispositivo, sua


capacidade de registrar eventos chaves altamente desenvolvida. Os logs do
Kernel so acessveis em um sistema Linux e tambm no Android pelo
comando dmesg. A seguir uma amostra das atividades registrada em log pelo
Kernel do Linux (Android Forensics, 2011):
127|shell@android:/ # dmesg
0:42.960] [wm9093.c] func:[wm9093_configure_path()], line:(1249), mode( 0)
<4>[13:10:13 13:50:42.976] [wm9093.c] func:[wm9093_configure_path()], line:(1249), mode(
0)
<6>[13:10:13 13:50:42.976] voice_configure_path(at twl4030).....path = 0, cur_twl_mode =
0
<4>[13:10:13 13:50:42.976] [wm9093.c] func:[wm9093_configure_path()], line:(1249), mode(
0)
<4>[13:10:13 13:50:42.976] [wm9093.c] func:[wm9093_configure_path()], line:(1249), mode(
0)
<4>[13:10:13 13:50:44.546] STA connect received 1
<4>[13:10:13 13:50:45.992] [BATTERY] +++ vol:4028, chr:1, muic:8, temp:280, cap:85
<4>[13:10:13 13:50:45.992] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:45.992] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:45.992] [BATTERY] +++ vol:4028, chr:1, muic:8, temp:279, cap:85
<4>[13:10:13 13:50:46.000] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:46.140] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:47.976] [wm9093.c] func:[wm9093_configure_path()], line:(1249), mode(
0)
<7>[13:10:13 13:50:52.039] wlan0: no IPv6 routers present
<4>[13:10:13 13:50:56.025] [BATTERY] +++ vol:4033, chr:1, muic:8, temp:281, cap:85
<4>[13:10:13 13:50:56.025] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:56.025] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:56.025] [BATTERY] +++ vol:4033, chr:1, muic:8, temp:281, cap:85
<4>[13:10:13 13:50:56.033] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:56.049] [BATTER] cap:85 , muic:8
<4>[13:10:13 13:50:58.150] [bd2802_store_led_onoff] value = 0
<4>[13:10:13 13:50:58.158] LED OFF

Figura 14 Sada do comando dmesg


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

Como pode ser visto na figura 14, as informaes registradas no LG Optimus


Black (P970) so bastante detalhadas e de baixo nvel, como a capacidade
momentnea da bateria.

37

logcat
Uma ferramenta bastante til para anlise das atividades do Android logcat.
Com ela possvel visualizar os logs de atividades num fluxo constante, uma
pequena amostra das informaes providas pela ferramenta pode ser vista a
seguir (Android Forensics, 2011):
ahoog@ubuntu:~$ adb shell logcat
I/HtcLocationService( 308): agent - search location by name: oak park, country:
united states, state: illinois
I/HtcLocationService( 308): agent - no location was found, total: 0
D/AutoSetting( 308): service - CALLBACK - onGetTimeZoneOffset, result: failed,
zoneId: , offset: 0
D/LocationManager( 308): removeUpdates: listener =
com.htc.htclocationservice.HtcLocationServiceAgent$7@45dfc770
V/AlarmManager( 97): Adding Alarm{463aea28 type 2 com.google.android.location}
Jan 05 05:05:25 pm
I/HtcLocationService( 308): agent - send current location notify intent, name:
Oak Park, state: Illinois, country: United States, lat: 41.8786, lng:
-87.6359,tzid:

Figura 15 Sada do comando logcat


Fonte: (Android Forensics, 2011).

Nesta sada, exibida na figura 15, possvel obter informaes como longitude
e latitude, informaes de data e hora e detalhes dos apps em execuo. Cada
linha de log comea com uma letra que descreve seu nvel. A tabela abaixo
mostra a relao entre as letras e os nveis de log:
Tabela 7 Nveis de log

Nvel de Log
V
D
I
W
E
F
S

Descrio
Verboso
Debug
Informao
Aviso
Erro
Fatal
Silent

Fonte (Android Forensics, 2011).

A ferramenta logcat tambm suporta alguns parmetros de linha de comando


que filtram e auxiliam a obteno de logs especficos. O parmetro b, por
exemplo, faz a filtragem do log principal de acordo com o filtro passado depois
dele. possvel utilizar outros filtros ou mesmo fazer um dump do arquivo de
log naquele momento. A tabela 8 mostra os comandos e opes que podem
ser utilizados com o logcat:

38
Tabela 8 Opes de comando de linha do logcat

Opo
-b <buffer
-c
-d
-f <filename>
-g
-n <count>
-r <kbytes>
-s
-v <format>

Descrio
Carrega um buffer alternativo para visualizao de
logs de evento e radio.
Limpa e descarrega todo o log.
Faz o dump do log no instante atual
Escreve a sada do log no arquivo passado como
parmetro. O padro o prompt
Imprime o tamanho do log
Configura o nmero mximo de mudana do log.
Muda o buffer de log a cada <kbytes>
Configura o filtro padro para silente
Configura o formato da sada do log. O padro o
formato brief.

Fonte: (Android Developers, 2013).

Combinado o logcat com os comandos da tabela acima pode fornecer


informaes importantes como:

Momento de ocorrncia dos eventos

Endereo IP do celular, rede e informaes de localizao

Tipo de encode utilizado nas mensagens SMS

dumpsys
Outra ferramenta de anlise de logs a dumpsys. Com ela possvel obter
informaes a cerca de servios em execuo, utilizao da memria e outros
detalhes do sistema. A figura 16 mostra a sada (editada por questes de
espao) do comando dumpsys executada em um LG Optimus Black (P970)
com a verso 4.0.4 do Android (Android Forensics, 2011):

39
luffy@ubuntu:~$ adb shell dumpsys
Currently running services:
Bridges
SUPL_SERVICE
SurfaceFlinger
WifiExtHMService
accessibility
account
------------------------------------------------------------------------------DUMP OF SERVICE accessibility:
------------------------------------------------------------------------------DUMP OF SERVICE account:
Accounts: 4
Account {name=Phone, type=com.lge.sync}
Account {name=valdemirvjr@gmail.com, type=com.facebook.auth.login}
Account {name=valdemirvjr@gmail.com, type=com.dropbox.android.account}
Account {name=valdemirvjr@gmail.com, type=com.google}
Active Sessions: 0
** MEMINFO in pid 1716 [com.gtp.nextlauncher.liverpaper.honeycomb] **
Shared Private
Heap
Heap
Heap
Pss
Dirty
Dirty
Size
Alloc
Free
------------------------------Native
1900
1296
1852
16812
14599
248
Dalvik
2758
11460
2364
13447
10078
3369
Cursor
0
0
0
Ashmem
2
4
0
Other dev
10321
376
780
.so mmap
670
2148
416
.jar mmap
0
0
0
.apk mmap
0
0
0
.ttf mmap
0
0
0
.dex mmap
176
0
0
Other mmap
221
8
28
Unknown
6758
4532
6604
TOTAL
22806
19824
12044
30259
24677
3617

Figura 16 Sada do comando dumpsys


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

A sada de log acima revela informaes importantes como:

Servios em execuo

Dump de cada servio

Informaes como memoria, ID e database de cada processo

O que til para determinar no apenas qual servio est executando mas
tambm qual database ele usa.
dumpstate
O comando de debug dumpstate combina partes dos comandos apresentados
com informaes do sistema. A sintaxe e a sada (editada por questes de
espao) do comando executado em um LG Optimus Black (P970) com a
verso 4.0.4 do Android so apresentadas na figura 17:

40
shell@android:/ # dumpstate
========================================================
== dumpstate: 2013-10-13 20:45:20
========================================================
Build: IMM76L.P970h30a-SCA-XXX.4DAB73BC
Bootloader: unknown
Radio: unknown
Network: TIM 11
Kernel: Linux version 3.0.8 (elisandro.vidotto@openos-ubuntu) (gcc version 4.4.1
(Sourcery G++ Lite 2010q1-202) ) #1 PREEMPT Fri Mar 8 19:45:35 BRT 2013
Command line: rs=s mem=512M init=/init videoout=omap24xxvout
omap_vout.video1_numbuffers=6 omap_vout.vid1_static_vrfb_alloc=y vram=16M
omapfb.vram=0:5M lpj=2334720 fuelgauge=g androidboot.hardware=blackg muic_state=0
thermal_fakemode=0 CRC=0x8dd118f7
------ UPTIME (uptime) -----up time: 06:55:22, idle time: 06:25:10, sleep time: 00:00:00
[uptime: 0.1s elapsed]
------ MEMORY INFO (/proc/meminfo) -----MemTotal:
447856 kB
MemFree:
11760 kB
Buffers:
2372 kB
Cached:
60876 kB
SwapCached:
0 kB
Active:
317140 kB
Inactive:
32636 kB
Active(anon):
289284 kB
Inactive(anon):
360 kB
Active(file):
27856 kB
Inactive(file):
32276 kB
------ CPU INFO (top -n 1 -d 1 -m 30 -t) ------

Figura 17 Sada do comando dumpstate


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

O comando precisa ser executado ser executado como root, caso contrrio
no mostrar todas as sadas possveis. A sada do comando dividida em
vrias sesses, como registro de atividades das aplicaes, informaes sobre
o dispositivo, rede, kernel e outros.
2.6.2 Logs dos Apps
Alm dos logs gerados pelo Kernel do Linux e pelo prprio Android, os
desenvolvedores de aplicativos tambm costumam adicionar a suas aplicaes
a capacidade de gerar os seus prprios arquivos de logs. Esses arquivos so
bastante teis quando h necessidade de obter informaes sobre um app
especfico.
Um dos servios de armazenamento de dados em uma plataforma de Cloud
Computing mais utilizados Dropbox. A estrutura de seu diretrio
apresentada na figura 18:

41
ahoog@ubuntu:~/htc-inc/data/data$ tree com.dropbox.android/
com.dropbox.android/
databases
db.db
files
log.txt
lib
shared_prefs
DropboxAccountPrefs.xml

Figura 18 Listagem do diretrio do app Dropbox


Fonte: (Android Forensics, 2011).

possvel ver a existncia do arquivo log.txt abaixo do diretrio files.


Visualizando o contedo do arquivo tem-se:
ahoog@ubuntu:~/com.dropbox.android$ cat ./files/log.txt
5 1296055108427 com.dropbox.android.provider.DatabaseHelper Creating new Dropbox
database.
4 1296055108459 com.dropbox.android.DropboxApplication Not authenticated, so
authenticating
4 1296055108466 com.dropbox.android.DropboxApplication No stored login token.
4 1296055108702 com.dropbox.android.DropboxApplication Not authenticated, so
authenticating
4 1296055108704 com.dropbox.android.DropboxApplication No stored login token.
4 1296055108704 com.dropbox.android.activity.SimpleDropboxBrowser Didn't
authenticate, redirecting to login
4 1296055108713 com.dropbox.android.DropboxApplication Not authenticated, so
authenticating
4 1296055108714 com.dropbox.android.DropboxApplication No stored login token.
4 1296055134550 com.dropbox.android.DropboxApplication Authenticating username:
book@viaforensics.com
4 1296055136507 com.dropbox.android.DropboxApplication Successfully
authenticated
6 1296055137501 com.dropbox.android.activity.LoginActivity Dismissed nonexistent
dialog
Figura
19box
Visualizao do arquivo de logs do app Dropbox
4 1296055137525
com.dropbox.android.activity.LoginOrNewAcctActivity
Successful
Fonte:
(Android
Forensics,
2011).
account login
4 1296055137549 com.dropbox.android.activity.delegate.MenuDelegate Successful
Login

A partir do seu contedo possvel concluir que houve uma tentativa bem
sucedida de autenticao e pelo resto do log (no mostrado acima), possvel
ver que o servio foi interrompido por uma chamada telefnica (Android
Forensics, 2011).
2.7 GOOGLE PLAY
O Google Play nasceu da unificao entre Google Music, Google Books Store
e o Android Marketplace. Este ltimo, tinha o objetivo de prover um canal
seguro para os usurios do sistema instalarem seus aplicativos (Learning
Android, 2011).
O Google Play (Android Marketplace) em si um aplicativo. Por ele possvel
obter informaes e atualizaes dos aplicativos. O Google tornou o processo
de publicao de apps bastante simples. Para disponibilizar um aplicativo no
Google Play, sendo uma empresa ou desenvolvedor autnomo, preciso: criar
uma conta de desenvolvedor no Google, pagar uma taxa e concordar com os
termos de servio (Hashimi, Komatineni, 2010).

42

CAPTULO 3.

SEGURANA NO SISTEMA OPERACIONAL ANDROID

3.1 INTRODUO
Nas iteraes entre aplicaes clientes e servidoras a segurana no fica
restrita apenas a rede como configurao de firewall, deteco de intrusos,
antivrus e outros. Os desenvolvedores de aplicativos tambm devem tomar
todas as medidas para tornar os seus aplicativos seguros na transmisso e
armazenamento local de informaes de seus usurios (Applications Security
for the Android Platform Processes, 2012).
A arquitetura do Android j promove um modelo de segurana mais forte do
que o convencional (que atribui a aplicao o mesmo nvel de acesso do
usurio que a instalou) e, no campo da anlise forense, conhecer os
mecanismos de segurana existentes e os que precisam ser implementados,
bem como os mtodos para burlar esses bloqueios so de grande
importncia para a obteno de dados e posterior anlise.
3.2 PERMISSO POR APLICAO
Nos sistemas operacionais para desktops as aplicaes executam sob a conta
do usurio que as iniciou, e recebe o mesmo nvel de acesso daquela conta de
usurio. Outra caracterstica que todos os aplicativos executados por uma
conta de usurio tem o mesmo nvel de acesso as APIs do sistema, assim um
editor de texto e um aplicativo de mensagens instantneas tero o mesmo nvel
de acesso a uma conexo internet porque executam sob o mesmo UID. Se o
usurio tem acesso total ao sistema, seus aplicativos tambm o tero. Esta a
principal caractersticas dos SOs para desktops: aplicativos recebem o mesmo
nvel de acesso ao sistema que o usurio que os executou (Applications
Security for the Android Platform Processes, 2012).
No Android, visando segurana do usurio a modelo de permisses
diferente. Antes de uma aplicao ser instalada verificada a assinatura digital
do desenvolvedor que, diferente do SSL, no precisa de uma Autoridade
Certificadora, mas o desenvolvedor precisa manter a chave segura,
principalmente nos casos de apps bancrios. Nesses casos, se chave fosse
publicada, um update do aplicativo, feito por uma pessoa mal intencionada e de

43

posse da chave, poderia comprometer os dados do usurio (Android


Forensics).
Em seguida, o arquivo .apk validado e o arquivo que especifica quais os
acessos que aplicao precisa (contatos telefnicos, mensagens SMS,
conexo internet e outros) verificado e apresentado ao usurio que deve
aprovar cada uma das solicitaes, caso contrrio o aplicativo no instalado.
A diferena no modelo de segurana do Android est em que, aps a
instalao do App, atribudo um usurio e grupo Linux nico para a aplicao
e esta executa em seu prprio processo e instncia da Dalvik VM (que
otimizada para este comportamento). Esse modelo assegura o no
compartilhamento de memria, permisses e dados gravados em disco. Assim,
as aplicaes acessam apenas os dados e memria de sua prpria Dalvik VM
(Android Forensics, 2011).
No caso de aplicaes de um mesmo desenvolvedor que precisam
compartilhar informaes (Facebook e Facebook Messenger, por exemplo)
este modelo pode ser alterado. O desenvolvedor pode assinar os dois
aplicativos com a mesma assinatura. Neste caso, o processo, a instncia da
Dalvik VM, a memria e as informaes salvas sero compartilhadas entre os
aplicativos (Android Forensics, 2011).

44

Figura 20 Instalao dos Apps Google Maps e Gmail respectivamente


Fonte: (Android Developers, 2013).

A vantagem do modelo de permisso do Android sobre os dektops fica


evidente no caso de um ataque a um app do sistema, pois nesse caso o
atacante apenas poderia fazer o que o app tem permisso para fazer, diferente
do caso de um ataque a um browser de um sistema desktop onde o atacante
teria todos os privilgios do usurio que iniciou o ataque (Applications Security
for the Android Platform Processes, 2012).
Claro, a maioria dos usurios no l a requisio de acesso que app faz e
aprova tudo o que pedido, ainda mais se for um jogo. Por isso grande parte
dos malwares existentes para Android se aproveitam deste ponto fraco, o
usurio, para conseguir diversas permisses.
Todas as permisses que uma aplicao precisa devem ser especificadas no
arquivo Manifest.xml. Por exemplo, uma aplicao que precise monitorar as
mensagens SMS recebidas o faria desta forma:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.app.myapp" >
<uses-permission android:name="android.permission.RECEIVE_SMS" />
...
</manifest>
Figura 21 Visualizao da permisso de acesso no Manifest.xml
Fonte: (Android Developers, 2013).

45

O Android possui uma srie de Strings para permisses do sistema (todas


comeam com android.permission, alm das que podem ser criadas pelo
prprio desenvolvedor), no momento da instalao o arquivo Manifest.xml
lido e uma lista de requisies gerada e apresentada ao usurio, se o usurio
recusar uma, todo o processo de instalao falha (Android Developer, 2013).
O sistema de permisses do Android dividido em quatro categorias
principais:

O grupo Normal compreende as permisses que no precisam da


interveno do usurio para serem atribudas ao app.

As do grupo Dangerous so as que representam algum tipo de risco ao


usurio e ao sistema em si, como acesso a internet e dados pessoais do
usurio. Estes permisses so explicitamente solicitadas ao usurio no
momento da instalao do app.

A categoria de permisso Signature um modo de identificar o autor do


cdigo, verificar se o app foi alterado e estabelecer a confiana entre os
aplicativos. Um certificado digital gerado e o app assinado com ele,
desta forma dois apps com o mesmo certificado digital podem
compartilhar informaes de forma segura, e no h necessidade de
interveno do usurio para autorizar o acesso de um app ao outro.

SignatureOrSystem que se diferencia da Signature pela permisso ser


adicionada ao Android. Este modo utilizado por fabricantes para
permitir que apps desenvolvidos por diferentes empresas trabalhem em
conjunto com o fabricante. Este tipo de permisso no recomendada
(Applications Security for the Android Platform Processes, 2011).

Caso um app fornea algum tipo de servio a outros apps e o desenvolvedor


deseje restringir o acesso e este servio, ele precisa declara esta permisso no
Manifest.xml desta forma:

46

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.me.app.myapp" >
<permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY"
android:label="@string/permlab_deadlyActivity"
android:description="@string/permdesc_deadlyActivity"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous" />
...
</manifest>
Figura 22 Restrio de acesso no Manifest.xml
Fonte: (Android Developers, 2013).

O bloco de XML acima define a permisso DEADLY_ACTIVITY como


pertencente

ao

pacote

com.me.app.myapp.permission.

atributo

protectionLevel foi configurado como DANGEROUS que o tipo de permisso


apropriada (Application Security for the Android Platform Processes, 2012).
O resultado de todas essas barreiras que o Android possui um sistema
seguro para isolar as informaes de seus aplicativos e no h uma maneira
simples para os analistas forenses extrarem as informaes (Android
Forensics, 2011).
Por ultimo, os usurios do Android tem a opo de instalar apps de fontes que
no o Google Play. Essa opo pode ser acessada pelo menu de opes da
aplicao nas configuraes do sistema (Android Forensics, 2011).

47

Figura 23 Aviso do Android sobre fontes desconhecidas


Fonte: O Autor (utilizando o AVD verso para Windows).

Aps assinalar a opo para permitir a instalao de apps de outras fontes, o


Android exibe um aviso sobre os riscos envolvidos na operao como na figura
anterior. Instalar Apps de uma fonte que no seja o Google Play faz com que o
Android pule a etapa de validao da assinatura digital (Android Forensics,
2011).
3.3 VULNERABILIDADES NO ARMAZENAMENTO DE INFORMAES
Os apps podem trocar informaes ente eles, e com as APIs de acesso
possvel dizer quais informaes podem ser acessadas. Assim aceitvel
esperar que todo o trfego de informaes ocorra pelos canais controlados
pelo

sistema

mas

existem

outras

formas

de

acessar

informaes

sensveis(Applications Security for the Android Platform Processes, 2011).


Algumas informaes so armazenadas na memria interna do dispositivo,
estes dispositivos frequentemente oferecem suporte para cartes de memria
onde tambm possvel instalar apps. Esses meios de armazenamento podem
ser acessados de um PC bastando retir-los do dispositivo e plugar no

48

computador(o acesso memria interna do aparelho tambm simples), e


assim ter acesso s informaes de um determinado app sem que o controle
de segurana do sistema interfira.

Outra forma de acessar a informao

desejada conseguir acesso de root (tarefa no muito difcil). Esse modo prov
acesso irrestrito ao sistema e a memria.
Com base no exposto acima, seguir o Princpio do Privilgio Mnimo
(armazenando apenas as informaes necessrias para o funcionamento do
app), configurando as permisses corretamente (assim outros apps no tero
acesso as informaes em tempo de execuo do sistema), e criptografando
os dados (em caso de acesso off line as informaes, o atacante no poder
fazer nada) so conhecido como Defense in Depth (DiD) (Applications Security
for the Android Platform Processes, 2011).
3.4 PROTEO DOS DADOS NO ANDROID
Como foi visto antes, cada app no Android executa sob sua prpria conta de
usurio. Isto evita que uma aplicao tenha acesso s informaes de outra.
Esta proteo oferecida pelo sistema geralmente no suficiente, de modo que,
as informao de autenticao de um app de sistema bancrio, que esto
armazenadas, precisam estar criptografadas para oferecer uma proteo
adicional.
3.4.1 Bloqueio de Tela
O Android oferece algumas protees bsicas contra o acesso no autorizado
as informaes do sistema, a primeira barreira o bloqueio de tela. O sistema
oferece algumas opes para isso como: reconhecimento facial, desenho de
um padro, cdigo PIN (cdigo numrico de4 dgitos) ou senha alfanumrica. A
segurana aumenta nesta ordem.

49

Figura 24 Tela de configurao de bloqueio do Android


Fonte: (ghacks, 2012).

Figura 25 Bloqueio de tela por cdigo pin, desenho de padro e senha alfanumrica
respectivamente.
Fonte: O Autor (utilizando o AVD verso para Windows).

Pela figura 25 vemos que o cdigo pin se trata de uma combinao numrica
de quatro nmeros (de 0 a 9) que podem se repetir, em um total de 10.000
combinaes possveis, um bloqueio muito fraco. O pattern lock se trata de
desenho onde possvel uma combinao de at nove posies, sendo que

50

cada elemento da combinao pode aparecer apenas uma vez na sequncia.


O que gera um total de 9! combinaes possveis, ou 362 880 combinaes,
algo no muito difcil de ser quebrado com um computador de mesa. Logo, o
mtodo mais efetivo para bloqueio de tela a senha alfanumrica.
3.4.2 Criptografia de Dados
Caso as informaes contidas no dispositivo sejam muito sensveis possvel
criptograf-los. possvel criptografar contas de usurio, configuraes, apps,
arquivos de media ou qualquer outro tipo de arquivo, uma vez que os dados
sejam criptografados no ser possvel acess-los sem entrar com a chave de
criptografia, que solicitada toda vez que o Android ligado.

Figura 26 Tela de opo para criptografar os dados do dispositivo


Fonte: (ghacks, 2012).

51

Um dos riscos envolvidos nesta operao o fato dela ser irreversvel, assim
se o processo for interrompido na metade ou por falta de bateria ou porque o
usurio mudou de ideia os dados sero perdidos.

Figura 27 Criptografia dos dados: telas de aviso e confirmao respectivamente


Fonte: (ghacks, 2012).

Assim que o processo terminar, ser solicitada a senha utilizada na operao.


3.5 SEGURANA NA TRANSMISSO DE INFORMAES
No item anterior foi abordada a segurana dos dados no prprio dispositivo,
neste tpico ser discutida a segurana dos dados transmitidos pela rede para
outras partes como uma aplicao servidora com quem frequentemente um
app do Android interage. Os dois princpios bsicos a considerar quando uma
informao transmitida de um sistema a outro so: Autenticao e
Confidencialidade. A Autenticao serve para assegurar que a parte que ir
receber os dados quem realmente diz ser. J a confidencialidade trata de
prevenir que uma terceira entidade intercepte os dados transmitidos
(Applications Security for the Android Platform Processes, 2011).

52

O padro utilizado pela indstria para o transporte de dados de maneira segura


pela Internet o SSL (Secure Sockets Layer) e TLS (Transport Layer Secure).
Esses protocolos foram desenvolvidos para proteger os dados transportados e
permitir que o cliente autentique o servidor com quem ele conversa. A maioria
das aplicaes exige que o login e senha do usurio sejam enviados a cada
requisio e, mesmo que seja por um canal criptografado, esta no a melhor
soluo. A classe AccountManager permite que a aplicao envie um token
junto com as requisies, este token muda periodicamente o que passa a ser
uma forma mais segura de autenticao (Applications Security for the Android
Platform Processes, 2012).
3.5.1 Autenticao no protocolo SSL/TLS
O objetivo do protocolo SSL permitir que o cliente verifique a autenticidade do
servidor com o qual se comunica. Uma aplicao cliente no pode apenas
confiar no IP (hostname) que requisita e esperar que o servidor que atenda
seja verdadeiro pois existem tcnicas para desviar uma chamada de um
hostname para outro. Para contornar essa situao, o SSL/TSL usa uma chave
de criptografia assimtrica para promover a autenticao. No primeiro passo, o
servidor envia o seu certificado digital ao cliente, neste certificado esto o nome
do servidor e da autoridade certificadora (CA). O cliente prossegue com a
validao do certificado e aps esta gerado pelo cliente um nmero aleatrio
que criptografado pelo cliente com a chave publica descrita no certificado
digital e enviada ao servidor durante o handshake. A partir deste momento a
comunicao entre as duas partes ocorre usando este nmero como chave
simtrica de criptografia para as informaes transitadas. Para a validao dos
certificados o Android possui uma lista de autoridades certificadoras e iniciar
uma comunicao segura com uma delas exige muito pouca codificao
(Applications Security for the Android Platform Processes, 2012).
3.5.2 Transmisso dos Dados
O Android possui uma configurao para conexes SSL/TLS bastando fazer a
chamada openConnection() da classe HttpsUrlConnection como mostrado na
figura 28:

53

URL url = new URL("https://clientaccess.example.com");


HttpsURLConnection urlConn = (HttpsURLConnection)url.openConnection();

ou
HttpsURLConnection urlConn = new HttpsURLConnection("https://clientaccess.example.com");

Figura 28 Exemplo de configurao de conexo SSL/TLS


Fonte (Applications Security for the Android Platform Processes, 2012).

Aps obter a conexo segura com o servidor possvel examinar algumas


informaes sobre ela atravs de alguns mtodos uteis da classe
HttpsURLConnection como:

getCypherSuite() que retorna o algoritmo criptogrfico utilizado na


conexo. Pode ser usado para medir a segurana da conexo.

getServerCertificates() que retorna um vetor com todos os certificados


fornecidos pelo servidor. Permite ao desenvolvedor checar a validade
destes junto a um CA (que o Android reconhece).
3.6 AMEAAS NA TRANSMISSO DE DADOS

Aplicaes Web precisam de muito cuidado com os dados enviados a elas pois
aceitar dados que no fazem parte do conjunto esperado configura uma brecha
de segurana e pode trazer diversos danos aplicao servidora, como SQL
injection, cross-site scripting attacks e explorao de buffer overflow, por
exemplo. Aplicaes cliente como as do Android no suscetveis a estas falhas
mas no esto imunes a elas.

Assim, um dos princpios de um

desenvolvimento seguro validar os dados fornecidos pela aplicao e


enviados a ela, pois um App que esta sujeito a receber informaes de fontes
externas pode acabar sendo manipulado por um atacante (Applications
Security for the Android Platform Processes, 2012).
3.7 MALWARE
Os malwares que tem como alvo o SO Android so similares e ao mesmo
tempo muito diferentes dos malwares que atacam o Windows. Desde o seu
lanamento em 2008, o Android vem crescendo rapidamente como uma
plataforma open source para smartphones, com rpido aumento no poder de
processamento e memria alm da adio de componentes como cmera,

54

internet e GPS. Com isso, era apenas uma questo de tempo para que os
hackers dirigissem sua ateno para esses dispositivos(Android Malware
Exposed, 2012).
Outra razo para atacar smartphones Android que o fato dos usurios terem
mais informaes pessoais salvas nele do que em um PC. Quando um usurio
se autentica no servio de e-mail ou no Facebook atravs do smartphone ele
no precisar mais repetir o processo porque sua senha est salva no
dispositivo. Essa funcionalidade conveniente no apenas para os usurios
mas tambm para os hackers que estaro atrs desta informao (Android
Malware Exposed, 2012).
O primeiro malware para Android foi descoberto em 2010, desde ento a
empresa de segurana Webroot j identificou mais de 13000 exemplos de
malware para o Android. Sendo o Android desenvolvido sobre o kernel do
Linux, ele cria um usurio e grupo Linux para cada aplicao, como j
explicado, a fim de impedir o acesso dos dados de uma aplicao por outra.
Sendo assim, a forma de uma aplicao ter acesso s informaes de login do
usurio no Facebook ou ao servio de SMS do dispositivo se o usurio
permitir no momento da instalao, e nesse iterao com o usurio que a
maior parte dos malwares ataca (Android Malware Exposed, 2012).

55

CAPTULO 4.
FORENSE DIGITAL NO ANDROID
4.1 INTRODUO
A plataforma mvel Android cresceu rapidamente desde o lanamento, em
Outubro de 2008, at torna-se o sistema operacional mvel mais popular no
inicio de 2011. Contudo, os analistas forenses e engenheiros de segurana tm
lutado contra a falta de ferramentas e tcnicas para investigar os dispositivos
com esse sistema (Android Forensics, 2011). Existem tcnicas e abordagens
muito bem documentadas e difundidas para telefones celulares e desktops,
mas essas tcnicas no se aplicam em sua totalidade quando associadas a
exames de smatphones, uma vez que nesses dispositivos, as solues de
hardware e software so minimalistas e o sistema operacional possui suporte
utilizao de memrias internas cuja remoo ou espelhamento so
procedimentos considerados invasivos e com maior grau de complexidade,
devido s dificuldades de acesso direto ao hardware. Alm disso, os
dispositivos possuem caractersticas especficas para cada verso e fabricante
do hardware (Aquisio de Evidncias Digitais em Smatphones Android, 2011).

Conforme a capacidade de armazenamento de dados dos dispositivos


aumentou, a quantidade de informaes salvas neles tambm aumentou e,
muito dessa informao interessa a organizaes criminais que promovem
ataques a plataforma com o intuito de obter as informaes pessoais de seus
usurios e empresas. Solucionar este impasse requer um profundo
entendimento da plataforma, no s dos desenvolvedores do sistema ou dos
fabricantes mas, tambm, dos desenvolvedores de apps e das agncias de
segurana. Apps mais seguros junto com politicas de segurana mais fortes
iro prevenir a perda ou roubo de dados sensveis de seus usurios (Android
Forensics, 2011).
Isso mostra a necessidade da forense no Android. A maioria das pessoas est
sempre muito prxima de sues smatphones, mesmo quando esto dormindo. O
dispositivo armazena tanto informaes pessoais como corporativas salvas na
forma de mensagens de texto, e-mails, localizao de GPS, imagens, vdeos e
outros. E h uma tendncia das pessoas serem mais honestas com o prprio

56

dispositivo do que com outras pessoas. Simplesmente por acreditarem que ele
seguro (Android Forensics, 2011).
Mesmo o Android sendo lembrado pelos smartphones e tablets, atualmente
existem vrios dispositivos que rodam o sistema ou iro faz-lo em um futuro
prximo. E tanto a forense de dispositivos mveis como do prprio Android tem
diversos desafios: na forense digital um princpio fundamental prevenir
qualquer modificao no dispositivo pelo examinador. Isso simples em discos
rgidos que podem ser desligados, conectados a outro equipamento e ento
fazer uma imagem do mesmo. Mas no caso dos smartphones qualquer iterao
com o dispositivo ir alter-lo de alguma forma e, nesse caso, os examinadores
devero explicar como ele foi modificado e por que. Este captulo apresenta
tcnicas forenses para aquisio de dados de dispositivos com Android.
4.2 TIPOS DE INVESTIGAO
A primeira situao a julgada num tribunal criminal. Nesta situao existem
algumas consideraes:

Cadeia de custodia

Detalhamento e relatrio final

Possvel validao dos resultados usando ferramentas diferentes

Fato ou opinio baseada em testemunha

Outra situao a das investigaes corporativas. Elas tambm podem acabar


sendo julgadas em um tribunal mas frequentemente so utilizadas para
determinar a causa raiz de um problema (como um sistema, ataque externo ou
empregado interno - o que pode resultar em uma ao contra o empregado).
As reas mais comuns nas investigaes internas corporativas so:

Propriedade intelectual e roubo de dados

Uso inadequado dos recursos da empresa

Ataque ou tentativa bem sucedida contra os sistemas da empresa

Investigaes sobre um empregado, incluindo a discriminao, assdio


sexual, etc.

Auditoria de segurana

Existe a situao envolvendo relaes familiares:

57

Divorcio

Custdia de crianas

Disputa de propriedades

A ultima situao se refere a segurana governamental, onde a pericia forense


pode exercer um papel chave. Governos so os maiores empregadores nos
pases, chegando a vrios milhes em pases como o Brasil.
Alm das questes relacionadas aos empregados, governos so alvos de
ataques e roubo de dados por criminosos e governos estrangeiros. A percia
forense pode ajudar na investigao dos ataques bem sucedidos e na
prestao de informaes valiosas para a frustao de futuros ataques
(traduo nossa).
4.3 AMBIENTE DE TESTES
Os experimentos desta pesquisa utilizam ferramenta e scripts do mundo Unix,
assim, ser utilizando a distribuio Linux Ubuntu 13.04 64 bit para Desktop.
Como j mencionado nesta pesquisa, para a anlise forense, necessrio que
as configuraes do dispositivo mvel que ser analisado sejam mantidas
intactas, ou na pior hiptese, sejam modificadas ao mnimo possvel e que essa
modificao seja devidamente justificada. Com base nisso, importante que o
SO utilizado tenha a funo automount desabilitada. No Ubuntu esta opo
feita por usurio e pode ser modificada atravs do gconf com o comando
gconf-editor

executado

no

terminal.

Navegando

at

opo

apps>nautilus>preference e desmarcando as opes media_automount e


media_automount_open.
O principio bsico da investigao forense evitar qualquer modificao do
dispositivo alvo. Em muitos casos isso invivel. Nos caso de um computador
Desktop que est desligado, o perito vai simplesmente documentar o
computador, remover o disco rgido, conect-lo a um write blocker e obter
uma imagem bit-a-bit do disco. Nessa investigao o dispositivo original
permanece intacto. Continuando nos computadores Desktops, no caso do
equipamento estar ligado a situao comea a complicar: qualquer iterao
como desliga-lo ir modificar o dispositivo de alguma forma. Simplesmente

58

desligar o computador modifica o contedo de sua memria RAM, conexes de


rede abertas e outras informaes sero perdidas.
No caso de dispositivos mveis impossvel realizar uma anlise forense sem
modifica-lo. Ao contrrio de desktops e notebooks, dispositivos Android
possuem partes de armazenamento que no podem ser facilmente removidas.
E iteraes simples como ligar, desligar e recolocar a bateria modificam o
dispositivo.
Na primeira vez que os celulares apareceram nas investigaes, havia uma
pequena quantidade de dados armazenada que podia ser extrada deles.
Muitos investigadores usavam tcnicas tradicionais como uma permisso para
obter os dados de chamadas telefnicas na operadora de celular. Era possvel
tambm remover o subscriber identity module (SIM) card de telefones GSM e
extrair algumas informaes dele. Conforme os celulares foram evoluindo,
chegando ao categoria de smartphones, e consequentemente sua capacidade
de armazenamento, houve uma diviso entre os peritos sobre quais tcnicas
utilizar durante a analise: os que defendiam a continuidade do uso da tcnicas
tradicionais (com pequeno impacto no dispositivo e consequente menor
aquisio de informao) e os que defendiam uma analise mais completa mas
que ocasiona mudanas no dispositivo (Android Forensics, 2011).
A Association of Chief Police Officers (ACPO) do Reino Unido estabelece um
guia (Good Pratice for Computer-Based-Eletronic Evidence) com quatro
princpios que So listado abaixo(ACPO, 2013, traduo nossa):
1. Nenhuma ao realizada por policiais ou seus agentes deve modificar os
dados em um computador ou media de armazenamento que podem,
posteriormente, serem pedidos em um tribunal.
2. No caso em que um examinador julga necessrio acessar os dados
originais de um computador ou media de armazenamento, esse
examinador deve ser competente para faz-lo e capaz de explicar a
relevncia e implicaes de suas aes.
3. Um rastreamento da auditoria ou outra forma de registro de todos os
processos de anlise aplicados a um computador para obter evidncia
deve ser criado e preservado. Uma terceira parte independente deve ser

59

capaz de examinar os processos e arquivos e chegar a mesma


concluso.
4. A pessoa encarregada da investigao tem a responsabilidade de
garantir que a lei e esses princpios sero respeitados.

4.4 PRESERVANDO O ESTADO DO DISPOSITIVEL MVEL


No caso de dispositivos mveis, que so relativamente novos, no existe ainda
um protocolo de aes que devem ser tomadas para preservar o estado
original do aparelho, uma das premissas da percia forense. O que existe hoje
uma tendncia a partir diretamente para a anlise dos dados, o que
frequentemente resulta em alterao das informaes e potencial risco de
perd-las. O que segue so alguns procedimentos para garantir a segurana
das informaes contidas no dispositivo mvel (Android Forensics, 2011).
4.4.1 Passando pelo Bloqueio de Tela
Bloqueio de tela um recurso de segurana muito popular no Android graas a
uma conscientizao sobre a importncia da segurana das informaes,
especialmente nas empresas. Porm, nos casos em que o dispositivo mvel
obtido ligado, alguns procedimentos devem ser tomados antes que a tela seja
bloqueada e um eventual pass code precise ser reinserido.
1. Aumentar o tempo de espera da tela, para o mximo possvel, para
evitar o bloqueio da mesma. O modo de acessar a opo pode variar
conforme a verso do Android. Na verso 4 do Android ela acessada
atravs das opes Lock Screen Setting -> Lock Timer.
2. Habilitar a depurao por USB e a opo Stay Awake. Estas podem
ser encontradas em Settings -> Developer Options. Depurao USB
para possibilitar a extrao de dados e a opo Stay Awake para evitar
que a tela seja bloqueada enquanto o dispositivo recarregado.
Lembrando que estas so alteraes da configurao original do aparelho e
que, por isso, devem ser devidamente documentadas e explicadas.

60

No caso dos dispositivos que so obtidos desligados ou com a tela bloqueada


necessrio passar pelo modo de proteo que esteja ativado, a seguir so
listadas as principais tcnicas para desbloqueio da tela do Android.
Smudge Attack
No captulo 4, Segurana no Sistema Operacional Android, foram apresentadas
algumas formas de bloqueio de tela para dispositivos mveis Android. Uma
delas era o desenho de um padro (Draw pattern). Uma forma de passar por
este bloqueio conhecido como Smudge Attack, um estudo realizado pelo
Departamento de Computao e Cincia da Informao da Universidade da
Pensilvnia, que consiste em fotografar a tela do dispositivo touch screen
(Smudge Attacks on Smartphone Touch Screens, 2011).

Figura 29 Foto mostrando a marca do pattern desenhado.


Fonte (Smudge Attacks on Smartphone Touch Screens, 2011)

O estudo diz que a superfcie de tela touch screen limpa do dispositivo no


totalmente reflexiva, e que uma manchada (pelo uso) no totalmente difusa.
Essa mancha muitas vezes corresponde ao pattern desenhado pelo usurio

61

para desbloquear o aparelho. Assim, no experimento, algumas fotos foram


tiradas da tela do dispositivo quando uma fonte de luz era posicionada em um
ngulo no exatamente complementar e o resultado foi a visualizao da
mancha que corresponde ao padro desenhado para o desbloqueio da tela
(Android Forensics, 2011).
Modo de Recuperao
O modo de recuperao comumente utilizado por usurio que instalam ROMs
customizadas (verses do sistema Android diferentes da originalmente
instalada no aparelho) que habilitam o root por meio da instalao de uma
partio modificada de recuperao. Esse modo faz com que o bloqueio de tela
seja desabilitado e permite montar suas parties em modo somente leitura.
Iniciar o Android em modo de recuperao varia conforme o fabricante do
hardware do dispositivo, no LG P970, por exemplo, isso feito pressionando o
boto de volume para cima e pressionando o boto para liga-lo. Caso a
conexo via ADB e o smudge attack falhem, se o dispositivo executa uma ROM
modificada do Android, o modo de recuperao deve ser considerado, e este
s funciona se for um modo modificado por uma ROM customizada instalada
(Android Forensics, 2011).
Gravar Uma Nova Partio de Recuperao
Ferramentas como a Fastboot permitem gravar uma partio modificada de
modo de recuperao, e o no precisam que o modo de depurao USB esteja
habilitado para isso. Uma vez instalada esta partio modificada, possvel ter
acesso aos dados do usurio. A restrio fica por conta da proteo sobre o
modo bootloader (necessrio para instalar a partio modificada) que alguns
fabricantes mantem habilitada. Como no modo de recuperao, o iniciar o
dispositivo em bootloader varia conforme o fabricante. Este uma ferramenta
extremamente til mas que modifica o estado do aparelho. Este tipo de
interveno deve devidamente justificada e ser executada por uma pessoa que
saiba o que est fazendo, pois h risco de perda de informaes (Android
Forensics, 2011).

62

Desabilitar o Bloqueio por Meio do Google Play


Se a senha e o login da conta Google do usurio do dispositivo mvel forem
conhecidas, possvel instalar um App no aparelho e atravs dele desabilitar o
bloqueio de tela. No artigo Android Lock Screen Bypass, de Thomas Canon,
essa tcnica descrita atravs da possibilidade de instalar App no Android pelo
Google Play. A tcnica consiste em instalar dois APPs no dispositivo, o
segundo vai servir para dispara uma trigger que iniciar o primeiro, este,
atravs da chamada disableKeyguard() da API do Android far o desbloqueio
da tela (Android Lock Screen ByPass, 2011).
Login da Conta Google
Se o analista estiver em posse do usurio e senha da conta Google vinculada
ao dispositivo Android possvel desbloquear a tela, pois aps certo nmero
de tentativas mal sucedidas, o sistema oferece a opo de desbloqueio pelo
login da conta Google do usurio. Caso o analista no tenha esse login mas
tenha um mandato judicial para obt-lo, possvel fazer uma requisio ao
Google e apagar a senha da conta. O risco desta operao fica por conta da
necessidade do dispositivo se conectar a rede para atualiza a senha e acabar
exposto a um ataque de rede, onde possvel executar aes no dispositivo
bastando o envio de uma mensagem.
4.4.2 Isolando o Dispositivo Mvel da Rede
Se o dispositivo no estiver com bloqueio de tela ou aps este ser desabilitado,
a primeira ao a ser tomada isolar o dispositivo da rede, caso contrrio um
ataque aos dados do aparelho pode ser iniciado por uma simples mensagem
SMS do atacante. O modo mais simples de isolar o equipamento da rede
coloca-lo no Modo Avio (Airplane mode). Isso pode ser feito pressionado o
boto de ligar e selecionado a opo modo avio (Android Forensics, 2011):

Caso no seja possvel ativar o modo avio por caso do bloqueio do aparelho,
por exemplo, e caso esse seja um telefone GSM, possvel remover o chip do
aparelho se isso tambm no for possvel, suspender a conta (nmero

63

telefone) diretamente na operadora tambm uma opo. A ultima alternativa


colocar o dispositivo mvel dentro de uma Gaiola de Faradey, mas nesse
caso existem vrias implicaes como o rpido consumo de bateria, j que o
dispositivo tentar insistentemente reestabelecer suas conexes. A tabela 9
mostra as vantagens e desvantagens de cada mtodo (Android Forensics,
2011):
Tabela 9 Tcnicas para isolar um dispositivo mvel da rede

Mtodo
Vantagens
Colocar o dispositivo O dispositivo continua
mvel em modo avio.
executando e mantem
intactas as informaes
na
memria
voltil.
Desabilita as conexes
do dispositivo mvel
como
wi-fi,
3G,
bluetooth.
Remover o carto SIM.
Fcil de remover. Efetivo
em
desabilitar
transmisses de voz,
SMS e dados.
Suspender a conta com Efetivo em desabilitar
a operadora.
transmisses de voz,
SMS e dados.
Colocar o dispositivo Interrompe todas
dentro de uma gaiola de conexes de rede.
faraday.

Desligar o dispositivo

Interrompe todas
conexes de rede.

Desvantagens
Modifica
as
configuraes
do
aparelho.
Funciona
apenas se o analista
tiver acesso total ao
dispositivo.

No
desabilita wi-fi,
bluetooth e outras redes.
Funciona apenas com
telefones GSM.
Requer tempo (mandato
judicial). No desabilita
wi-fi, bluetooth e outras
redes.
as Rpido consumo da
bateria em funo das
retentativas
de
restabelecer
as
conexes, por parte do
aparelho. No possvel
inserir um cabo de
energia na bolsa.
as Modifica a memria
voltil do dispositivo.
Pode habilitar o bloqueio
de
tela
na
reinicializao.

Fonte (Android Forensics, 2011).

No caso da Gaiola de Faraday, o ideal seria uma sala com o mesmo tipo de
proteo contra redes externas onde haveria como fornecer cabo alimentao
ao dispositivo, mas os custos para construir e manter uma sala dessas so
muito altos (Android Forensics, 2011).

64

Por ultimo, se o dispositivo for encontrado desligado, convm inicia-lo no modo


de recuperao para ver as suas conexes, se o modo de depurao est
ativado e verificar se possui acesso de root (Android Forensics, 2011).
4.4.3 Conhecendo o Dispositivo
Como ultimo cuidado para preservar o estado do aparelho durante os
processos de dumping de memria e anlise, fundamental saber com o que
se est trabalhando. A iterao com o sistema Android varia conforme o
fabricante do hardware do aparelho, assim, um comando bastante til neste
sentido o lsusb, que listar as informaes referentes ao software instalado e
fabricante do hardware. A figura 30 apresenta a sada do comando (Android
Forensics, 2011):
luffy@ubuntu:~$ sudo lsusb -v
Bus 002 Device 004: ID 1004:61a6 LG
Device Descriptor:
bLength
18
bDescriptorType
1
bcdUSB
2.00
bDeviceClass
239
bDeviceSubClass
2
bDeviceProtocol
1
bMaxPacketSize0
64
idVendor
0x1004
idProduct
0x61a6
bcdDevice
2.16
iManufacturer
2
iProduct
3
iSerial
4
bNumConfigurations
1

Electronics, Inc.

Miscellaneous Device
?
Interface Association
LG Electronics, Inc.
LGE
LG Android
7DF600229FFC0000016395910A01600F

Figura 30 Sada do comando lsub


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

4.5 EXTRAINDO INFORMAES DO DISPOSITIVO


Extrao de dados o primeiro procedimento a ser feito pelos analistas
forenses, depois dos cuidados para preservar o estado original do dispositivo.
4.5.1 Extrao Via Software
Essa geralmente a primeira tcnica utilizada pelos analistas forenses, porque
alm de simples, na maioria dos casos fornece informao suficiente para
encerrar uma acusao. O nico requisito que o modo de depurao USB
esteja habilitado. No necessrio acesso de root, embora algumas partes da
memria interna necessitem desse tipo de permisso para serem acessveis.

65

ADB Pull
O comando adb pull copia recursivamente uma parte desejada do sistemas de
arquivos. Porm, como j dito, as partes mais importantes do sistema de
arquivo so visveis apenas ao root. Mas, mesmo sem acesso de super usurio
possvel extrair informaes relevantes da memria interna e do SDCard. A
figura 31 mostra um exemplo de tentativa de obter o contedo do diretrio
/data, que est visvel apenas acesso root, com um shell de usurio comum
(Android Forensics, 2011):
luffy@ubuntu:~$ adb pull /data data/
pull: building file list...
0 files pulled. 0 files skipped

Figura 31 Extrao de dados via adb pull sem acesso de root


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

Como no h permisso suficiente o comando simplesmente no copia os


arquivos.
Para executar o comando com acesso de root necessrio reiniciar o ADB em
modo root com o comando adb root. Agora uma tentativa de extrair em um
dispositivo com root resulta na sada:
luffy@ubuntu:~$ adb pull data/ data/
// varios outros arquivos
pull: data/backup/processed -> data/backup/processed
pull: data/backup/ancestral -> data/backup/ancestral
pull: data/LostFound/Vesta -> data/LostFound/Vesta
pull: data/LostFound/Interamnia -> data/LostFound/Interamnia
pull: data/LostFound/Hygiea -> data/LostFound/Hygiea
pull: data/LostFound/Europa -> data/LostFound/Europa
pull: data/LostFound/Davida -> data/LostFound/Davida
pull: data/LostFound/Ceres -> data/LostFound/Ceres
1463 files pulled. 0 files skipped.
2050 KB/s (521045345 bytes in 248.121s)

Figura 32 Extrao de dados via adb pull como root


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

No caso de um dispositivo Android com root mas que mantem a ROM do


fabricante, o analista receber a mensagem adbd cannot run as root in
production builds. Neste caso preciso seguir os seguintes passos para
obter os dados de diretrios protegidos:
1) Obter uma shell pelo comando abd shell.
2) Obter acesso de root com o comando su.

66

3) Mudar a permisso de acesso do diretrio e subdiretrios visados


recursivamente com o comando chmod R 777 <diretrio raiz>.
4) Sair do modo adb shell e executar o comando adb pull [origem]
[destino].
4.5.2 Extrao Via Hardware
Tcnicas de extrao de dados via hardware sempre obtm mais informaes
do dispositivo, conseguem passar por eventuais bloqueios de software e
recuperar informaes j removidas. No sistema YAFFS2 do Android, por
exemplo, quando dados so atualizados as verses anteriores no so
imediatamente

apagadas,

apenas

no

so

listadas.

Remov-las

definitivamente tarefa do coletor de lixo, ento, enquanto este no executar,


h dados apagados que podem ser recuperados. Considerando o alto custo
dos equipamentos para realizar uma extrao fsica dos dados e que este
mtodo geralmente no a primeira escolha do analistas forenses, este
assunto no parte desta pesquisa (Android Forensics, 2011).
4.6 ANLISE DAS INFORMAES OBTIDAS
Aps extrair os dados do dispositivo vem a parte de anlise j que informao
sem contexto no prova nada. No captulo 2, sobre o Android, foram exibidos
alguns mecanismos para visualizao dos logs do sistema e sua anlise. Neste
captulo so mostradas mais algumas tcnicas de anlise (no todas). Ao
contrrio do processo de extrao de dados, vrias tcnicas tradicionais de
anlise podem ser aplicadas aos dispositivos com Android (Android Forensics,
2011).
4.6.1 Ferramentas e Tcnicas de Anlise de Dados
Time Line
Saber quando determinado evento ocorreu muito importante numa
investigao, porm criar uma linha do tempo a partir das informaes
extradas manualmente um trabalho cansativo. Existem vrios softwares que
podem realizar esta tarefa, esta sesso se concentra nos aplicativos

67

opensource para criao de time line como os do Sleuth Kit e log2timeline


(Android Forensics, 2011).
Sistemas de Arquivos
Alguns diretrios e arquivos que merecem maior ateno do examinador j
foram apresentados durante o captulo 2, o comando adb mount apresenta
mais alguns desses diretrios:
luffy@ubuntu:~$ adb shell mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/extobb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mmcblk0p5 /drm/widevine ext4
rw,nosuid,nodev,relatime,user_xattr,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p9 /data ext4
/dev/block/mmcblk0p10 /cache ext4
rw,nosuid,nodev,noatime,user_xattr,barrier=1,nomblk_io_submit,data=ordered 0 0
/sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0
/dev/block/vold/179:49 /mnt/sdcard vfat
rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_ut
ime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:49 /mnt/secure/asec vfat
rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_ut

Figura 33 Sada do comando mount


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

Algumas das principais parties foram listadas em negrito. A tabela 10 mostra


uma descrio dos dados de cada partio.
Tabela 10 Parties e sistemas de arquivos

Local de Montagem
/proc

Sistema de Arquivos
proc

/data/data

YAFFS2

/cache

YAFFS2

/app-cache

tmpfs

/mnt/sdcard

vfat

/mnt/emmc

vfat

/data/local

YAFFS2

/data/misc

YAFFS2

Fonte: (Android Forensics, 2011).

Relevncia
metadados e estatsticas
do sistema de arquivos
Contem os dados de
todas as aplicaes
Arquivos de cache do
sistema
Sistema de arquivos de
cache.
Sistema de arquivos do
carto removvel
Memria
interna
dedicada ao usurio
Permite leitura e escrita
para usurios no root
num shell adb
Dados de bluetooth,
dhcp, wi-fi, vpn e outros.

68

Mesmo que no existam ferramentas que lidem diretamente com o sistema de


arquivos YAFFS2, atravs do adb tools, as informaes da memria interna do
dispositivo podem ser copiadas para uma estao de trabalho com sistema de
arquivo suportado e, depois, analisadas diretamente (Android Forensics, 2011).
Strings
Um comando bastante til, do mundo Linux, o strings. Ele faz com que o
contedo de um arquivo seja apresentado, por padro ASCII, como strings. A
figura 34 mostra o comando strings utilizado sobre a base SQLite do dropbox:
luffy@ubuntu:~/data/data/com.dropbox.android$ strings databases/prefs.db
SQLite format 3
tableDropboxPersistentPrefsDropboxPersistentPrefs
CREATE TABLE DropboxPersistentPrefs (_id INTEGER PRIMARY KEY AUTOINCREMENT, pref_name
TEXT NOT NULL UNIQUE, pref_value TEXT)K
indexsqlite_autoindex_DropboxPersistentPrefs_1DropboxPersistentPrefs
Ytablesqlite_sequencesqlite_sequence
CREATE TABLE sqlite_sequence(name,seq)
tableDropboxAccountPrefsDropboxAccountPrefs
CREATE TABLE DropboxAccountPrefs (_id INTEGER PRIMARY KEY AUTOINCREMENT, pref_name
TEXT NOT NULL UNIQUE, pref_value TEXT)E
indexsqlite_autoindex_DropboxAccountPrefs_1DropboxAccountPrefs
ctableandroid_metadataandroid_metadata
CREATE TABLE android_metadata (locale TEXT)
fr_CA
37=NOTIFICATIONS_TO_M
NOTIFICATIONS_TO_MUTEB

Figura 34 Sada do comando strings sobre uma base SQLite


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

Como visto, esse comando ajuda a extrair informaes mesmo de arquivos


aparentemente ininteligveis em um editor de texto comum.
Editor Hexa
Em geral, uma cpia dos arquivos da memria interna do Android fornecer as
informaes necessrias para a investigao, porm, nos casos em que
necessrio

uma

anlise

mais

profunda

de

arquivos

apagados

ou

desconhecidos em parties YAFFS2, que as ferramentas de anlise no


suportam. Por essa razo saber utilizar um editor hexadecimal de
fundamental importncia.

69
ahoog@ubuntu:~$ hexeditor mmssms.db
File: mmssms.db ASCII Offset: 0x00000000 / 0x00077FFF
00000000 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33
00000010 04 00 01 01 00 40 20 20 00 00 24 4A 00 00 00
00000020 00 00 00 00 00 00 00 00 00 00 00 3C 00 00 00
00000030 00 00 00 00 00 00 00 18 00 00 00 01 00 00 00
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000060 00 00 00 00 05 00 00 00 17 03 8D 00 00 00 00
00000070 03 FB 03 F6 03 F1 03 EC 03 E7 03 E2 03 DD 03
00000080 03 D3 03 CE 03 C9 03 C4 03 BF 03 BA 03 B5 03
00000090 03 AB 03 A6 03 A1 03 9C 03 97 03 92 03 8D 00
000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 04 81
000000C0 03 07 17 15 15 01 81 7B 74 61 62 6C 65 61 64
000000D0 72 61 64 64 72 05 43 52 45 41 54 45 20 54 41

(%00)
00 SQLite format 3.
00 .....@ ..$J....
01 ...........<....
3C ...............<
00 ................
00 ................
45 ...............E
D8 ................
B0 ................
00 ................
00 ................
0C ................
64 .......{tableadd
42 raddr.CREATE TAB

Figura 35 Visualizao de uma base SQLite no hexeditor


Fonte: (Android Forensics, 2011).

Na figura 35, a sada do editor hexadecimal executado sobre uma base SQLite
de um App Android.
SQLite3
Uma vez que os APPs Android armazenam suas informaes em bases
SQLite, conveniente ter instalado a ferramenta sqlite3 no ubuntu.
ahoog@ubuntu:~$ sqlite3 mmssms.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
addr
incoming_msg
sms
android_metadata
incoming_msg_v2 sr_pending
attachments
part
threads
canonical_addresses
pdu
threads_list
cbch
pending_msgs
words
drm
qtext
words_content
htcmsgs
rate
words_segdir
htcthreads
raw words_
segments

Figura 36 Visualizao das tabelas de uma base SQLite


Fonte: (Android Forensics, 2011).

Na figura 36, a listagem das tabelas de uma base com a ferramenta sqlite3.
4.6.2 Anlise Forense das Parties SDCard e eMMC
Arquivos multimdia, fotos, dados de aplicativos, msicas, backup de arquivos
so todos exemplos de informaes recuperveis a partir do carto de
memria. E no apenas arquivos encontrveis mas tambm informaes
apagadas, cache de aplicaes apk baixados. Alm disso, o SDCard pode ser
montado como dispositivo de armazenamento externo a um PC e qualquer tipo
de arquivo pode ser transferido ele (Android Forensics, 2011).

70

Apps no SDCard
Com o objetivo de liberar espao na memria interna do dispositivo, possvel
mover um aplicativo para o SDCard (o app deve ter suporte para esta ao).
Como j dito, o diretrio dos aplicativos o /data/data, onde os dados do
usurio esto salvos. Como na imagem abaixo, desde que a aplicao suporte
esta operao, basta clicar sobre o boto Move to SD card para mover um
aplicativo para a partio do usurio.

Figura 37 Opo Mover para o carto de memria


Fonte: (Android Forensics, 2011).

Para o usurio de um dispositivo Android com pouca memria interna esta


opo bastante conveniente, mas do ponto de vista da anlise forense
existem algumas consideraes:
1. O arquivo .apk movido de /data/<app-name> para partio
criptografada /mnt/secure/asec/ acessvel apenas pelo root.
2. Uma nova partio montada (no modo somente leitura) e o aplicativo
da /mnt/secure/asec decriptografado

e acessvel ao sistema em

/mnt/asec/<app-name>, pois o sistema precisa ter acesso ao apk


decriptografado para execut-lo.

71

3. O diretrio de dados do usurio referente ao aplicativo permanece sendo


o /data/data/<app-name>
4. Se o SDCard ficar inacessvel, o aplicativo no mais acessvel ao
sistema, razo pela qual os apps bsicos no podem ser movido para o
SDCard.
Como j mencionado, o .apk criptografado de modo a impedir que outros
apps no o corrompam ou faam alguma modificao maliciosa. O
desenvolvedor tambm no deve confiar somente nesta criptografia uma vez
que basta copia-lo da partio decriptografada /mnt/asec/<app-name>. Logo,
se o analista precisa do .apk para a investigao (de um malware, por
exemplo) ento ele deve copiar a partio /mnt/asec e seus subdiretrios
durante a fase de extrao de informaes. Esta cpia, deve ser feita com o
dispositivo ligado e ativo e no montada na estao de trabalho do analista.
Abaixo, a listagem da partio /mnt e as permisses relacionadas a cada
subdiretrio, incluindo, como exemplo, o aplicativo movido:
ahoog@ubuntu:~/sd-emmc$ adb shell ls -l /mnt
d---rwxr-x
system
sdcard_rw 1969-12-31 18:00
drwxr-xr-x
root
system 2011-02-15 05:17
drwx-----root
root 2011-02-14 07:59
d---rwxr-x
system
sdcard_rw 1969-12-31 18:00

emmc
asec
secure
sdcard

ahoog@ubuntu:~/sd-emmc$ adb shell ls -l /mnt/asec


dr-xr-xr-x system root 1969-12-31 18:00 com.rovio.angrybirds-1
ahoog@ubuntu:~/sd-emmc$ adb shell ls -l /mnt/asec/com.rovio.angrybirds-1
-r-xr-xr-x system root 17235931 2011-02-15 05:17 pkg.apk
# ls -l /mnt/secure/asec

Figura
38 Listagem
do diretrio19192832
/mnt
----rwxr-x
system sdcard_rw
2011-02-15 05:17 com.rovio.angrybirds-1.
asec (Android Forensics, 2011).
Fonte
# ls -l /data/data/com.rovio.angrybirds
app_106
app_106
2011-02-15 05:14 cache
app_106
app_106
2011-02-15 05:15 files
drwxr-xr-x system
system
2011-02-15 05:14 lib

drwxrwx--x
nonmedia
drwxrwx--x

Nonmedia um arquivo que instrui o scanner de media do Android a pular o


diretrio atual. Assim, se um diretrio no tem este arquivo, possvel que
contenha arquivos do tipo thumbnails de imagens j apagadas. O arquivo
nonmedia encontrado nas parties do sdcard e eMMC (Android Forensics,
2011).
Timeline
Para anlise do tipo linha do tempo a ferramenta utilizada ser a log2timeline.
Porm, aps copiar os dados do dispositivo e antes de iniciar a anlise,

72

convm usar uma criptografia de hash (md5sum ou sha256sum) tanto no


SDCard quanto na imagem, a fim de validar a ltima.
4.6.3 Anlise Forense no Sistema de Arquivos YAFFS2
Como j mencionado, o sistemas de arquivos YAFFS2 opensource,
desenvolvido especialmente para memrias do tipo flash NAND e inclui
algoritmos para correo de erros. Seu modelo arquitetural permite que dados
apagados e/ou atualizados sejam recuperados mas por ser um sistema de
arquivos recente, ainda no existem ferramentais (nem opensource nem,
comerciais) que o suportem. Sendo assim, a extrao e analise dos arquivos
desta partio feita via Android ADB Tools (Android Forensics, 2011).

73

CAPTULO 5.
ESTUDO DE CASO
5.1 INTRODUO
A fim de demonstrar o uso das tcnicas e ferramentas de extrao e anlise de
dados apresentadas ao longo deste trabalho, foi proposta a utilizao destas
em uma situao encontrada pelos analistas forenses.
Um smartphone LG Optimus Black (P970) foi propositalmente infectado com o
malware Zitmo Trojan para identificao e anlise do mesmo utilizando as
tcnicas e ferramentas apresentadas no captulo anterior. A anlise do
malware, aps sua extrao, foi realizada em desktop com a verso 13.04 do
Linux Ubuntu.
5.2 METODOLOGIA DE ANLISE PROPOSTA
A metodologia de apreenso e extrao de dados do dispositivo Android uma
verso adaptada e simplificada da tese de mestrado de Andr Morum (Mtodo
para Anlise Pericial em Smartphone com Sistema Operacional Android, 2011).
A esta verso, acrescenta-se a fase de anlise dos dados obtidos atravs das
tcnicas e ferramentas apresentadas durante este trabalho. O diagrama a
seguir exemplifica o mtodo proposto para este estudo de caso.
Na figura so apresentados dois cenrios: telefone com o sistema Android com
e sem root e os respectivos procedimentos a serem adotados pelo analista em
cada caso. A partir deste mtodo, possvel obter o mximo de informaes do
dispositivo mvel, de maneira a documentar, resguardar e processar a
evidncia da forma mais segura e menos intrusiva possvel (Aquisio de
Evidncias Digitais em Smartphones Android, 2011).
Para anlise dos fatos que identificam a existncia do malware foi utilizada
como base o artigo da Kindsight Security Labs cujo tema anlise do trojam
Zitmo para o AndroidOS.

74
Obter relatos do
usurio sobre
comportamento
suspeito

Telefone ligado?

no

no

possvel extrair
dados do
carto?

sim

Extrair dados do
carto de memria
e substituir o carto

Ligar telefone

no

possvel isolar
fisicamente a
rede?

sim

Isolar rede

Telefone
bloqueado?

no

Shell via ADB


com super
usurio?

Ativar o modo de
depurao

sim

sim

sim

Ligar telefone

Espelhar parties
do sistema

Extrair informaes
do sistema
acessveis (dmesg,
dumpsys, logcat)

Extrair dados do
carto de memria
e avaliar sua
substituio

Listar aplicativos
instalados

no

Obter senha com o


usurio
no
Aplicativo
suspeito
identificado?

Listar o app e
analisar o IP de
destino

sim

Informaes
pessoais
interceptadas?

Simular o envio de
informaes por
SMS e outras
conexes

Extrair o arquivo
APK e instalar numa
AVD (sandbox)

Verificar apps com


acesso a rede (3g,
wi-fi)

no

sim

Desempacotar com
o APKTools

Coverter o
classes.dex em jar
com a ferramenta
dex2jar

Descompilar o jar e
suas classes com JDGUI

Analisar o cdigo
fonte e arquivos
XML do APP

no

Figura 39 Diagrama de identificao e anlise de malware


Fonte: O Autor (Adaptado de Aquisio de Evidncias Digitais em Smatphones Android, 2011).

Malware
encontrado?

sim

Concluir

75

5.2.1 O Malware Zitmo


O trojan Zitmo a verso Android do malware Zeus que trabalha em conjunto
com o Zeus Banking Trojam para roubar informaes da conta bancria do
usurio. Com o advento dos malwares para desktops, as instituies
financeiras passaram a enviar um nmero de autorizao para transaes
bancria (TAN) para o celular do usurio, numa tentativa de adicionar mais um
etapa de segurana, o Zitmo foi criado para anular essa etapa (Malware
Analysis Report, 2011).
Por ser um trojan, Zitmo pode ser parte de qualquer outro aplicativo. A infeco
comea com um ataque de phishing que pede ao usurio para fazer o
download de um aplicativo para PC que por sua vez direciona o usurio para o
download do app Android Trustter Rapport, infectado com o trojan. A vitima
acreditando se tratar de uma aplicao de segurana acaba com o dispositivo
infectado (Malware Analisis Report, 2011).
5.2.2 Identificao do Malware
Seguindo o diagrama para anlise da existncia de malware, o primeiro passo
obter o relato do usurio do dispositivo Android suspeito de infeco pelo
malware. No caso, existe a suspeita de que as mensagens SMS recebidas pelo
dispositivo Android esto sendo enviadas para um servidor remoto. Uma
anlise dos ltimos aplicativos instalados leva a um provvel candidato: o app
de segurana Trustter Rapport. A fim de reproduzir o mesmo cenrio do
usurio, o APP foi baixado usando a mesma mensagem de phishing enviada
ao usurio e instalado em uma AVD (Malware Analisis Report, 2011).

76

Figura 40 Instalao do APP Trusteer Rapport


Fonte (O Autor, utilizando o AVD).

Como pode ser visto na figura 40, uma das permisses requisitadas pelo
aplicativo o acesso as mensagens SMS. Comparando os processos em
execuo depois da instalao notado o novo processo em execuo:
USER
root
app_9
app_120
app_25
app_0
app_1
app_1
app_37

PID
PPID VSIZE RSS
1
0
816
464
2473 10636 288576 29148
3634 10636 326220 71196
8426 10636 311072 51588
9134 10636 312908 38748
9186 10636 318672 37576
9198 10636 309268 33436
9315 10636 293616 31792

WCHAN
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff

PC
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000

S
S
S
S
S
S
S
S

NAME
/init
com.android.mms
com.lge.launcher2
com.nullsoft.winamp
com.whatsapp
com.google.process.location
com.google.android.gms
com.systemsecurity6.gms

Figura 41 Visualizao dos processos em execuo


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

Com a anlise dos logs e com os relatos de comportamento suspeito informado


pelo usurio, possvel traar a estratgia de anlise para este app. Como a
extrao do arquivo apk do aplicativo suspeito e sua instalao numa Android
Virtual Device (AVD), criada uma sandbox para a analise isolado do app.

77

Como j mencionado neste trabalho, o arquivo .apk dos aplicativos instalados


no Android fica no diretrio /data/app ( necessrio privilgio de root para
acessar), assim, se j foi feito root no dispositivo basta copiar o apk do
aplicativo suspeito para anlise posterior em um desktop Ubuntu.
luffy@ubuntu:~$ adb pull /data/app/ Zitmo_tr_ECBBCE17053D6EAF9BF9CB7C71D0AF8D.apk

Figura 42 Extrao do arquivo apk do app suspeito


Fonte: O Autor (utilizando o Android ADB Tools para Linux Ubuntu).

Antes da instalao do app na AVD, foi configurado o software Wireshark para


monitorar o trfego de rede do emulador. Como apenas uma aplicao com
acesso ao servio de mensagens continua em execuo, caso haja o envio de
uma requisio pelo dispositivo Android a um host desconhecido, ela ser uma
forte candidata a ser analisada.

Figura 43 Analise do trfego de rede do AVD pelo software Wireshark


Fonte (Malware Analisis Report, 2011).

Pela figura 43, aps o envio de uma mensagem SMS ao AVD, atravs de uma
conexo telnet, houve o envio de uma requisio a um servidor desconhecido,
portanto, o aplicativo suspeito e deve ser analisado.
5.2.3 Engenharia Reversa e Anlise do Arquivo APK
luffy@ubuntu:~/Downloads/Zitmo_tr_ECBBCE17053D6EAF9BF9CB7C71D0AF8D$ ll
total 56
drwxrwxr-x 4 luffy luffy 4096 Nov 3 20:07 ./
drwxr-xr-x 6 luffy luffy 4096 Nov 3 20:08 ../
-rw-rw-r-- 1 luffy luffy 2736 Mai 29 2011 AndroidManifest.xml
-rw-rw-r-- 1 luffy luffy 7660 Mai 29 2011 classes.dex
drwx------ 2 luffy luffy 4096 Nov 3 20:07 META-INF/
drwx------ 6 luffy luffy 4096 Nov 3 20:07 res/
-rw-rw-r-- 1 luffy luffy 1800 Mai 29 2011 resources.arsc

Figura 44 Visualizao do contedo do apk do app Zitmo


Fonte: O Autor.

78

O arquivo APK um zip, de modo que aps ser descompactado possvel ver
o seu contedo na figura 44:

Pasta META-INF contm informaes para verificar a segurana e


validade da aplicao apk.

Pasta res recursos da aplicao como imagens, arquivos de layout,


sons, etc.

Arquivo AndroidManifest.xml contm informaes como as permisses


requeridas pela aplicao, nome do pacote, verso, etc.

Arquivo resources.arsc arquivo binrio obtido aps a compilao.

Arquivo classes.dex contm todas as classes Java da aplicao


compiladas para o conjunto de bytecodes interpretados pela Dalvik VM.

No caso dos arquivos XML, no possvel ver o seu contedo apenas


descompactando

APK,

pois

eles

foram

criptografados

durante

empacotamento. Nesse caso utilizada a ferramenta APKTOOLS para o


desempacotamento do app. A execuo e sada do uso da ferramenta seguem
na figura 45:
luffy@ubuntu:~/Downloads$ apktool d Zitmo_tr_ECBBCE17053D6EAF9BF9CB7C71D0AF8D.apk
zitmo
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/luffy/apktool/framework/1.apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying
assets and
Figura
45 Execuo
da libs...
ferramenta APKTools

Fonte: O Autor (utilizando o APKTools em Linux Ubuntu).

O resultado uma pasta com o mesmo nome do arquivo apk com a mesma
estrutura apresenta na descompactao. Agora possvel visualizar e analisar
os arquivos XML, mas para ver o cdigo propriamente dito do aplicativo,
preciso outra ferramenta, a dex2jar, para converter o arquivo classes.dex em
um jar, como na figura 46:

79
luffy@ubuntu:~/Downloads$ dex2jar-0.0.9.15/dex2jar.sh
Zitmo_tr_ECBBCE17053D6EAF9BF9CB7C71D0AF8D/classes.dex
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.15
dex2jar Zitmo_tr_ECBBCE17053D6EAF9BF9CB7C71D0AF8D/classes.dex ->
Zitmo_tr_ECBBCE17053D6EAF9BF9CB7C71D0AF8D/classes_dex2jar.jar
Done.

Figura 46 Execuo da ferramenta dex2jar


Fonte: O Autor (utilizando o dex2jar em Linux Ubuntu).

Aps a execuo da ferramenta criado o arquivo classes_dex2jar.jar no


mesmo diretrio do App descompactado e este, por sua vez, agora pode ter
seu cdigo fonte analisado atravs de uma ferramenta de descompilao de
cdigo Java, com o JD-GUI:

Figura 47 Visualizao do cdigo do Zitmo no JD-GUI


Fonte: O Autor (Utilizando o software JD-Gui).

Na figura 47 mostrado o cdigo fonte da classe MainService aps a


descompilao. Nela, dois trechos chamam a ateno: a inicializao da thread
da classe interna SMSBlockerThread, que tem a funo de interceptar
mensagens SMS recebidas e o trecho para extrao da mensagem nessa
classe. Como j mencionado, o objetivo do trojan Zitmo obter o cdigo TAN
das mensagem SMS enviadas pelas instituies financeiras a seus clientes
como um passo adicional de segurana a transao bancria. Em outro trecho

80

do cdigo fonte do APP a mensagem SMS empacotada como um objeto


JSON e enviado via requisio POST a um servidor remoto, cuja URL est na
classe ServerSession (Malware Analisis Report, 2011).
5.3 CONCLUSO
O malware analisado se destaca pela combinao de spyware (envio de
informaes do usurio para um servidor remoto) e falso aplicativo de
segurana. A identificao foi possvel graas aos relatos do usurio e da
natureza spyware do malware, assim, a verificao dos aplicativos em
execuo no Android, mais a listagem dos que possuem acesso ao servio de
SMS e um monitoramento da rede, permitiram constatar a existncia de um
malware suspeito, sua extrao e posterior anlise do cdigo para concluso
do caso.
Este estudo de caso mostrou como possvel no apenas extrair dados do
Android, mas tambm, com base no conhecimento do funcionamento do
sistema operacional, de quais so as informaes relevantes e onde elas
esto, possvel identificar at mesmo a presena de um spyware no sistema.
Com a transio cada vez mais acentuada do desktop para os dispositivos
mveis, fica claro que os sistemas embarcados nestes dispositivos sero o
principal alvo de ataques de espionagem e, to importante quanto a proteo
a sua identificao.

81

CAPTULO 6.

CONCLUSO

Neste trabalho foram apresentadas tcnicas e ferramentas opensource para a


extrao e anlise dos dados de dispositivos com o sistema operacional
Android. Pelo fato dos dispositivos mveis ainda no serem a principal fonte
dos crimes virtuais, a anlise forense neste meio ainda carece tanto de
tcnicas quanto de ferramentas para sua execuo. No entanto, mesmo com
estas dificuldades, foi possvel apresentar as principais ferramentas para a
anlise forense e suas aplicaes prticas.
A anlise forense quase sempre associada apenas a extrao de informaes
recebeu, durante o estudo de caso, um carcter investigativo durante a anlise
de infeco de um dispositivo Android por um spyware. Este no foi apenas um
caso escolhido aleatoriamente, com a quantidade de malwares criados para o
Android aumentando a cada dia, as ferramentas de proteo podem no ser
capazes de detectar todas as pragas e, nesses casos, uma anlise a fim de
detectar e isolar o equipamento infectado de grande importncia para a
segurana de todos.
Complementando o que foi publicado na tese de mestrado de Andr Motum de
Lima Simo, Proposta de Mtodo para Anlise Pericial em Smatphone com
Sistema Operacional Android, foi adicionada a fase de anlise das informaes
obtidas pelas tcnicas de forense digital. Foi modo de apresentar uma
utilizao diferente para o conhecimento adquirido sobre o sistema Android e
ao mesmo tempo no apenas repetir o que j foi feito em outro trabalho.
A maior dificuldade durante a pesquisa foi a total ausncia de uma ferramenta
(comercial ou opensource) para anlise de informaes em parties YAFFS2.
O princpio bsico da forense digital mantar os dados inalterados e, num
processo judicial o analista forense pode encontrar dificuldades em explicar
porque o estado de um dispositivo foi alterado e de que forma.
6.1 TRABALHOS FUTUROS
Outro ponto que chamou a ateno neste trabalho, baseado nas tcnicas de
anlise e extrao de dados apresentadas, a falta de uma ferramenta de
anlise com suporte ao sistema de arquivos YAFFS2 (Yet Another File

82

System), projetado especificamente para mdias de armazenamento do tipo


Flash

NAND

largamente

utilizado

em

dispositivos

Android.

desenvolvimento de uma ferramenta capaz de lidar com parties neste


formato facilitar muito o trabalho dos analistas forenses, alm de tornar a
anlise e extrao de dados menos sujeita a erros e mais segura.
O estudo de caso deste trabalho sugere tambm uma nova e mais detalhada
pesquisa focada no mtodo de anlise de malware. Provavelmente com a
participao de entidades que so referncia na rea de segurana contra
malwares.

83

REFERENCIAS
A Castilho, Carlos. Android Malware Past, Present, and Future. Mobile Security
Working

Group

McAfee.

Disponvel

em:

<

http://www.mcafee.com/us/resources/white-papers/wp-android-malware-pastpresent-future.pdf >. Acesso em: 26 de Outubro de 2013.


ACPO Good Pratice for Computer-Based Eletronic Evidence. 7Safe Information
Security.

Acesso

em

15

de

Outubro

de

2010.

Disponvel

em:

<

http://www.7safe.com/electronic_evidence/ACPO_guidelines_computer_eviden
ce.pdf>.
Adam J. Aviv, Katherine Gibson, Evan Mossop, Matt Blaze, and Jonathan M.
Smith. Smudge Attacks on Smartphone Touch Screens. 21 de Fevereiro de
2011.

Disponvel

em:

<

https://www.usenix.org/legacy/event/woot10/tech/full_papers/Aviv.pdf>.
Bornstein, D. Dalvik VM Internals. 2008 Google I/O Session 2008. Disponvel
em: <https://sites.google.com/site/io/dalvik-vm-internals>. Acesso em: 31 de
maro de 2013.
Business

Week,

Bloomberg.

2005.

Disponvel

em

<

http://www.businessweek.com/stories/2005-08-16/google-buys-android-for-itsmobile-arsenal>. Acesso em 27 de Maro de 2013.


Cannon, T. (n.d.). Android lock screen bypass.. Acessado em 15 de outubro de
2013. Disponvel em: < http://www.mcafee.com/us/resources/white-papers/wpandroid-malware-past-present-future.pdf >.
Desai, Dhawal. Malware Analisis Report. Kindsight Security Labs. Setembro de
2011.

Disponvel

em:

<https://www.kindsight.net/sites/default/files/Android-

Trojan-Zitmo-final.pdf>. Acesso em 26 de Outubro de 2013.


Distefano, Alessandro; Mea, Gianluigi; Pace, Francesco. Android anti-forensics
through a local paradigma. Digital Investigation. 2010.
Ehringer, D. The Dalvik Virtual Machine Architeture. David Ehringer, maro
2008.

Disponvel

em:

84

<http://davidehringer.com/software/android/The_Dalvik_Virtual_Machine.pdf>.
Acesso em 31 de maro de 2013.
Gadhavi, B. Analysis of the Emerging Android Market. The Faculty of the
Department of General Engineering, Sam Jose State University.
Gargenta, Marko. Learning Android. First Edition. Sebastopol, CA: OReilly
Media Inc, 2011.
Gartner, Inc. Gartner Says Smartphone Sales Grew 46.5 Percent in Second
Quarter of 2013 and Exceeded Feature Phone Sales for First Time. Disponvel
em: <http://www.gartner.com/newsroom/id/2573415>. Acessado em: 13 de
Outubro de 2013.
Google Inc. Android Fundamentals. Android Developers, 2013. Disponvel em:
<http://developer.android.com/guide/topics/connectivity/index.html>.

Acesso

em: 26 maro 2013.


Google Inc. Android Fundamentals. Android Developers, 2013. Disponvel em:
< http://developer.android.com/about/dashboards/index.html>. Acesso em: 26
maro 2013.
Hashimi, S.; Komatineni, S.; Maclean, D. Pro Android 2. 1 edio. Ed; [S.1.]:
Apress, 2010. ISBN 978-1-4302-2659-8.
Hoog, Andrew. Android Forensics. First Edition. Waltham, MA. Elsevier Inc,
2011.
Lessard, Jeff; Kessler, Gary. Android Forensics: Simplifying Cell Phone
Examinations. Edith Cowan University. 2010.
Milbourne, Grayson; Orozco, Armando. Android Malware Exposed. Agosto de
2012. Webroot. Disponvel em: <http://www.webroot.com/shared/pdf/AndroidMalware-Exposed.pdf>. Acesso em: 28 de Outubro de 2013.
Morum de Lima Simo, Andr. Proposta de Mtodo para Anlise Pericial em
Smatphone com Sistema Operacional Android. 2011. Tese de Mestrado.
Universidade de Braslia, Braslia.

85

Morum de L Simo, Andr; Scoli, Fbio Cas; Peotta de Melo, Laerte; Deus,
Flvio Elias de; Sousa Jnior, Rafael Timteo. Aquisio de Evidncias Digitais
em Smatphones Android. Universidade de Braslia, Braslia, pp 92-99, Outubro
de 2011.
SQLite

Documentation.

SQLite,

2013.

Disponvel

em:

<http://www.sqlite.org/docs.html>. Acesso em: 30 de abril de 2013.


W. Frank Ableson; Sen, Robi; King, Chris; Ortiz, C. Enrique . Android in Action.
Third Edition. Shelter Island, NY: Manning Publications Co, 2012