Segue  um trabalho que fiz na pós, disciplina de Forense Computacional, sobre atualidades, vulnerabilidades e forense em dispositivos movéis Android. É bem resumido, mas não deixa de ser uma leitura muito interessante para quem não conhece o assunto.

 

 

1. Introdução

Com o avanço da Tecnologia da Informação, surgiu nos últimos anos um novo tipo de aparelho, conhecidos como dispositivos movéis. Existe hoje uma grande variedade deles, entre tablets, smartphones, e até mesmo “gadgetsvestíveis”, como relógios e óculos inteligentes. É possível encontrar também uma grande variedade entre fabricantes, modelos e sistemas operacionais utilizados.

De acordo com a consultoria Gartner, em pesquisa feita em Agosto de 2013, o sistema Android domina a maioria deste mercado, que só tende a crescer. Sendo assim, neste trabalho veremos uma breve revisão sobre atualidades, vulnerabilidades e forense computacional neste sistema operacional.

 

2. Atualidades e Vulnerabilidades

Recentemente a Google lançou a versão 4.3 do Android, cuja principal característica são as melhorias de segurança. Essas melhorias chegam em resposta às inúmeras reclamações dos usuários e críticos sobre a onda de malwaresque tem surgido para o S.O. da Google, que se aproveitam de vulnerabilidades encontradas.

Apesar do grande número de pragas virtuais especializadas em infectar o Android, é ainda pequeno o número de aparelhos realmente atingidos, de acordo com a empresa de segurança Kaspersky Lab. Isso se deve principalmente à forma que a maioria usa para se propagar, que é através de aplicativos baixados de sites que não o Google Play, onde a Google faz um controle mais rígido. A grande maioria dos usuários usam somente a loja oficial para adquirir aplicativos.

Ainda de acordo com a Kaspersky, tem aumentado os trojans que se instalam a partir de SMS com links maliciosos, enganando os usuários que clicam sem verificar a veracidade da mensagem, e assim executando instruções pré-programadas. Porém, há uma tendência para aparecerem mais backdoors, software que possibilita ao crackercontrolar um dispositivo à distância.

Uma das novidades da nova versão do Android é a implantação do SELinux, que substitui o atual mecanismo de isolamento de aplicativos, feito através das permissões de arquivos e instâncias de máquinas virtuais separadas, algo que tem sido facilmente contornado. O SELinux já é usado a tempo em sistemas GNU/Linux, e tem o objetivo de isolar aplicativos de modo mais eficiente, de forma que os mesmos não consigam alterar nada no sistema operacional ou nos demais softwares. Assim, teoricamente, se um vírus se instalar, não vai conseguir fazer nada!

Outra mudança é na implementação de criptografia para guardar as senhas armazenadas. Com isso as senhas de pontos de internet sem fio e de serviços na nuvem que são armazenadas nos dispositivos não ficarão “à mostra” em caso de roubo do aparelho ou invasão do sistema.

 Para aqueles que dividem dispositivos moveis com várias pessoas, a Google tornou o Android realmente multiusuário, como é também o caso do Linux. Um usuário logado não poderá intervir na conta de outro usuário, incluindo nos aplicativos. Assim, se um vírus conseguir se instalar em uma conta, não infectará as demais.

 

3. Forense

Com a crescente popularização do Android, surgiu a necessidade de se efetuar perícias nos dispositivos rodando esse sistema operacionalEsses dispositivos possuem cada vez mais recursos de hardware, tornando possível utilizarem ferramentas de software mais completas, com recursos como navegação na internet, visualização, criação e edição de textos e imagens, GPS, entre outros, além de efetuarem ligações e trocarem mensagens de texto.

Esses fatos tornam o trabalho de um perito mais complexo, diante da variedade de fabricantes, arquiteturas e sistemas operacionais encontrados, além do grande número de informações que podem ser extraídas. Portando, cabe ao profissional previamente conhecer o sistema que será periciado.

 

3.1. Considerações Gerais

Como vantagem em relação aos computadores, os dispositivos móveis ainda possuem pouca capacidade de armazenamento, sendo fácil para o perito ter como recurso uma mídia capaz de guardar a cópia de todos os dados encontrados no dispositivo.

Contudo, tais aparelhos normalmente têm uma memória interna embutida no hardware e de difícil acesso, tornando impossível copiá-la sem interferir diretamente no software, correndo o risco de corromper informações e invalidar a legitimidade da perícia.

Outro agravante é a possibilidade, hoje oferecida pelo próprio sistema Android, de criptografar os dados e restringir o acesso ao sistema com senha ou biometria. Para tentar mitigar isso, o perito ou autoridade responsável pela apreensão pode interrogar o usuário do aparelho, a fim de obter senhas e outros dados relevantes para acesso, o que nem sempre é possível, principalmente devido ao direito constitucional de não obrigatoriedade de produzir provas contra si mesmo.

Além disso, existem aplicativos que com um comando através da internet, ou mesmo por mensagem de texto, apagam as informações contidas no dispositivo, tornando importante que o aparelho seja isolado de qualquer possibilidade de comunicação no ato da apreensão, preferencialmente sem desligá-lo, para preservar a memória RAM. Do contrário, basta um comparsa que não tenha sido preso agir para apagar as provas a serem extraídas. Esse procedimento de isolamento do smartphone pode ser feito colocando-o em “modo de voô” ou protegendo através de um recipiente especial.

Por fim, dependendo do objetivo da perícia, devem ser examinados todos os meios de armazenamento de dados do aparelho, como a memória interna, cartão de memória externa, cartão SIM, além de dados armazenados diretamente na “nuvem”.

 

3.2. Fundamentos Técnicos

O Android é um sistema operacional de código aberto, baseado no núcleo do GNU/Linux, voltado para dispositivos móveis e mantido pela OHA (Open Handset Alliance), um grupo formado por diversas empresas ligadas ao mercado de telefonia móvel e lideradas pela Google.

Apesar de ser baseado no GNU/Linux, o Android não pode ser considerado como uma distribuição do mesmo, já que o núcleo foi consideravelmente modificado, com a exclusão de funcionalidades não aplicáveis a dispositivos moveis e inclusão de outras, como por exemplo um mecanismo específico para gestão de energia.

O sistema possui basicamente cinco camadas de software:

Kernel Linux – fornece a interface com o hardware, incluindo gerenciamento de energia, gerenciamento de memória e drivers para comunicação USB, bluetooth, etc.

- Bibliotecas – Desenvolvidas em linguagem C++, dão suporte ao desenvolvimento de aplicativos, provendo recursos gráficos, de banco de dados e de criptografia, por exemplo.

- Ambiente de Execução – Executa e hospeda aplicações.

Framework de aplicações – Fornece serviços do sistema para a camada de aplicação, como gerenciamento de janelas e de recursos.

- Camada de aplicação – Onde ficam os aplicativos, sejam eles nativos do Android ou desenvolvidos por terceiros.

É importante destacar que o Android usa o SQLite como banco de dados padrão. O SQLite é um banco de dados relacional, leve e de código aberto.

As aplicações são desenvolvidas na linguagem Java e rodam através da Máquina Virtual Dalvik (DVM), que roda melhor em hardware de baixo desempenho quando comparada à Máquina Virtual Java (JVM) padrão. A DVM consegue gerenciar melhor o uso da memória, além de garantir que um dispositivo possa executar várias instâncias eficientemente, fazendo com que cada aplicativo no Android seja executado na sua própria instância. Os aplicativos executáveis que rodam nessa máquina virtual possuem a extensão .dex, que consiste em uma compilação dos .class do java. Existe também a extensão .apk (Android Package), que são os instaladores de aplicativos.

Para auxiliar os programadores no desenvolvimento de aplicativos, o Android disponibiliza o SDK, um conjunto de softwares com tudo que é necessário para desenvolvimento, teste e depuração.

Nas primeiras versões, o Android utilizava o sistema de arquivos YAFFS2, que é voltado para memórias flash, usadas nos dispositivos moveis. Contudo, mais tarde o sistema de arquivos utilizado passou a ser o EXT4, devido às suas funções de multitarefa. Alguns fabricantes, como a Samsung, costumam modificar o sistema de arquivos, e usar o RFS, por exemplo.

Como aspectos de segurança, o sistema utiliza um ID de usuário único para cada programa, a fim de restringir o acesso aos arquivos. Junto com isso, cada processo roda em uma instância independente de máquina virtual, isolando o código em execução das demais aplicações. Para trocar informações entre si, as aplicações dependem da intermediação do próprio sistema operacional, onde o usuário configura as permissões. Essas permissões ficam armazenadas no arquivo AndroidManifest.xml. Na última versão lançada, a 4.3, como já mencionado neste artigo, o Android passou a usar a tecnologia SELinux como mecanismo de segurança.

 

3.3. Aspectos Voltados a Forense

Ao examinar dispositivos Android, o perito forense deve ter em mente que os aplicativos podem armazenar informações de 5 formas diferentes: arquivos XML, armazenamento interno (onde por padrão, os arquivos só podem ser lidos pela aplicação que os criou), armazenamento externo (cartão SD, por exemplo), banco de dados SQLite, e na internet.

O armazenamento externo costuma ser o mais simples, já que pode ser feita cópia bit a bit, possibilitando encontrar arquivos já deletados e preservando a prova original.

Nos outros casos, é comum que o perito precise interagir com o aparelho. Nesse procedimento, deve priorizar o máximo possível a preservação dos dados originais. Um método comum é simplesmente manusear o dispositivo tirando fotos de todas as telas. Porém nem sempre é possível adquirir a informação necessária somente dessa maneira, necessitando um exame mais profundo.

Conforme já mencionado neste trabalho, o Google disponibiliza um SDK (Software Development Kid) com o objetivo de auxiliar os programadores no desenvolvimento de aplicativos. Contudo, o SDK pode também ser usado como uma poderosa ferramenta forense.

O SDK pode ser instalado tanto em Linux quanto Windows, possibilitando ao perito acessar o dispositivo móvel via cabo USB. Dentre os vários recursos disponibilizados pela ferramenta, destaca-se o ADB (Android Debug Bridge), uma aplicação cliente-servidor que pode ser usada para se conectar a um emulador ou a um dispositivo Android em modo de depuração. Ele permite cópia de arquivos e pastas, visualização de logs, instalação de aplicativos, além da execução de comandos específicos do Android ou nativos do Linux.

Deve-se destacar o fato de que, por padrão, ao acessar um dispositivo físico via ADB, o acesso é limitado. Para se ter acesso total ao dispositivo é necessário permissões de root. As técnicas para obtenção de acesso root no Android variam conforme fabricante, modelo do dispositivo e versão do sistema. Muitas dependem de softwares de terceiros, que não possuem validação, ou são invasivas, podendo comprometer a integridade dos dados armazenados no dispositivo.

Além do ADB, existem diversas ferramentas comerciais específicas para forense em dispositivos Android, e que facilitarão a perícia. Um exemplo é o AFLogical , que possui também uma versão de código aberto. Basta instalá-lo no dispositivo via ADB. Ele é instalado em um cartão de memória externo do dispositivo, sendo assim basta colocar um cartão vazio que o AFLogical causará o mínimo impacto nos dados da memória interna do aparelho.

Segue algumas partições importantes encontradas em um sistema de arquivos do Android, que o perito irá se deparar ao navegar com o ADB ou outra ferramenta de análise:

misc: configurações diversas de sistema, como por exemplo configurações de USB e outras de hardware;

- boot: usada para a inicialização do sistema;

recovery: usada como contingência em caso de problemas na partição boot;

system: onde fica o sistema operacional propriamente dito, incluindo o kernel, interfaces e aplicativos pré-instalados;

cache: armazena em cache informações como componentes de aplicação;

userdata: provavelmente o foco da maioria das análises forense, contêm dados do usuário, como contatos da agenda, mensagens, configurações customizáveis e aplicativos.

Concluindo, cabe aos profissionais estudar os meios disponíveis e utilizar aqueles que se adequarem mais ao objetivo da perícia e ao estado do aparelho analisado. Para dificultar, o próprio Android tem uma tendência a implementar melhores mecanismos de segurança, tornando necessário o perito encontrar novas formas de realizar seu trabalho. Um desses novos mecanismos é o SELinux, que está substituindo o sistema de isolamento de aplicativos descrito acima a partir do Android 4.3.

 

4. Referências

http://www.tecmundo.com.br/android/42437-android-4-3-vai-chegar-blindado-com-novos-sistemas-de-seguranca.htm

http://computerworld.uol.com.br/seguranca/2013/08/19/riscos-de-seguranca-do-android-sao-equivalentes-ao-windows/

http://www.gartner.com/newsroom/id/2573415

 

http://www.securelist.com/en/analysis/204792299/IT_Threat_Evolution_Q2_2013